[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Корректный вывод ошибки
m4a1fox
<?php
include ("admin/blocks/db.php");
if (!empty($_POST['ok']))
{
if (!empty($_POST['name'])) $name = $_POST['name'];
if (!empty($_POST['id_mail'])) $id_mail = $_POST['id_mail'];
if (!empty($_POST['datetime'])) $datetime = $_POST['datetime'];
if (!empty($_POST['date'])) $date = $_POST['date'];
if (!empty($_POST['time'])) $time = $_POST['time'];
if (!empty($_POST['text'])) $text = $_POST['text'];
}
?>

<?php

if(isset($name, $id_mail, $datetime, $date, $time, $text))
{
$name = trim($name);
$text = trim($text);

$name = htmlspecialchars($name);
$text = htmlspecialchars($text);

$result = mysql_query("INSERT INTO `comment` SET
`name` = '"
.mysql_real_escape_string($name)."',
`id_mail` = '"
.(int)$id_mail."',
`datetime` = '"
.mysql_real_escape_string($datetime)."',
`date` = '"
.mysql_real_escape_string($date)."',
`time` = '"
.mysql_real_escape_string($time)."',
`text` = '"
.mysql_real_escape_string($text)."'
"
);

if (mysql_affected_rows() > 0)
echo '
<div align="center"><img align="center" src="img/ok.png"></div>
<div align="center" class="warning_font_big">Спасибо!
<br />
Ваш комментарий оставлен</div>
'
;
echo "
<html><head>
<meta http-equiv='Refresh' content='2; URL=page_view_you_mail.php?view=
$id_mail'>
</head></html>
"
;
}
else
{
echo '
<div align="center"><img align="center" src="img/error.png"></div>
<div align="center" class="warning_font_big?>ОШИБКА!!!</div>
<div align="center" class="warning_font" align="left">Ошибка.
Вы не заполнили одно из полей!
<br />
<a href="javascript:history.go(-1)">
<font color=red>Вернуться назад</font></a></div>
'
;
}
?>
Вопрос в следующем. Необходимо проверить кол-во символов в строке name и text. если использовать такую проверку
if(strlen($name) > 40) { 
echo '
<link rel="stylesheet" type="text/css" href="style.css" />
<div align="center"><img align="center" src="img/error.png"></div>
<div align="center" class="warning_font_big">ОШИБКА!!!</div>
<div align="center" class="warning_font" align="left">
Ваше письмо не доставлено.
Так как длина поля
<font color="red">
Имя должно быть больше чем
<font color=green><b>
40 символов</b></font> символов!
Сейчас Ваше имя <font color=green>
<b>'
.strlen($name).'</font></div>
<p align="center">
<a href="javascript:history.go(-1)">
<font color="red">Вернуться назад</font>
</a></div></p>
'
;
exit();
}
то ошибка при выводе блокирует правый блок. Т. е. сайт получается калекой). Если правильно понимаю это из-за exit();. Как это исправить? Подскажите?!



Спустя 23 минуты, 3 секунды (29.12.2010 - 16:48) m4a1fox написал(а):
Invis1ble
Ну хоть вы подскажите?!

Спустя 12 минут, 27 секунд (29.12.2010 - 17:00) inpost написал(а):
Не используй exit. Ко мне в подпись и смотри, как там на практике реализована работа формы + обработчика (с выводом ошибок)

Спустя 14 минут, 17 секунд (29.12.2010 - 17:14) m4a1fox написал(а):
inpost
Спасибо. Буду искать!

Спустя 2 минуты, 29 секунд (29.12.2010 - 17:17) m4a1fox написал(а):
inpost
Не могу найти у вас в подписи((( Киньте ссылку пожалуйста.

Спустя 1 минута, 4 секунды (29.12.2010 - 17:18) m4a1fox написал(а):
inpost
Нашел.

Спустя 1 час, 34 минуты, 47 секунд (29.12.2010 - 18:53) m4a1fox написал(а):
inpost
Извините, но тогда если я заполняю поле email проверка не проходит. Вот код
if (!empty($_POST['email'])) $email = $_POST['email'];
if (!preg_match("/^(?:[a-z0-9]+(?:[-_]?[a-z0-9]+)?@[a-z0-9]+(?:\.?[a-z0-9]+)?\.[a-z]{2,5})$/i",$email))
$wrong_email['email'] = '<div align="center"><img align="center" src="img/error.png"></div>
<div align="center" class="warning_font_big">ОШИБКА!!!</div>
<div align="center" class="warning_font" align="left">Ваше письмо не доставлено. Так как вы не верно заполнили поле <font color="red"> email!</font>!
<br />
<a href="javascript:history.go(-1)"><font color=red>Вернуться назад</font></a></div>'
;
if(empty($email))
$error_email['email'] = '<div align="center"><img align="center" src="img/error.png"></div>
<div align="center" class="warning_font_big">ОШИБКА!!!</div>
<div align="center" class="warning_font" align="left">Ваше письмо не доставлено. Так как вы не заполнили поле <font color="red"> email</font>!
<br />
<a href="javascript:history.go(-1)"><font color=red>Вернуться назад</font></a></div>'
;
точнее проверка проходит, а скрипт дальше выполняется. Как тут быть?

Спустя 28 минут, 26 секунд (29.12.2010 - 19:21) inpost написал(а):
Тебя не понять. Покажи полностью участок кода.

Спустя 4 минуты, 11 секунд (29.12.2010 - 19:25) m4a1fox написал(а):
Вся страница
<?php
include './admin/blocks/db.php';
if (!empty($_POST['title'])) $title = $_POST['title'];
if(empty($title))
$error_title['title'] = '<div align="center"><img align="center" src="img/error.png"></div>
<div align="center" class="warning_font_big">ОШИБКА!!!</div>
<div align="center" class="warning_font" align="left">Ваше письмо не доставлено. Так как вы не заполнили поле <font color="red">
название</font>!
<br />
<a href="javascript:history.go(-1)"><font color=red>Вернуться назад</font></a></div>'
;
if (!empty($_POST['author'])) $author = $_POST['author'];
if(empty($author))
$error_author['author'] = '<div align="center"><img align="center" src="img/error.png"></div>
<div align="center" class="warning_font_big">ОШИБКА!!!</div>
<div align="center" class="warning_font" align="left">Ваше письмо не доставлено. Так как вы не заполнили поле <font color="red"> автор</font>!
<br />
<a href="javascript:history.go(-1)"><font color=red>Вернуться назад</font></a></div>'
;
if (!empty($_POST['email'])) $email = $_POST['email'];
if(empty($email))
$error_email['email'] = '<div align="center"><img align="center" src="img/error.png"></div>
<div align="center" class="warning_font_big">ОШИБКА!!!</div>
<div align="center" class="warning_font" align="left">Ваше письмо не доставлено. Так как вы не заполнили поле <font color="red"> email</font>!
<br />
<a href="javascript:history.go(-1)"><font color=red>Вернуться назад</font></a></div>'
;
if (!empty($_POST['date'])) $date = $_POST['date'];
if (!empty($_POST['date_now'])) $date_now = $_POST['date_now'];
if (!empty($_POST['time'])) $time = $_POST['time'];
if (isset($_POST['meta_k'])) $meta_k = $_POST['meta_k'];
if (!empty($_POST['text'])) $text = $_POST['text'];
if(empty($text))
$error_text['text'] = '
<div align="center"><img align="center" src="img/error.png"></div>
<div align="center" class="warning_font_big">ОШИБКА!!!</div>
<div align="center" class="warning_font" align="left">Ваше письмо не доставлено. Так как вы не заполнили поле <font color="red"> ваш текст</font>!
<br />
<a href="javascript:history.go(-1)"><font color=red>Вернуться назад</font></a></div>'
;
?>
<html>
<
head>
<
title>Добавить статью</title>
<
meta http-equiv="content-type" content="text/html; charset=windows-1251" />
</
head>
<
link href="style.css" rel="stylesheet" type="text/css">
<
body topMargin="0">
<
table border=0 width="900px" align="center" topMargin="0">

<?php
include './blocks/head.php';
?>
<tr>
<
td COLSPAN=3>
<?php
include_once './blocks/menu.php';
?>
</td>
</
tr>

<
tr height="900px">
<?php
include './blocks/lefttd.php';
?>
<td valign="top" style="padding-top: 20px;" width="500px">
<
div id="inputArea">
<?php
if (isset($title, $author, $email, $date_now, $date, $time, $text, $meta_k))
{
$result = mysql_query("INSERT INTO `you_mail` SET
`title` = '"
.mysql_real_escape_string($title)."',
`author` = '"
.mysql_real_escape_string($author)."',
`date` = '"
.mysql_real_escape_string($date)."',
`date_now` = '"
.mysql_real_escape_string($date_now)."',
`time` = '"
.mysql_real_escape_string($time)."',
`meta_k` = '"
.mysql_real_escape_string($meta_k)."',
`text` = '"
.mysql_real_escape_string($text)."'
"
);

if (mysql_affected_rows() > 0)
echo 'Спасибо! Ваша статья отправлена модератору!
После ее опубликования
Вы получите письмо на указанный вами e-mail. <a href=index.php>Главная</a>'
;
$address = "m4a1fox@mail.ru";
$subject = "Новый статья на сайте";

$result3 = mysql_query("SELECT * FROM `you_mail` WHERE date_now='$date_now'");
$myrow3 = mysql_fetch_array($result3);
$post_title = $myrow3["title"];
$message = "Название - ".$post_title."\nВремя: ".$time."\nДата: ".$date."\nДобавил(а): ".$author."";
mail($address, $subject, $message, "Content-type:text/plain; Charset=windows-1251\r\n");
}
?>
<?php
echo $error_title['title']; ?>
<?php
echo $error_author['author']; ?>
<?php
echo $error_email['email']; ?>
<?php
echo $wrong_email['email']; ?>
<?php
echo $error_text['text']; ?>
</div>
</
td>
<?php
include 'blocks/righttd.php';
?>
</tr>

<?php
include 'blocks/bottom.php';
?>
</table>
</
body>
</
html>

Спустя 2 минуты, 19 секунд (29.12.2010 - 19:28) m4a1fox написал(а):
Я посмотрел, как Вы рекомендуете. В общем понятно. Только как выполнить проверку на валидность кода? В принципе он проверку проходит вот по этому коду
if (!preg_match("/^(?:[a-z0-9]+(?:[-_]?[a-z0-9]+)?@[a-z0-9]+(?:\.?[a-z0-9]+)?\.[a-z]{2,5})$/i",trim($email)))
$wrong_email['email'] = '<div align="center"><img align="center" src="img/error.png"></div>
<div align="center" class="warning_font_big">ОШИБКА!!!</div>
<div align="center" class="warning_font" align="left">Ваше письмо не доставлено. Так как вы не верно заполнили поле <font color="red"> email!</font>!
<br />
<a href="javascript:history.go(-1)"><font color=red>Вернуться назад</font></a></div>'
;
только скрипт дальше продолжает работать. Ну так вроде бы и должно. Поле не пусто - тогда заносим.

Спустя 6 минут, 2 секунды (29.12.2010 - 19:34) inpost написал(а):
m4a1fox
Делаешь общий массив: error с ключами (имена причин проблем).
Если хоть одна проверка не прошла, перед нужным местом пишешь:
if(count($error) > 0) - то есть хотя бы одна ошибка была, и массив не пустой - тогда выводишь одни данные, в противном случае - другие.

Для занесение данных в БД - результат должен быть 0 counta

Спустя 2 минуты, 40 секунд (29.12.2010 - 19:36) m4a1fox написал(а):
Хорошо! Попробую. Спасибо!

Спустя 53 секунды (29.12.2010 - 19:37) m4a1fox написал(а):
А может где пример дадите посмотреть такого массива?

Спустя 4 минуты, 33 секунды (29.12.2010 - 19:42) inpost написал(а):
http://inpost.dp.ua/lessons/lessons.php?id=2

if(empty($fio))
$error['fio'] = 'Вы не ввели ФИО';
if(count($error) == 0)
{
mysql_query();

Спустя 3 минуты, 10 секунд (29.12.2010 - 19:45) m4a1fox написал(а):
inpost
Точно. Спасибо. Буду пробовать?!

Спустя 21 минута, 46 секунд (29.12.2010 - 20:07) m4a1fox написал(а):
А если у меня проверка на валидность будет вот такая
if (!preg_match("/^(?:[a-z0-9]+(?:[-_]?[a-z0-9]+)?@[a-z0-9]+(?:\.?[a-z0-9]+)?\.[a-z]{2,5})$/i",trim($email)))
$error['email'] = '<div align="center"><img align="center" src="img/error.png"></div>
<div align="center" class="warning_font_big">ОШИБКА!!!</div>
<div align="center" class="warning_font" align="left">Ваше письмо не доставлено.
Так как вы не верно заполнили поле <font color="red"> email!</font>!
<br />
<a href="javascript:history.go(-1)"><font color=red>Вернуться назад</font></a></div>'
;
проверка на пустоту тоже $error['email'] так же нельзя?

Спустя 1 минута, 56 секунд (29.12.2010 - 20:09) m4a1fox написал(а):
Вопрос снимается. Скрипт работает. Спасибо inpost.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.