Помогите с остановкой скрипта в Php

Тема в разделе "Другие", создана пользователем emeraudx, 11 июн 2010.

  1. emeraudx

    emeraudx Гость

    Репутация:
    0
    Помогите кто может. Проблема в следующем.

    Когда посетитель отправляет письмо с сайта, он заполняет форму, если он, допустим, заполнил не все поля, то обработчик (дан ниже) выводит ошибку "ОШИБКА". Но поскольку функция exit() завершает скрипт, то остальные тэги HTML, которые идут следом за скриптом, не обрабатываются. А это не есть хорошо . Можно ли сделать так, чтобы работу завершил только скрипт, не трогая оставшиеся тэги страницы?

    Код (PHP):
    <?
    include ("blocks/bd.php");

    if (isset($_POST['id'])) {$id = $_POST['id'];}
    if (isset($_POST['login'])) {$login = $_POST['login'];}
    if (isset($_POST['email'])) {$email = $_POST['email'];}
    if (isset($_POST['author'])) {$author = $_POST['author'];} if ($author == '') { unset($author);}
    if (isset($_POST['name'])) {$name = $_POST['name'];} if ($name == '') { unset($name);}
    if (isset($_POST['mail_submit'])) {$mail_submit = $_POST['mail_submit'];}


    if (empty($author) or empty($name) or empty($mail_submit))
    {
    exit ("ОШИБКА");
    }
    else
    {
    $name = stripslashes($name);

    $author = stripslashes($author);



    $name = htmlspecialchars($name);

    $author = htmlspecialchars($author);


    $subject = "текст";
    $to = "кому письмо";
    $from='откуда письмо';
    $message = "текст письма";
    $verify = mail($to,$subject,$message,'From:'.$from."\nContent-type:text/plain; Charset=windows-1251\r\n");
    }

    if ($verify == 'true')
    {
    exit ("Успешно");
    }
    else
    {
    echo ("Ошибка при отправлении");
    }
    ?>

    Если можете объясните поподробее и попроще, т.к. я тока начинаю осваивать php.
     
  2. kr0k

    kr0k Гость

    Репутация:
    0
    Код (PHP):
    <?
    include ("blocks/bd.php");

    /**
    * Проверка на корректность данных
    */

    function checkData(){
    // Всевозможные проверка добавляем суда
    if (isset($_POST['id'])) $id = $_POST['id'];
    if (isset($_POST['login'])) $login = $_POST['login'];
    if (isset($_POST['email'])) $email = $_POST['email'];
    if (isset($_POST['author'])) $author = $_POST['author'];
    if ($author == '') unset($author); // смысл этой строчки поясните
    if (isset($_POST['name'])) $name = $_POST['name'];
    if ($name == '') unset($name); // и этой тоже
    if (isset($_POST['mail_submit'])) $mail_submit = $_POST['mail_submit'];

    if ($author && $name && $mail_submit){
    $dataCorrect = true;
    } else {
    $dataCorrect = false;
    }
    return $dataCorrect;
    }

    /**
    * Пользовательсякая функция для отправления сообщений
    */

    function mailer(){
    // Всевозможные варианты формирования письма добавляем суда
    $name = stripslashes($name);
    $name = htmlspecialchars($name);
    $author = stripslashes($author);
    $author = htmlspecialchars($author);

    $subject = "текст";
    $to = "кому письмо";
    $from='откуда письмо';
    $message = "текст письма";

    $verify = mail($to,$subject,$message,'From:'.$from."\nContent-type:text/plain; Charset=windows-1251\r\n");
    return $verify;
    }

    /**
    * Точка входа(главная функция с которой все начинаеться)
    */

    function main(){
    if(checkData()){
    if(mailer())
    {
    echo "Успешно";
    }
    else
    {
    echo ("Ошибка при отправлении");
    }
    }else{
    echo 'ОШИБКА';
    }
    }

    main();
    ?>
    Работоспособность не проверял, надеюсь будет пару ошибочек что бы и Вы немножко поработали;)
    По коду общие рекомендации, всю логику старайтесь оформлять в функции. Что бы одна функция делала одно дело.
    Код конечно можно было настолько досканально не переписывать а просто заменить пару строк.

    PS: все вопросы касательно web-программирования задавайте в соответствующий раздел. Я каждый день буду стараться по часику уделять ответам на вопросы пользователей.
     
  3. emeraudx

    emeraudx Гость

    Репутация:
    0
    Если автор не вписал имя, а тупо поставил пробел, скрипт посчитает это как будто автор ввел свое имя, т.к. это символ. Это функция обрезает такие пробелы и не считает их за символы
     
  4. kr0k

    kr0k Гость

    Репутация:
    0
    Но тогда вероятней лучше бы было if ($author == ' ') unset($author);// пробел внутри кавычек.
    И важно не забыть про два и три пробела, в итоге у нас бы получилось что-то вроде. :)
    Код (PHP):
    if ($author == ' ') unset($author);
    if ($author == ' ') unset($author);
    if ($author == '  ') unset($author);
    Ну а я бы посоветовал использовать что-то вроде $var = trim($var);
     
Загрузка...
Похожие Темы - Помогите остановкой скрипта
  1. VPN
    Ответов:
    13
    Просмотров:
    195
  2. Sproot
    Ответов:
    0
    Просмотров:
    89
  3. Sa1nt
    Ответов:
    3
    Просмотров:
    141
  4. Amfion
    Ответов:
    9
    Просмотров:
    274
  5. number27
    Ответов:
    0
    Просмотров:
    119

Поделиться этой страницей