Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема с отправкой письма
 
 автор: Рэшад   (16.04.2010 в 23:26)   письмо автору
 
 

ошибок не выводит но и в бд не вставляются поля, проверял везде 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>


пожалуйста прошу отвечайте по теме а не о чистоте кода

  Ответить  
 
 автор: neadekvat   (17.04.2010 в 01:16)   письмо автору
 
   для: Рэшад   (16.04.2010 в 23:26)
 

Как можно не сказать об оформлении и содержании кода, если.. Особенно 4 фигурные скобки в конце скрипта понравились - а главное - сразу понятно, к чему они относятся.

Вообще, я бы советовал если не выкинуть этот скрипт, то по крайней мере разделить на две логические части:
1. Вывод формы
2. Обработка формы

Данные следует обрабатывать перед подстановкой куда либо, тем более в бд и при отправке на почту; данные из формы в данном случаи следует отправлять методом POST; перед созданием переменной проверить существование соответствующего элемента в суперглобальном массиве; в самом начале скрипта написать error_reporting(E_ALL);

  Ответить  
 
 автор: Рэшад   (17.04.2010 в 11:19)   письмо автору
 
   для: neadekvat   (17.04.2010 в 01:16)
 

>пробовал разные способы оптравки и get и post
решение проблемы или хотя бы близкое к нему вы не написали:(

  Ответить  
 
 автор: neadekvat   (17.04.2010 в 12:00)   письмо автору
 
   для: Рэшад   (17.04.2010 в 11:19)
 

Прочитайте еще раз. Если вы не увидете моих советов, коих там 2/3 поста, то как же вам еще помочь? Написать за вас?

  Ответить  
 
 автор: Рэшад   (17.04.2010 в 12:58)   письмо автору
 
   для: neadekvat   (17.04.2010 в 12:00)
 

советы то какраз я увидел, и их обязательно учту, но советы не помогли в решение поставленного вопроса

  Ответить  
 
 автор: tvv123456   (17.04.2010 в 13:14)   письмо автору
 
   для: Рэшад   (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')"); 


Хотя почему вы ошибок не видите, не знаю как минимум должно вылезти слово "неудача"

Должно заработать, а что касаеться что код грязный это уже ваши проблемы

  Ответить  
 
 автор: neadekvat   (17.04.2010 в 13:19)   письмо автору
 
   для: tvv123456   (17.04.2010 в 13:14)
 

> а что касаеться что код грязный это уже ваши проблемы
Если не приучивать котенка к туалету - он всю жизнь будет срать где попало.
Думаю, можно не объяснять аналогию..

  Ответить  
 
 автор: Trianon   (17.04.2010 в 15:13)   письмо автору
 
   для: neadekvat   (17.04.2010 в 13:19)
 

Насчет котенка, я бы попросил.

  Ответить  
 
 автор: Trianon   (17.04.2010 в 13:26)   письмо автору
 
   для: tvv123456   (17.04.2010 в 13:14)
 

>а что касаеться что код грязный это уже ваши проблемы
Почему же?
Я вот тоже этот пост читаю. Так что это не только neadekvat'a проблемы.

  Ответить  
 
 автор: tvv123456   (17.04.2010 в 13:36)   письмо автору
 
   для: Trianon   (17.04.2010 в 13:26)
 

>Я вот тоже этот пост читаю. Так что это не только neadekvat'a проблемы.

Письмо было адресовано РАШИДУ :)))

  Ответить  
 
 автор: neadekvat   (17.04.2010 в 13:40)   письмо автору
 
   для: tvv123456   (17.04.2010 в 13:36)
 

Рэшаду? =)

  Ответить  
 
 автор: tvv123456   (17.04.2010 в 13:44)   письмо автору
 
   для: neadekvat   (17.04.2010 в 13:40)
 

>Рэшаду? =)

А ну да сорри, надеюсь он не обидеться за то что в 2-х буквах случайно ошибся:)

  Ответить  
 
 автор: tvv123456   (17.04.2010 в 13:35)   письмо автору
 
   для: Рэшад   (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 :))))))))))))))))))))))

  Ответить  
 
 автор: Рэшад   (17.04.2010 в 14:16)   письмо автору
 
   для: tvv123456   (17.04.2010 в 13:35)
 

чисто для себя

  Ответить  
 
 автор: Trianon   (17.04.2010 в 13:00)   письмо автору
 
   для: Рэшад   (17.04.2010 в 11:19)
 

И не напишет.
Вы выкинули грязный (даже чисто для прочтения) код.
Вам указали, что читать и понимать его трудно.
Какой помощи Вы ждете, если сами поспособствовать решению не хотите?

  Ответить  
 
 автор: tvv123456   (17.04.2010 в 14:11)   письмо автору
 
   для: Рэшад   (16.04.2010 в 23:26)
 

Кстати У вас кроме всего прочего нету атрибута action для тега form, плюс вы поздравление (echo"удачно выслано"; ) выводите до того как начинаете обрабатывать ошибки.
Да и действительно слушайтесь что вам говорят: "Выкидывайте код и начинайте потихоньку писать заново, попутно читая умные книжки и задавая адекватные вопросы на этом форуме"

  Ответить  
 
 автор: Рэшад   (17.04.2010 в 14:19)   письмо автору
 
   для: tvv123456   (17.04.2010 в 14:11)
 

спс, попробуем а насчёт echo"удачно выслано"; это было сугубо сделано для проверки что дальше проверки на нажатие кнопки go не идёт скрипт, а умных книжек начитались о том как писать правильно код нигде что-то не вижу из-за этого оформляю под себя, и чем неадекватен вопрос что скрипт не выводит запрос? это неадекватный вопрос?

  Ответить  
 
 автор: Рэшад   (17.04.2010 в 23:52)   письмо автору
 
   для: Рэшад   (16.04.2010 в 23:26)
 

столько написали, столько нашли всего на свете, а проблема требовала самого лёгкого ответа...
name\"go\" забыл "=" поставить....

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования