Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Помогите освоить!!!
Форумы портала PHP.SU » PHP » Программирование на PHP » Помогите освоить!!!

Страниц (2): [1] 2 »
 

1. Hijacker - 07 Ноября, 2009 - 02:01:09 - перейти к сообщению
Добрый день, уважаемы коллеги прогеры-девелоперы! Вот вспомнил после изучения Си, что синтаксис PHP и С очень похожи и загорелся давней мечтой, подвыучить PHP), хотя бы для редактирования и подгонки скриптов под себя... Почитал уроки, но некоторых хитростей и тонкостей не понял, пожалуйста помогите разобраться! Из практических задач я поставил для себя - написать форму обратной связи для своего сайта....

1) Разница методов GET и POST в функционале ничем не отличается, как передачей гетом переменных адр. строкой?
2) Может ли браузер запустить посторонний скрипт не переходя на него? (я на страничке обратной связи, заполнив форму передаю имя, мыло и сообщение на посторонний скрипт - mailer.php, но браузер после этого показывает чистый лист, а в адр. строке ...mailer.php... как остаться на той странице?) Метод клонирования html-страници в скрипте (допустим mailer.php) путем echo я видел в одном уроке, но мне кажется это эстетически не правильно для языка програмирования.
3) Для теста я поставил VertrigoServ, по постам в инете, я понял что многие функции PHP в нем не работают (такие как mail() ), но почему же у меня елементарные скрипты не пашут? (listing1)
4) Существуют ли какие-то "якоря" в PHP? допустим после выполнения постороннего скрипта в которых может что-то записаться путем echo ? (например в браузере открыта страница, при нажатии на кнопку, в определенном месте документа появляется текст).
5) Что может быть не правильным в этом коде? (listing2)
6) Этот скрипт я скачал из одного из крупнейших сайтов по скриптам, меня удивила запись... на сервере криво отображалась форма, было видно куски кода, сразу выскакивали всевозможные сообщения, и в придачу письма не приходили (ну это уже бока Вертиго) Улыбка. Стоит ли его брать за основу и переделывать? (listing3).

Пожалуйста, помогите! (понимаю, что "многотекста" написал) Улыбка

listing1
CODE (text):
скопировать код в буфер обмена
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Документ без названия</title>
  6. </head>
  7. <body>
  8. <div style="color:#333333">
  9.   <?php
  10. $time=getdate();
  11. echo "$time[hours] : $time[minutes] : $time[seconds]";
  12. ?>
  13.   <?php
  14. $today = getdate();
  15. print_r($today);
  16. ?>
  17. </div>
  18. </body>
  19. </html>


listing2 (contact.html)
CODE (text):
скопировать код в буфер обмена
  1. FORM name="contact" method="post" action="mailer.php?side=send">
  2.  
  3. <P>Ваше Имя:<br>
  4. <INPUT type="text" name="Name" size=30>
  5. </p>
  6.  
  7. <P>Ваш e-mail:<br>
  8. <INPUT type="text" name="Email" size=30>
  9. </p>
  10.  
  11. <P>Сообщение:<br>
  12. <textarea name="Message" cols=30 rows=5></textarea>
  13. </p>
  14.  
  15. <INPUT type="submit" value="Отправить">
  16.  
  17. </FORM>


listing2 (mailer.php)
CODE (text):
скопировать код в буфер обмена
  1. <?
  2.   $ip = $REMOTE_ADDR;
  3.   $date = date("d.m.Y");
  4.  
  5.   $info = "Name:\t$Name\n";
  6.   $info .= "E-Mail:\t$Email\n";
  7.   $info .= "Message:\t$Message\n\n";
  8.  
  9.   $send_to = "nick@site.com";            
  10.   $subject = "Сообщение $date";          
  11.  
  12.   $headers = "From: Ip адрес: $ip: \n";
  13.   $headers .= "Reply-To: $email\n\n";
  14.  
  15.   $send = mail($send_to, $subject, $info, $headers);
  16. ?>


listing3
CODE (text):
скопировать код в буфер обмена
  1. <?
  2. print"
  3. <FORM method=\"POST\" action=\"send.php?trofimov=send\">
  4.  
  5. <P>Ваше Имя:<br>
  6. <INPUT type=\"text\" name=\"Name\" size=30>
  7. </p>
  8.  
  9. <P>Ваш e-mail:<br>
  10. <INPUT type=\"text\" name=\"Email\" size=30>
  11. </p>
  12.  
  13. <P>Сообщение:<br>
  14. <textarea name=\"Message\" cols=30 rows=5></textarea>
  15. </p>
  16.  
  17. <INPUT type=\"submit\" value=\"Отправить\">
  18.  
  19. </FORM>";
  20.  
  21. switch($trofimov) :
  22. default :
  23. print "<table width= cellpadding=0 cellspacing=0 border=0 align=center>";
  24.  
  25. break;
  26. case("send") :
  27.  
  28. if ($Email == "") {print "<script language=JavaScript>window.alert('Введите e-mail!');</script>"; exit;}
  29. if ($Message == "") {print "<script language=JavaScript>window.alert('Введите текст!');</script>"; exit;}
  30. if (!eregi("^([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)$", $Email) and $Email != "") {print "<script language=JavaScript>window.alert('Не правельный E-mail');</script>"; exit;}
  31. $er = 1;
  32.  
  33.   $ip = $REMOTE_ADDR;
  34.   $date = date("d.m.Y");
  35.  
  36.   $info = "Name:\t$Name\n";
  37.   $info .= "E-Mail:\t$Email\n";
  38.   $info .= "Message:\t$Message\n\n";
  39.  
  40.   $send_to = "YOUREMAIL@DOMEN.ru";            
  41.   $subject = "Сообщение $date";          
  42.  
  43.   $headers = "From: Ip адрес: $ip: \n";
  44.   $headers .= "Reply-To: $email\n\n";
  45.  
  46.   $send = mail($send_to, $subject, $info, $headers);
  47.   if($send == 1)
  48.   {
  49.  
  50.   print ("<script language=JavaScript>window.alert('Отправлено $date');</script>");
  51.  
  52.   }
  53.   else
  54.  
  55.   print ("<script language=JavaScript>window.alert('Ошибка');</script>");
  56.  
  57. break;
  58. endswitch;
  59. ?>
2. Ch_chov - 07 Ноября, 2009 - 06:38:26 - перейти к сообщению
Цитата:
Для теста я поставил VertrigoServ, по постам в инете, я понял что многие функции PHP в нем не работают (такие как mail() )

Vertrigo это просто сборка Apache + MySQl + PHP. У меня тоже такая на винде стоит. Всё что отключено, можно подключить через httpd.conf и php.ini.

Что бы работала mail() нужно, что бы был запущен mail сервер или какая нибудь отладочная заглушка. Например в денвере используется небольшой перловый скрипт, который «слушает» порт 25 и складывает исходящие письма в отдельную папку. Можно кстати его использовать и для vertrigo. У меня установлен Courier Mail Server
3. OverNik - 07 Ноября, 2009 - 07:33:10 - перейти к сообщению
А вот так что покажет?
PHP:
скопировать код в буфер обмена
  1.  
  2.    $ip = $REMOTE_ADDR;
  3.   $date = date("d.m.Y");
  4.  
  5.   $info = "Name:\t".$_POST['Name']."\n";
  6.   $info .= "E-Mail:\t".$_POST['Email']."\n";
  7.   $info .= "Message:\t".$_POST['Message']."\n\n";
  8.  
  9.   $send_to = "nick@site.com";            
  10.   $subject = "Сообщение ".$_POST['date']."";          
  11.  
  12.   $headers = "From: Ip адрес: $ip: \n";
  13.   $headers .= "Reply-To: ".$_POST['Email']."\n\n";
  14.  
  15.   $send = mail($send_to, $subject, $info, $headers);
  16.  
4. Hijacker - 07 Ноября, 2009 - 12:08:56 - перейти к сообщению
Ch_chov спасибо за совет, но у меня не выделеный ИП, так что сервер мыла врятли будет работать. Подскажите пожалуйста какой-то ресурс, где есть конфигурирование php.ini и httpd.conf...

OverNik, понял свою ошибку)))) я переделывал скрипт (listing3) и забыл поставить ПОСТы))) спасибо...

Мне вот оч. интересны вопросы 2 и 4 о_О.
5. Ch_chov - 07 Ноября, 2009 - 12:22:02 - перейти к сообщению
Выделеный IP тут не нужен. Поставь просто заглушку на отправку писем.

2) Подключай mailer.php к основному скрипту когда это необходимо.
PHP:
скопировать код в буфер обмена
  1. if(isset($_POST['mail')) include('mailer.php');


4) ajax
6. Hijacker - 07 Ноября, 2009 - 13:01:24 - перейти к сообщению
Ch_chov
2) тоесть лучше написать скрипт в самой страничке обратной связи?
Насчет скрипта, он проверяет на html-странице введенность переменной mail, и добавляет на страницу если она есть? так браузер не переходит на скрипт а остается на прежней страничке, а сам скрипт исполняется? или я не так понял?

4) уже качаю учебники...

3) почему у меня могут не работать те скрипты? (listing1) Не понял
7. Ch_chov - 07 Ноября, 2009 - 13:33:15 - перейти к сообщению
Цитата:
то есть лучше написать скрипт в самой страничке обратной связи

Можно по всякому сделать. Как тебе удобней будет так и делай.
8. Hijacker - 07 Ноября, 2009 - 13:46:22 - перейти к сообщению
Hijacker пишет:
тоесть лучше написать скрипт в самой страничке обратной связи?

если так написать, то браузер останется на странице? (listing3)
9. Ch_chov - 07 Ноября, 2009 - 13:51:58 - перейти к сообщению
При отправке формы браузер перейдет туда, куда ты ему укажешь в атрибуте action.
10. Hijacker - 08 Ноября, 2009 - 00:46:42 - перейти к сообщению
ну вот как остаться на странице после выполнения постороннего скрипта? Не понял
и как можна перейти "туда, куда ты ему укажешь в атрибуте action"?
11. EuGen - 08 Ноября, 2009 - 01:02:55 - перейти к сообщению
Если это Ваш скрипт - возможно, перенаправление это Ваш случай. Тогда почитайте про header()
А перейти со стороны клиента куда-то - можно с помощью javascript. Как например, document.location.href
Если я, конечно, верно уловил суть вопроса.
12. Hijacker - 08 Ноября, 2009 - 02:04:19 - перейти к сообщению
Нет, скрипт не я писал, но из всех, что я скачал он больше для меня подходит...
Проблема была в том, что на сервере криво отображалась форма, было видно куски кода, сразу выскакивали всевозможные сообщения... вот я и подумал, что проблема в целостности скрипта на странице, вот и сделал отдельный скрипт-файл mailer.php... но при отправке письма браузер переходит на скрипт, а не остается на страничке. Можна ли выполнить тот скрипт оставаясь на прежней странице (вот и собсно вопрос Улыбка ).

Еще походу дискуссии возник доп. вопрос: смотря на lising3, как указать екшеном в какой кусок скрипта пройти?
13. Hijacker - 12 Ноября, 2009 - 02:19:18 - перейти к сообщению
Уважаемые прогеры, есть ли функция перенаправления на другую страницу?
14. SAD - 12 Ноября, 2009 - 02:24:58 - перейти к сообщению
Hijacker пишет:
Уважаемые прогеры, есть ли функция перенаправления на другую страницу?


<meta http-equiv='refresh' content='2; url=page.php'>
где 2 время через которое переправит
15. valenok - 12 Ноября, 2009 - 09:18:20 - перейти к сообщению
Есть хорошее объяснение почему в php такой функции нет по адресу
http://phpfaq[dot]ru/debug

 

Powered by ExBB FM 1.0 RC1