|
|
|
| ошибок не выводит но и в бд не вставляются поля, проверял везде echo способом останавливается на эта когда проверяется нажатие кнопки с именем 'go' может гдето глупая ошибка а я её не вижу? пробовал разные способы оптравки и get и post
<?php session_start();
if($_SESSION['username'])
{
echo" <html>
<head><title> Личные сообщения, пользователя {$_SESSION['username']} </title></head>
<a href=pm.php?pismo>Написать письмо</a>";
$form=$_GET['pismo'];
if (isset($form))
{ echo" <form name=\"newpm\" method=\"GET\">
Кому:<input type=\"text\" name=\"login_p\"><br>
Тема:<input type=\"text\" name=\"title\"><br>
Текст сообщения:<br><textarea rows=\"10\" cols=\"45\" name=\"post\"></textarea><br>
<input type=\"submit\" name\"go\" value=\"Отослать письмо\"><br></form>";
$login_p=substr($_GET['login_p'],0,30);
$login_p = htmlspecialchars(stripslashes($login_p));
$title=substr($_GET['title'],0,30);
$title=htmlspecialchars(stripslashes($title));
$post=$_GET['post'];
$go=$_GET['go'];
if (isset($go))
{ echo"удачно выслано";
if(empty($login_p)) echo"Введите имя получатиля";
elseif(empty($title)) echo"Введите тему сообщения";
elseif(empty($post)) echo"Введите сообщение";
else
{
$link=mysql_connect('localhost','pma','');
mysql_select_db('pid',$link);
$result=mysql_query("SELECT id, login FROM `reg` WHERE login='$login_p'");
if(mysql_num_rows($result)>0)
{
$res=mysql_fetch_array($result);
$id_p=$res['id'];
$post=mysql_query("INSERT INTO `pm`('Id','id_o','id_p','title','post','date','flag') VALUES ('','{$_SESSION['id']}','$id_p','$title','$post',NOW(),'0')");
if($post) echo"отправлено удачно";
else{
echo"неудача";
}
}
else
{ echo"нет такого имени";}
}
}
}
}
?>
</html>
|
пожалуйста прошу отвечайте по теме а не о чистоте кода | |
|
|
|
|
|
|
|
для: Рэшад
(16.04.2010 в 23:26)
| | Как можно не сказать об оформлении и содержании кода, если.. Особенно 4 фигурные скобки в конце скрипта понравились - а главное - сразу понятно, к чему они относятся.
Вообще, я бы советовал если не выкинуть этот скрипт, то по крайней мере разделить на две логические части:
1. Вывод формы
2. Обработка формы
Данные следует обрабатывать перед подстановкой куда либо, тем более в бд и при отправке на почту; данные из формы в данном случаи следует отправлять методом POST; перед созданием переменной проверить существование соответствующего элемента в суперглобальном массиве; в самом начале скрипта написать error_reporting(E_ALL); | |
|
|
|
|
|
|
|
для: neadekvat
(17.04.2010 в 01:16)
| | >пробовал разные способы оптравки и get и post
решение проблемы или хотя бы близкое к нему вы не написали:( | |
|
|
|
|
|
|
|
для: Рэшад
(17.04.2010 в 11:19)
| | Прочитайте еще раз. Если вы не увидете моих советов, коих там 2/3 поста, то как же вам еще помочь? Написать за вас? | |
|
|
|
|
|
|
|
для: neadekvat
(17.04.2010 в 12:00)
| | советы то какраз я увидел, и их обязательно учту, но советы не помогли в решение поставленного вопроса | |
|
|
|
|
|
|
|
для: Рэшад
(17.04.2010 в 12:58)
| | Зачем у названия полей кавычки ставите?
Я про строчку:
<?
$post=mysql_query("INSERT INTO `pm` ('Id','id_o','id_p','title','post','date','flag') VALUES ('','{$_SESSION['id']}','$id_p','$title','$post',NOW(),'0')");
|
Хотя почему вы ошибок не видите, не знаю как минимум должно вылезти слово "неудача"
Должно заработать, а что касаеться что код грязный это уже ваши проблемы | |
|
|
|
|
|
|
|
для: tvv123456
(17.04.2010 в 13:14)
| | > а что касаеться что код грязный это уже ваши проблемы
Если не приучивать котенка к туалету - он всю жизнь будет срать где попало.
Думаю, можно не объяснять аналогию.. | |
|
|
|
|
|
|
|
для: neadekvat
(17.04.2010 в 13:19)
| | Насчет котенка, я бы попросил. | |
|
|
|
|
|
|
|
для: tvv123456
(17.04.2010 в 13:14)
| | >а что касаеться что код грязный это уже ваши проблемы
Почему же?
Я вот тоже этот пост читаю. Так что это не только neadekvat'a проблемы. | |
|
|
|
|
|
|
|
для: Trianon
(17.04.2010 в 13:26)
| | >Я вот тоже этот пост читаю. Так что это не только neadekvat'a проблемы.
Письмо было адресовано РАШИДУ :))) | |
|
|
|
|
|
|
|
для: tvv123456
(17.04.2010 в 13:36)
| | Рэшаду? =) | |
|
|
|
|
|
|
|
для: neadekvat
(17.04.2010 в 13:40)
| | >Рэшаду? =)
А ну да сорри, надеюсь он не обидеться за то что в 2-х буквах случайно ошибся:) | |
|
|
|
|
|
|
|
для: Рэшад
(17.04.2010 в 12:58)
| |
<?
function form($addres,$title,$text)
{
$result = '<form name="newpm" method="post"> //а куда вы action дели?
Кому:<input type="text" name="login_p" value="'.$addres.'" ><br>
Тема:<input type="text" name="title" value="'.$title.'"><br>
Текст сообщения:<br><textarea rows="10" cols="45" name="post"> '.$text.'</textarea><br>
<input type="submit" name="go" value="Отослать письмо"><br></form>';
return $result;
}
if (isset($_GET['pismo'])) // не вижу смысла, хотя ладно
{echo form('','','');}
if(isset($_POST['go']))
{
$error = 0;
$dis="Вы допустили следующие ошибки:<br>";
//обрабатываем данные что пришли с формы(убираем маг кавычки и пр.)
if(не верно заполнено поле login_p) {$error=1; $dis .= "-неверно заполнено поле<br>";}
//аналогично проверяем остальные поля
if($error == 1)
{echo $dis;
echo form($_POST['login_p'],$_POST['title'],$_POST['post']);
//тут дополняем низ дизайна(у меня он в отдельном файле
exit;}
// делаем запись в базу примерно так:
mysql_query("") or die("НЕ прошел запрос к базе");
//главное не забыть позаботиться об защите от инъекции(там где это требуеться)
// выводим поздравления(хотя лучше редирект на страницу с поздравлениями)
} //if(isset($_POST['go']))
|
Писал сразу тут так что могут быть косяки
В итоге код выводит все ошибки которые допустил пользователь и плюс к этому не теряет данные пользователя.
И еще чисто интересно: вы этот код себе пишите или кому-то за n-ое количество рублей, если второе, то готов помочь за 3/4 от n :)))))))))))))))))))))) | |
|
|
|
|
|
|
|
для: tvv123456
(17.04.2010 в 13:35)
| | чисто для себя | |
|
|
|
|
|
|
|
для: Рэшад
(17.04.2010 в 11:19)
| | И не напишет.
Вы выкинули грязный (даже чисто для прочтения) код.
Вам указали, что читать и понимать его трудно.
Какой помощи Вы ждете, если сами поспособствовать решению не хотите? | |
|
|
|
|
|
|
|
для: Рэшад
(16.04.2010 в 23:26)
| | Кстати У вас кроме всего прочего нету атрибута action для тега form, плюс вы поздравление (echo"удачно выслано"; ) выводите до того как начинаете обрабатывать ошибки.
Да и действительно слушайтесь что вам говорят: "Выкидывайте код и начинайте потихоньку писать заново, попутно читая умные книжки и задавая адекватные вопросы на этом форуме" | |
|
|
|
|
|
|
|
для: tvv123456
(17.04.2010 в 14:11)
| | спс, попробуем а насчёт echo"удачно выслано"; это было сугубо сделано для проверки что дальше проверки на нажатие кнопки go не идёт скрипт, а умных книжек начитались о том как писать правильно код нигде что-то не вижу из-за этого оформляю под себя, и чем неадекватен вопрос что скрипт не выводит запрос? это неадекватный вопрос? | |
|
|
|
|
|
|
|
для: Рэшад
(16.04.2010 в 23:26)
| | столько написали, столько нашли всего на свете, а проблема требовала самого лёгкого ответа...
name\"go\" забыл "=" поставить.... | |
|
|
|