За последние 24 часа нас посетили 17240 программистов и 1225 роботов. Сейчас ищут 1474 программиста ...

Проблемы с Header Location

Тема в разделе "Вопросы от блондинок", создана пользователем VadiKO, 14 апр 2015.

  1. VadiKO

    VadiKO Новичок

    С нами с:
    14 апр 2015
    Сообщения:
    5
    Симпатии:
    0
    Всем привет!

    Есть код:
    Код (Text):
    1.     if(isset($_POST['name']) && is_array($_POST['name']))
    2.         {
    3.             foreach($_POST['name'] as $id => $name)
    4.             {      
    5.                 if(!$name || isset($_POST['purchase'][$id]))
    6.                 {
    7.                         $desc = $_POST['price'][$id];
    8.                         $date = time();
    9.                         $enddate = time()+2592000;
    10.                         $end = $enddate;
    11.                         $total+=$desc;
    12.                    
    13.                         if(USERBALANS >= $total)
    14.                         {
    15.                             if(mysql_num_rows(mysql_query("SELECT name FROM `".PREFIX."hpacket` WHERE `name` = '{$name}' and `userid` = '{$_SESSION['user_id']}'"))) { Header("Location:action.php?error");}
    16.                             else {                         
    17.                                 db_insert(PREFIX . "hpacket", array("name" => $name, "price" => $desc, "date" => $date, "end" => $end, "userid" => $_SESSION['user_id']));
    18.                                 db_update(PREFIX . "admin", array('balans_p' => USERBALANS - $total, 'edit_status' => '1', 'status' => '1'), " id = {$_SESSION['user_id']}");
    19.                                
    20.  
    21.                                 Header("Location:action.php?purchaseOK");
    22.                        
    23.                             }  
    24.                        
    25.                         } else  {Header("Location:action.php?purchase_no_mani");}
    26.    
    27.                
    28.                 }   else  {Header("Location:action.php?purchaseOFF");}
    29.                
    30.             }      
    31.         }
    Проблема в том, что все время срабатывает только последний Header, - Header("Location:action.php?purchaseOFF")

    Если его заменить скажем на: Header('Refresh: 0; URL=action.php?purchaseOFF') то все работает как надо, но Refresh это не то что нужно, нужно что бы работало именно Header("Location...

    Помогите разобратся почему так и какие есть варианты решения.
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Значит, так условия срабатывают, вами в коде выставленные. Программа делает ровно то, что вы ей сказали делать.
     
  3. VadiKO

    VadiKO Новичок

    С нами с:
    14 апр 2015
    Сообщения:
    5
    Симпатии:
    0
    Логично, но от этого не легче. Код вы видите, выставляют я Header Location и он не работает, но заменив его на Header Refresh все работает как нужно. Почему оно тупит с Header Location?
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а попробуй exit; после вызова функции header().
     
  5. VadiKO

    VadiKO Новичок

    С нами с:
    14 апр 2015
    Сообщения:
    5
    Симпатии:
    0
    так?

    Код (Text):
    1.  if(isset($_POST['name']) && is_array($_POST['name']))
    2.       {
    3.          foreach($_POST['name'] as $id => $name)
    4.          {      
    5.             if(!$name || isset($_POST['purchase'][$id]))
    6.             {
    7.                   $desc = $_POST['price'][$id];
    8.                   $date = time();
    9.                   $enddate = time()+2592000;
    10.                   $end = $enddate;
    11.                   $total+=$desc;
    12.                
    13.                   if(USERBALANS >= $total)
    14.                   {
    15.                      if(mysql_num_rows(mysql_query("SELECT name FROM `".PREFIX."hpacket` WHERE `name` = '{$name}' and `userid` = '{$_SESSION['user_id']}'"))) { Header("Location:action.php?error");}
    16.                      else {                    
    17.                         db_insert(PREFIX . "hpacket", array("name" => $name, "price" => $desc, "date" => $date, "end" => $end, "userid" => $_SESSION['user_id']));
    18.                         db_update(PREFIX . "admin", array('balans_p' => USERBALANS - $total, 'edit_status' => '1', 'status' => '1'), " id = {$_SESSION['user_id']}");
    19.                        
    20.  
    21.                         Header("Location:action.php?purchaseOK");
    22.                         exit();
    23.                      }  
    24.                  
    25.                   } else  {Header("Location:action.php?purchase_no_mani");}
    26.    
    27.            
    28.             }   else  {Header("Location:action.php?purchaseOFF");}
    29.            
    30.          }      
    31.       }
    не помогло. (
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    как проверял?
     
  7. VadiKO

    VadiKO Новичок

    С нами с:
    14 апр 2015
    Сообщения:
    5
    Симпатии:
    0
    Практическим путем, запустил выполнение формы, и все так же при разных значения срабатывает только последний Header("Location:action.php?purchaseOFF

    Добавлено спустя 9 минут 7 секунд:
    В общем только что погоняв форму, заметил что все же Header работает, но срабатывает все правильно лишь тогда, когда в форме выбираю последний пункт.