Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод ошибки без загрузки белой страницы 
:(
    Опции темы
emeraudx
Дата 11.6.2010, 01:05 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 26.5.2010

Репутация: нет
Всего: 0



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

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

Код


<? 
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. 

Это сообщение отредактировал(а) emeraudx - 11.6.2010, 02:26
PM MAIL   Вверх
patap
Дата 11.6.2010, 09:13 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



ну во-первых нужно на танке покататься

и если вы знаете причину (функция  exit()) и вам нужно чтобы скрипт выполнился до конца, то в чем дело? Не используем функцию  exit(). 
Вместо нее делаем к примеру переменную $error и заносим в нее сообщение об ошибке. А далее в нужном месте выводим это сообщение


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
bars80080
Дата 11.6.2010, 12:15 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



а можно ещё заняться таким банальным способом постижения знаний, как чтение книг. не кратких статей, а полноценных учебников. очень помогает разобраться в большинстве простых вопросов
PM MAIL WWW   Вверх
emeraudx
Дата 12.6.2010, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 26.5.2010

Репутация: нет
Всего: 0



Цитата(patap @ 11.6.2010,  09:13)
ну во-первых нужно на танке покататься

и если вы знаете причину (функция  exit()) и вам нужно чтобы скрипт выполнился до конца, то в чем дело? Не используем функцию  exit(). 
Вместо нее делаем к примеру переменную $error и заносим в нее сообщение об ошибке. А далее в нужном месте выводим это сообщение

Мне не нужно, чтобы скрипт выполнялся дальше, если есть ошибка. Если делать переменную error, то для вывода ошибки нужно пользоваться echo

Давайте еще раз обратимся к моему коду.

Если он проскакивает остановку скрипта еще со строки "ОШИБКА" (т.е. при использовании функции echo), то он идет дальше и натыкается на другой скрипт, который выводит ошибку "ОШИБКА ПРИ ОТПРАВЛЕНИИ", поскольку сообщение не отправлено администратору.

Короч логика. Сначала интерпретатор выводит ошибку №1 - ОШИБКА, работает дальше и натыкается на ошибку №2 - ОШИБКА ПРИ ОТПРАВЛЕНИИ.

Что у нас в итоге получается. В итоге он выводит на экран две ошибки - ошибку №1 (поскольку все строки не были заполнены, но скрипт продолжил работу) и ошибку №2 (поскольку из-за незаполненных строк письмо не отправилось), тока что это проверил. Так что здесь уместна только функция exit или die...
PM MAIL   Вверх
patap
Дата 12.6.2010, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



здесь уместно правильно воспользоваться if ... else и одна переменная, которая будет содержать нужное сообщение ("ОШИБКА", "Успешно" или "Ошибка при отправлении") и ни каких exit() не нужно.
вывод сообщения будет в одном месте

вот подумай как это все организоавть.  smile 

Это сообщение отредактировал(а) patap - 12.6.2010, 15:40


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0539 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.