1. Акция на весь декабрь! Получай оплату х2 за уникальные статьи, объемом от 200 слов, если в заголовке темы и теле статьи присутствует слово Python
    Скрыть объявление

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

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

  1. emeraudx

    emeraudx Гость

    Помогите кто может. Проблема в следующем.

    Когда посетитель отправляет письмо с сайта, он заполняет форму, если он, допустим, заполнил не все поля, то обработчик (дан ниже) выводит ошибку "ОШИБКА". Но поскольку функция 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 Гость

    Код (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 Гость

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

    kr0k Гость

    Но тогда вероятней лучше бы было if ($author == ' ') unset($author);// пробел внутри кавычек.
    И важно не забыть про два и три пробела, в итоге у нас бы получилось что-то вроде. :)
    Код (PHP):
    if ($author == ' ') unset($author);
    if ($author == ' ') unset($author);
    if ($author == '  ') unset($author);
    Ну а я бы посоветовал использовать что-то вроде $var = trim($var);
     
Загрузка...
Похожие Темы - Помогите остановкой скрипта
  1. limbra
    Ответов:
    3
    Просмотров:
    42
  2. NylevoiChelovek
    Ответов:
    4
    Просмотров:
    93
  3. Ruska132
    Ответов:
    34
    Просмотров:
    250
  4. gURaBA_N
    Ответов:
    7
    Просмотров:
    141
  5. uxbmw3w
    Ответов:
    0
    Просмотров:
    58

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