|
|
|
|
<?
$error = "";
$action = $_POST['action'];
if(!empty($action))
{
$nik = trim($nik);
$msg = trim($msg);
if(empty($msg))
{
$action = "";
$error = $error."<LI>Вы не ввели сообщение\n";
}
if(empty($nik))
{
$action = "";
$error = $error."<LI>Вы не ввели имя\n";
}
if(!empty($email))
{
if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email))
{
$action = "";
$error = $error."<LI>Неверно введён email.&nbsр Введите e-mail
в виде <i>softtime@softtime.ru</i> \n";";
}
}
$nik = substr($HTTP_POST_VARS["nik"],0,32);
$nik = htmlspecialchars(stripslashes($nik)); // обрабатываем имя
$email = substr($HTTP_POST_VARS["email"],0,32);
$email = htmlspecialchars(stripslashes($email)); // обрабатываем e-mail
$url = substr($HTTP_POST_VARS["url"],0,36);
$url = htmlspecialchars(stripslashes($url)); // обрабатываем url-адрес
$msg = substr($HTTP_POST_VARS["msg"],0,1024);
$msg = htmlspecialchars(stripslashes($msg)); // обрабатываем сообщение
if (empty($error)) // если ошибок нет, обрабатываем сообщение
{
$msg = nl2br($msg);
$msg = str_replace("[u]","<u>",$msg);
$msg = str_replace("[U]","<u>",$msg);
$msg = str_replace("[i]","<i>",$msg);
$msg = str_replace("[I]","<i>",$msg);
$msg = str_replace("[b]","<B>",$msg);
$msg = str_replace("[B]","<B>",$msg);
$msg = str_replace("[sub]","<SUB>",$msg);
$msg = str_replace("[SUB]","<SUB>",$msg);
$msg = str_replace("[sup]","<SUP>",$msg);
$msg = str_replace("[SUP]","<SUP>",$msg);
$msg = str_replace("[/u]","</u>",$msg);
$msg = str_replace("[/U]","</u>",$msg);
$msg = str_replace("[/i]","</i>",$msg);
$msg = str_replace("[/I]","</i>",$msg);
$msg = str_replace("[/b]","</B>",$msg);
$msg = str_replace("[/B]","</B>",$msg);
$msg = str_replace("[/SUB]","</SUB>",$msg);
$msg = str_replace("[/sub]","</SUB>",$msg);
$msg = str_replace("[/SUP]","</SUP>",$msg);
$msg = str_replace("[/sup]","</SUP>",$msg);
$msg = eregi_replace("(.*)\\[url\\](.*)\\[/url\\](.*)","\\1<a
href=\\2>\\2</a>\\3",$msg);
$msg = str_replace("\n"," ",$msg);
$msg = str_replace("\r"," ",$msg);
echo "nik.$nik";
echo "email.$email";
echo "url.$url";
echo "msg.$msg";
}
>
|
Вначале ругается на 34 строчке! Если я убираю кавычки из квадратных скобочек, то находит ещё ошибки. А вообще, надо ставить кавычки в квадр. скобках или нет? | |
|
|
|
|
|
|
|
для: Oligarx
(24.04.2005 в 09:37)
| | Ошибка в строке
<?php
$error = $error."<LI>Неверно введён email.&nbsр Введите e-mail
в виде <i>softtime@softtime.ru</i> \n";";
?>
|
В конце лишняя ковычка и точка с запетой
надо так
<?php
$error = $error."<LI>Неверно введён email.&nbsр Введите e-mail
в виде <i>softtime@softtime.ru</i> \n";
?>
|
| |
|
|
|
|
|
|
|
для: Sin
(24.04.2005 в 09:57)
| | Всё исправил, теперь выдаёт слудующее
Notice: Undefined index: action in z:\home\localhost\www\proect\qwerty.php on line 4 | |
|
|
|
|
|
|
|
для: Oligarx
(24.04.2005 в 11:47)
| | Это пердупреждение что переменная action не определена. | |
|
|
|
|
|
|
|
для: Loki
(24.04.2005 в 13:15)
| | Чё-то я не понял, как понять не определена? Объясните пожалуйста. | |
|
|
|
|
|
|
|
для: Oligarx
(24.04.2005 в 11:47)
| | Это лишь замечание из-за высокой тревожности интерпретатора, которая выставлена по умолчанию. На хостингах обычно стоит меньший уровень, рекомендуется также выставить его меньшим при помощи функции
<?php
Error_Reporting(E_ALL & ~E_NOTICE);
?>
|
или глобально в конфигурационном файле php.ini, исправив директиву error_reporting
error_reporting = E_ALL & ~E_NOTICE
|
http://www.softtime.ru/info/articlephp.php?id_article=23 | |
|
|
|
|
|
|
|
для: cheops
(24.04.2005 в 13:41)
| | В общем вроде всё замечательно, но вот только теперь у меня текст в базу не добавляется! Если без проверки вводимых данных, то всё работает, а так нет!
Незнаю в чём дело!
<?
Error_Reporting(E_ALL & ~E_NOTICE);
$error = "";
$action = $_POST['action'];
if(!empty($action))
{
$nik = trim($nik);
$msg = trim($msg);
if(empty($msg))
{
$action = "";
$error = $error."<LI>Вы не ввели сообщение\n";
}
if(empty($nik))
{
$action = "";
$error = $error."<LI>Вы не ввели имя\n";
}
if(!empty($email))
{
if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email))
{
$action = "";
$error = $error."<LI>Неверно введён email. Введите e-mail
в виде <i>zlt-nnov@yandex.ru</i> \n";
}
}
$nik = substr($HTTP_POST_VARS["nik"],0,32);
$nik = htmlspecialchars(stripslashes($nik)); // обрабатываем имя
$email = substr($HTTP_POST_VARS["email"],0,32);
$email = htmlspecialchars(stripslashes($email)); // обрабатываем e-mail
$url = substr($HTTP_POST_VARS["url"],0,36);
$url = htmlspecialchars(stripslashes($url)); // обрабатываем url-адрес
$msg = substr($HTTP_POST_VARS["msg"],0,1024);
$msg = htmlspecialchars(stripslashes($msg)); // обрабатываем сообщение
if (empty($error)) // если ошибок нет, обрабатываем сообщение
{
$msg = nl2br($msg);
$msg = str_replace("[u]","<u>",$msg);
$msg = str_replace("[U]","<u>",$msg);
$msg = str_replace("","<i>",$msg);
$msg = str_replace("[I]","<i>",$msg);
$msg = str_replace("","<B>",$msg);
$msg = str_replace("[B]","<B>",$msg);
$msg = str_replace("","<SUB>",$msg);
$msg = str_replace("[SUB]","<SUB>",$msg);
$msg = str_replace("","<SUP>",$msg);
$msg = str_replace("[SUP]","<SUP>",$msg);
$msg = str_replace("[/u]","</u>",$msg);
$msg = str_replace("[/U]","</u>",$msg);
$msg = str_replace("","</i>",$msg);
$msg = str_replace("[/I]","</i>",$msg);
$msg = str_replace("","</B>",$msg);
$msg = str_replace("[/B]","</B>",$msg);
$msg = str_replace("","</SUB>",$msg);
$msg = str_replace("[/sub]","</SUB>",$msg);
$msg = str_replace("","</SUP>",$msg);
$msg = str_replace("[/sup]","</SUP>",$msg);
$msg = eregi_replace("(.*)\\[url\\](.*)\\[/url\\](.*)","\\1<a href=\\2>\\2</a>\\3",$msg);
$msg = str_replace("\n"," ",$msg);
$msg = str_replace("\r"," ",$msg);
print "<HTML><HEAD>\n";
print "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=qwerty.php'>\n";
print "</HEAD></HTML>\n";
}
}
if(empty($action))
{
?>
<HTML>
<HEAD>
<TITLE>Гостевая книга - добавление записи</TITLE>
</HEAD&tg;
<BODY>
<H3>
<? print "<center>"; ?>
<font color=#1E90FF>Добавление записи</font>
</H3>
<?
if (!empty($error))
/* если есть ошибки, выводим сообщение об ошибках */
{
print "<P><font color=green>Во время добавления записи произошли
следующие ошибки:</font></P>\n";
print "<UL>\n";
print $error;
print "</UL>\n";
} else {
//Если всё ОК, то записываем и выводи все сообщения
$dbname = 'guestbook';
$host = 'localhost';
$user = 'root';
$pass = '';
$tbname = 'gb';
$link = mysql_connect($host,$user,$pass);
$query="INSERT into gb values('0','$nik','$email','$msg')";
mysql_connect($host,$user,$pass);
if (!@mysql_select_db($dbname,$link) )
{
echo "<p>К сожалению, не доступна база данных</p>";
exit();
}
if (mysql_db_query($dbname,$query,$link))
$query = "SELECT * FROM $tbname";
$result = mysql_db_query ($dbname,$query,$link);
if(!$result) exit(mysql_error());
print ("<table border=1 width=\"75%\" cellspacing=2 cellspadding=2 align=center>\n");
print ("<tr align=center valign=top>\n");
print ("<td align=center valign=top>nik</td>\n");
print ("<td align=center valign=top>email</td>\n");
print ("<td align=center valign=top>msg</td>\n");
print ("</tr>\n");
while ($row=mysql_fetch_array ($result))
{
print ("<tr align=center valign=top>\n");
print ("<td align=center valign=top>$row[nik]</td>\n");
print ("<td align=center valign=top>$row[email]</td>\n");
print ("<td align=center valign=top>$row[msg]</td>");
print ("</tr>\n");
}
print ("</table>\n"); }
?>
<!-- пишем HTML-код формы добавления сообщений !-->
<center>
<table width=1 border=0>
<form action=qwerty.php method=post>
<input type=hidden name=action value=post>
<tr>
<td width=50%>Имя:<font color=red><sup>*</sup><font></td>
<td align=right>
<input type=text name=nik maxlength=32 value='<? echo $name; ?>'>
</td>
</tr>
<tr>
<td width=50%>E-Mail:</td>
<td align=right>
<input type=text name=email maxlength=32 value='<? echo $email; ?>'>
</td>
</tr>
<tr>
<td width=50%>URL:</td>
<td align=right>
<input type=text name=url maxlength=36 value='<? echo $url; ?>'>
</td>
</tr>
<tr>
<td colspan=2>Сообщение:<font color=red<sup>*</sup></font><br>
<textarea cols=50 rows=8 name=msg></textarea>
</td>
</tr>
<tr>
<td colspan=2><input type=submit value='Добавить'></td>
</tr>
</form>
<tr>
<td colspan=2><font color=red><sup>*</sup></font> - поля,
обязательные для заполнения
</td><td align=left>
</table>
</center>
</BODY>
</HTML>
<?
}
?>
|
| |
|
|
|
|
|
|
|
для: Oligarx
(24.04.2005 в 16:21)
| | Если не добавляется, значит где ошибка в запросе, либо совсем до кода добавления не доходит. Модифицируйте блок добавления в базу. Что выведет?
if (!mysql_db_query($dbname,$query,$link))
{
echo "Ошибка выполнения запроса: ".$query;
echo mysql_error();
}
|
Кстати, про функцию mysql_db_query в мануале говорится следующее:
Замечание: Функция устарела с выходом PHP 4.0.6. Не используйте её. Используйте комбинацию из mysql_select_db() м mysql_query().
| |
|
|
|
|
 3.1 Кб |
|
|
для: glsv (Дизайнер)
(24.04.2005 в 20:57)
| |
if (!mysql_db_query($dbname,$query,$link))
{
echo "Ошибка выполнения запроса: ".$query;
echo mysql_error();
}
|
Испробывал! Не ругается, значит всё нормально!
Но всё равно не работает!
Главное, что видно что что-то в базу добавляется и мне кажется что пустые поля (но почему???), и самое интересное (как я уже говорил, без проверки данных всё работает замечательно!!!), ну что ещё можете посоветовать?!
Лучше я всё прикреплю, а вы посмотрите?! | |
|
|
|
|
|
|
|
для: Oligarx
(24.04.2005 в 22:19)
| | Как я понимаю у Вас гостевая книга похожа на ту которая есть в downloads.
Ну так вот посмотрите вот эту.
http://softtime.ru/info/gbzc.php
Там что-то похожее на Вашу но всё работает. | |
|
|
|
|
|
|
|
для: Oligarx
(24.04.2005 в 16:21)
| | Помещать информацию в базу данных следует вот до этих строк
<?php
print "<HTML><HEAD>\n";
print "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=qwerty.php'>\n";
print "</HEAD></HTML>\n";
?>
|
так как это редирект на страницу qwerty.php - у вас скорее всего данные не добавляются, задо действительно добавляются пустые записи при каждой загрзки страницы, так как добавление в базу помещено вне обработчика и срабатывает при каждой загрузке, а вот при обработке данных скрипт до этого места просто не доходит. | |
|
|
|
|
|
|
|
для: cheops
(24.04.2005 в 22:53)
| | Спасибо всем огромное, всё замечательно, особенно cheops . У меня ещё вопросик :”Как сделать так, чтобы после добавления записи в базу, если пользователь нажимает обновить, то чтоб ещё раз не выполнялась запись?”. (надеюсь понятно объяснил :) | |
|
|
|
|
|
|
|
для: Oligarx
(25.04.2005 в 22:04)
| | Для этого предназначена проверка
<?php
if(!empty($action))
{
// Код добавления в базу данных
}
?>
|
который проверяет передано ли из формы скрыторе поле
<input type=hidden name=action value=post>
|
Чтобы POST-данные обнулились, после добавления их в базу данных осуществляется редирект
<?php
print "<HTML><HEAD>\n";
print "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=qwerty.php'>\n";
print "</HEAD></HTML>\n";
?>
|
Который и осуществляет сброс POST-данных. | |
|
|
|
|
|
|
|
для: cheops
(26.04.2005 в 12:34)
| |
<input type=hidden name=action value=post>
|
Я не очень понял, как использовать скрытое поле (если можно, объясните поподробней).
Да, и я применил то, что вы написали и всё работает нормально (но только в Exploer, а в Mozile к примеру при нажатии на "Обновить", всё равно добавляется запись, наверное потому что страница кешируется?! Так вот, как можно сделать чтобы и в Мазиле всё было тип-топ :),
<?php
print "<HTML><HEAD>\n";
print "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=qwerty.php'>\n";
print "</HEAD></HTML>\n";
?>
|
| |
|
|
|
|
|
|
|
для: Oligarx
(26.04.2005 в 15:44)
| | Скрытое поле говорит о том, что пользователь нажал кнопку в форме и если оно присутствует в суперглобальном массиве $_POST значит это событие произошло. Тогда включается в дело обработичик, размещённый на этой же странице
<?php
if(isset($_POST['action']))
{
// Код обработичка HTML-формы
}
?>
|
Если бы такой проверки не стояло, то код обработчика срабатывал бы каждый раз при загрузке страницы, не зависимо от того осуществляем мы перезагрузку страницы или нет (т.е. при первой бы загрузке добавлялась пустая запись). Можно обойтись без скрытых полей, когда HTML-форма и её обработчик разнесены по разным файлам (имя обработчика указывается в атрибует action HTML-формы).
У меня к сожалению нет под рукой Mozile :((( что-бы поэкспериметировать. | |
|
|
|
|