PDA

Просмотр полной версии : Проверка данных


PaWell
20.08.2003, 18:18
Доброе Вам время суток!!!

Делаю форму для добавлений данных в MySQL. Есть несколько полей TEXTAREA и много просто TEXT.
Как мне проверять/фильтровать данные, введённые пользователем в эту форму, чтоб обеспечить свою безопасность. Ну, чтоб зловредный пользователь не смог занести "плохие" данные в мускул.
Вот придумал такой алгоритм:

$email=$HTTP_POST_VARS["email"];
$email=trim($email);
$email=substr($email,0,50);
$email=htmlspecialchars(addslashes($email));

Может что-то ещё дописать???
Что посоветуете???

И ещё: при использовании алгоритма, описаного выше, нужно ли, при вынимании данных из базы, применять stripslashes ???

Заранее благодарю за помощь!!!

PaWell
21.08.2003, 00:35
Люди!!! Срочно ведь нужно!!! Помогите!!! :( :( :(

nagash
21.08.2003, 01:50
ты уже всё написал...
куда уж боле? =)
может быть проверить а существует ли вообще эта переменная? =)
empty();

PaWell
21.08.2003, 02:48
2 nagash:
:) Ну эт само сабой :cool:
это мы в первом класе проходили... :D :D :D

А что насчёт stripslashes??? Нужно ли применять при вынимании инфы из мускула???

PaWell
21.08.2003, 02:52
И вообще, можно ли использовать такую конструкцию:

$email=htmlspecialchars(addslashes(substr(trim($HTTP_POST_VARS["email"]),0,50)));

???

nagash
21.08.2003, 03:01
такую конструкцию можно...
по поводу стрипслешес...
достань инфу из базы и посмотри... нужно ли тебе или нет =)
или выключи мэджик палочки в пхп тогда ненужно будет... =)

PaWell
21.08.2003, 11:53
Спасиб :D :D :D :D :D
Вопросов больше не имею... покаместь ;)

fuge
21.08.2003, 12:00
if(empty($HTTP_POST_VARS["email"]) ||
!eregi("^[a-z0-9\._-]+@[a-z0-9\._-]+\.[a-z]{2,4}\$", $HTTP_POST_VARS["email"])){
echo "E-mail is not valid";
exit;
}
// дальше делай, что хош: мыло правильное

Этого, вроде достаточно :)

fuge
21.08.2003, 12:02
Вроде, можно еще как-то забабацать проверку на существование мыла...

PaWell
21.08.2003, 12:43
2 fuge: Как???

Armen Khanoyants
21.08.2003, 12:53
проверка MX, только для чего?
если ты делаешь регистрацию, просто посылай им на мыло сообщение с урл для подтверждения регистрации и все.
если не подтвердили удаляем из базы, вот и все.

fuge
21.08.2003, 12:54
Вот, отрыл....


<?
/*
By: Jon S. Stevens jon@clearink.com
Copyright 1998-1999 Jon S. Stevens, Clear Ink
This code has all the normal disclaimers.
It is free for any use, just keep the credits intact.
*/

function validateEmail ( $email )
{
global $SERVER_NAME;
$return = array ( false, "" );
list ( $user, $domain ) = split ( "@", $email, 2 );
$tld = $domain;
if ( checkdnsrr ( $tld, "MX" ) )
{
if ( getmxrr ( $tld, $mxhosts, $weight ) )
{
for ( $i = 0; $i < count ( $mxhosts ); $i++ )
{
$fp = fsockopen ( $mxhosts[$i], 25 );
if ( $fp )
{
$s = 0;
$c = 0;
$out = "";
set_socket_blocking ( $fp, false );
do
{
$out = fgets ( $fp, 2500 );
if ( ereg ( "^220", $out ) )
{
$s = 0;
$out = "";
$c++;
}
else if ( ( $c > 0 ) && ( $out == "" ) )
{ break; }
else
{ $s++; }
if ( $s == 9999 ) { break; }

} while ( $out == "" );
set_socket_blocking ( $fp, true );

fputs ( $fp, "HELO $SERVER_NAME\n" );
$output = fgets ( $fp, 2000 );
fputs ( $fp, "MAIL FROM: <info@" . $tld . ">\n" );
$output = fgets ( $fp, 2000 );
fputs ( $fp, "RCPT TO: <$email>\n" );
$output = fgets ( $fp, 2000 );
if ( ereg ( "^250", $output ) )
{
$return[0] = true;
}
else
{
$return[0] = false;
$return[1] = $output;
}
fputs ( $fp, "QUIT\n" );
fclose( $fp );

if ( $return[0] == true )
{ break; }
}
}
}
}
return $return;
}

?>

fuge
22.08.2003, 12:39
Мы тут старались... а он убежал и даже спасибо не сказал... :(
От тебя ничего бы не отвалилось :)

PaWell
22.08.2003, 15:15
я сказал спасибо (смотри месаги више)!!! :D :D :D
И от меня ни чего не отвалилось... :D