Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > проверка формы на пустоту


Автор: pipka 23.4.2005, 00:54
в общем через форму стандартную передаю имя мыло и коммент
скрипт получает:
Код

if($action=='comment'){

// проверка на наличие HTML тегов
    $usernamehtml = htmlspecialchars($username);
    $useremailhtml = htmlspecialchars($useremail);
    $commenthtml = htmlspecialchars($comment);
    if($useremailhtml!=$useremail || $usernamehtml!=$username || $commenthtml!=$comment){Header("Location: $HTTP_REFERER");exit;};

$zapros = mysql_query("select MAX(idcomment) AS idcomment FROM comments");
$otvet = mysql_fetch_object($zapros);
$idcomment = $otvet->idcomment+1;
mysql_query("INSERT INTO comments (id, obj, comments, email, avtor, idcomment) VALUES('$id','$obj','$comment','$useremail','$username','$idcomment')");
}
Header("Location: $HTTP_REFERER");


посоветуйте как лучше сделать проверку на пустые поля ? и предупредить об этом пользователя как ?
if ($username = 0)
echo "Не ввели имя";

верно ? посоветуйте плиз как лучше, чтобы не потерять посетителя... и чтобы он всё же оставил коммента не уходя, не очень хочу через ява скрипт при форме...

Автор: PARROT 23.4.2005, 01:20
Код

<?php
ob_start(); 

error_reporting(E_ALL); 

if($action=='comment')
{
    if(empty($username)){
        $error="Вы не указали имя!<br>";
    }
    if(empty($comment)){
        $error.="Вы не написали текст!<br>";
    }
    
    if(!$error){
        $zapros = mysql_query("select MAX(idcomment) AS idcomment FROM comments");
        $otvet = mysql_fetch_object($zapros);
        $idcomment = $otvet->idcomment+1;
        mysql_query("INSERT INTO comments (id, obj, comments, email, avtor, idcomment) VALUES('$id','$obj','$comment','$useremail','$username','$idcomment')");
        Header("Location: $HTTP_REFERER");
        ob_end_flush();
        exit;
    } else {
        echo "$error";
    }
    ob_end_flush();
}
?>

Должно работать, если только со скобками могут быть проблемы. Не проверяла.

Автор: Irokez 23.4.2005, 11:59
используйте функции для проверки данных:
empty()
strlen()
is_int()
is_null()
is_string()
is_*

Автор: Opik 23.4.2005, 13:38
Что бы избежать наполнениного поля проблемами - юзайте trim() - отрубает пробелы по краям.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)