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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите освоить!!!

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: ряд вопросов, которые интерисуют после просмотра уроков на php.su
Hijacker
Отправлено: 07 Ноября, 2009 - 02:01:09
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




Добрый день, уважаемы коллеги прогеры-девелоперы! Вот вспомнил после изучения Си, что синтаксис 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. ?>

(Отредактировано автором: 07 Ноября, 2009 - 02:04:23)

 
 Top
Ch_chov
Отправлено: 07 Ноября, 2009 - 06:38:26
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Цитата:
Для теста я поставил VertrigoServ, по постам в инете, я понял что многие функции PHP в нем не работают (такие как mail() )

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

Что бы работала mail() нужно, что бы был запущен mail сервер или какая нибудь отладочная заглушка. Например в денвере используется небольшой перловый скрипт, который «слушает» порт 25 и складывает исходящие письма в отдельную папку. Можно кстати его использовать и для vertrigo. У меня установлен Courier Mail Server
 
 Top
OverNik
Отправлено: 07 Ноября, 2009 - 07:33:10
Post Id



Частый гость


Покинул форум
Сообщений всего: 182
Дата рег-ции: Янв. 2008  


Помог: 0 раз(а)




А вот так что покажет?
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.  

(Отредактировано автором: 07 Ноября, 2009 - 07:34:01)

 
 Top
Hijacker
Отправлено: 07 Ноября, 2009 - 12:08:56
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




Ch_chov спасибо за совет, но у меня не выделеный ИП, так что сервер мыла врятли будет работать. Подскажите пожалуйста какой-то ресурс, где есть конфигурирование php.ini и httpd.conf...

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

Мне вот оч. интересны вопросы 2 и 4 о_О.
 
 Top
Ch_chov
Отправлено: 07 Ноября, 2009 - 12:22:02
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Выделеный IP тут не нужен. Поставь просто заглушку на отправку писем.

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


4) ajax
 
 Top
Hijacker
Отправлено: 07 Ноября, 2009 - 13:01:24
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




Ch_chov
2) тоесть лучше написать скрипт в самой страничке обратной связи?
Насчет скрипта, он проверяет на html-странице введенность переменной mail, и добавляет на страницу если она есть? так браузер не переходит на скрипт а остается на прежней страничке, а сам скрипт исполняется? или я не так понял?

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

3) почему у меня могут не работать те скрипты? (listing1) Не понял
 
 Top
Ch_chov
Отправлено: 07 Ноября, 2009 - 13:33:15
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Цитата:
то есть лучше написать скрипт в самой страничке обратной связи

Можно по всякому сделать. Как тебе удобней будет так и делай.
 
 Top
Hijacker
Отправлено: 07 Ноября, 2009 - 13:46:22
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




Hijacker пишет:
тоесть лучше написать скрипт в самой страничке обратной связи?

если так написать, то браузер останется на странице? (listing3)
 
 Top
Ch_chov
Отправлено: 07 Ноября, 2009 - 13:51:58
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




При отправке формы браузер перейдет туда, куда ты ему укажешь в атрибуте action.
 
 Top
Hijacker
Отправлено: 08 Ноября, 2009 - 00:46:42
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




ну вот как остаться на странице после выполнения постороннего скрипта? Не понял
и как можна перейти "туда, куда ты ему укажешь в атрибуте action"?
 
 Top
EuGen Администратор
Отправлено: 08 Ноября, 2009 - 01:02:55
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Если это Ваш скрипт - возможно, перенаправление это Ваш случай. Тогда почитайте про header()
А перейти со стороны клиента куда-то - можно с помощью javascript. Как например, document.location.href
Если я, конечно, верно уловил суть вопроса.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Hijacker
Отправлено: 08 Ноября, 2009 - 02:04:19
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




Нет, скрипт не я писал, но из всех, что я скачал он больше для меня подходит...
Проблема была в том, что на сервере криво отображалась форма, было видно куски кода, сразу выскакивали всевозможные сообщения... вот я и подумал, что проблема в целостности скрипта на странице, вот и сделал отдельный скрипт-файл mailer.php... но при отправке письма браузер переходит на скрипт, а не остается на страничке. Можна ли выполнить тот скрипт оставаясь на прежней странице (вот и собсно вопрос Улыбка ).

Еще походу дискуссии возник доп. вопрос: смотря на lising3, как указать екшеном в какой кусок скрипта пройти?
 
 Top
Hijacker
Отправлено: 12 Ноября, 2009 - 02:19:18
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




Уважаемые прогеры, есть ли функция перенаправления на другую страницу?
 
 Top
SAD
Отправлено: 12 Ноября, 2009 - 02:24:58
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




Hijacker пишет:
Уважаемые прогеры, есть ли функция перенаправления на другую страницу?


<meta http-equiv='refresh' content='2; url=page.php'>
где 2 время через которое переправит
 
 Top
valenok Модератор
Отправлено: 12 Ноября, 2009 - 09:18:20
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Есть хорошее объяснение почему в php такой функции нет по адресу
http://phpfaq[dot]ru/debug


-----
Truly yours, Sasha.
 
My status
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB