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

Форум PHP

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

 

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

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

тема: Не понятно зачем используется $_GET, если данные передаются через POST-метод
 
 автор: BiFF   (17.03.2007 в 17:51)   письмо автору
 
 

Есть такой код

 echo "<center>"
  ."<form name=\"form1\" method=\"post\" action=\"index.php\">"
   ."<b>Найти :</b>&nbsp;&nbsp;"
   
   ."<input type=\"text\" name=\"search\" value=\"$search\"><br>"

      ."<table border=\"0\">"
        
        
        ."<tr><td>"._REF_SEARCH_NAME."</td><td><input type=\"radio\" name=\"typesearch\" value=\"1\" checked></td></tr>"
            ."<tr><td>"._REF_SEARCH_DOLGNOST."</td><td><input type=\"radio\" name=\"typesearch\" value=\"2\"></td></tr>"
                ."<tr><td>"._REF_SEARCH_NUMER."</td><td><input type=\"radio\" name=\"typesearch\" value=\"3\"></td></tr>"
                ."<tr><td>"._REF_SEARCH_ADRESS."</td><td><input type=\"radio\" name=\"typesearch\" value=\"4\"></td></tr>"
                ."<tr><td>"._REF_SEARCH_KABINET."</td><td><input type=\"radio\" name=\"typesearch\" value=\"5\"></td></tr>"
      ."</table>"

  ."<input type=\"submit\" value=\""._REF_SEARCH."\">"
."</form></center>";

if (((isset($_POST['typesearch'])) AND (isset($_POST['search'])) 
AND (!eregi("UNION", $_POST['search']))) OR ((isset($_GET['typesearch'])) 
AND (isset($_GET['search'])) AND (!eregi("UNION", $_GET['search']))))
 {
   global $db, $prefix, $sitename, $bgcolor;

   $search = strip_tags(isset($_POST['search']) ? $_POST['search'] : $_GET['search']);

   $type = intval(isset($_POST['typesearch']) ? $_POST['typesearch'] : $_GET['typesearch']);

   switch ($type) {
          case "1" :
              $stype = "name LIKE '%$search%'";
          break;
          case "2" :
              $stype = "dolgnost LIKE '%$search%'";              
          break;
          case "3" :
              $stype = "nomer LIKE '%$search%'";
          break;
          case "4" :
              $stype = "adres LIKE '%$search%'";      
          break;
          case "5" :
              $stype = "kabinet LIKE '%$search%'";      
          break;
   }  
и т.д.

По нему есть несколько вопросов
1) Зачем вот это

OR ((isset($_GET['typesearch'])) AND (isset($_GET['search'])) AND 
если

<form name=\"form1\" method=\"post\" action=\"index.php?name=Ref_phone\">"

2) Зачем вот это
 $type = intval(isset($_POST['typesearch']) ? $_POST['typesearch'] : $_GET['typesearch']);

   switch ($type) {
          case "1" :
              $stype = "name LIKE '%$search%'";
          break;
если можно так

switch ($typesearch) {
          case 1 :
              $stype = "name LIKE '%$search%'";
          break;

   
 
 автор: cheops   (18.03.2007 в 01:29)   письмо автору
 
   для: BiFF   (17.03.2007 в 17:51)
 

В первом случае вероятно очепятка, так как GET_параметры не передаются через ссылку в атрибуте action тэга <form>. Во-втором случае использовать переменную вместо суперглобального массива не всегда возможно, особенно если отключена директива register_globals (В PHP 6 не будет даже возможности включить её). Лучше использовать суперглобальный массив $_REQUEST, который объединяет все остальные переменные
<?php
switch ($_REQUEST['typesearch']) { 
          case 

              
$stype "name LIKE '%$search%'"
          break;
?>

   
 
 автор: Trianon   (18.03.2007 в 01:29)   письмо автору
 
   для: BiFF   (17.03.2007 в 17:51)
 

1. Видимо, скрипт не только из формы вызывается, но и со ссылок.
2. Нет. Так писать нельзя. Программист должен представлять, откуда именно скрипт получает данные.

   
Rambler's Top100
вверх

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