Вопрос $POST передачи

Тема в разделе "Как сделать...", создана пользователем linpc, 27 авг 2013.

  1. linpc

    linpc

    Регистр.:
    6 апр 2012
    Сообщения:
    179
    Симпатии:
    52
    Подскажите передаю запрос $POST в файл post_id.
    C параметрами post_id=19&act=1 и так далее.
    Он его выполняет но почему то берет его не с 19 а допустим с 49.
    Вот код:
    PHP:
    if(isset($_POST['post_id'])=='19' and in_array($_POST['vcode'],$_SESSION['secur'])){ //-- Арена боевка

    switch(intval($_POST['act'])){
              case
    '1'://-- Подача заявки
            
    if($user['ft']==1){
                
    $gsma=99;
                
    $batstart=9999999999;
                }else{
                    
    $batstart=time()+($_REQUEST['$fwait']*60);
                    }
        if(
    $user['ft']==3){
            if(
    $fall==1){
                
    $lev=array(0,33);
            }
            else{
                
    $lev=gethaot($player['level']);}
                
    $gsma=$_POST['gfma']=$lev[1];
                
    $_POST['gfmi']=$_POST['gsmi']=$lev[0];
                
    $_POST['gfco']=$_POST['gsco']=99;
                }
        if(
    $gsma<$_POST['gsmi']){$edit=$_POST['gsmi']-$_POST['gfma'];
        
    $gsma=$gsma+$edit$_POST['gsmi']=$_POST['gsmi']-$edit;}
       
        if(
    $_POST['gfco']=="0" or $_POST['gfco']==''){$_POST['gfco']="1";}
        if(
    $_POST['gsco']=="0" or $_POST['gsco']==''){$_POST['gsco']="1";}
        if(
    $player['level']>$_POST['gfma']){$_POST['gfma']=$player['level'];}
        if(
    $player['level']<$_POST['gsmi']){$_POST['gsmi']=$player['level'];}
        
    $fid=newbattle($user['ft'],$player['loc'],$_POST['fkind'],$_POST['batstart'],$_POST['ftime'],$_POST['ftrvm'],$_POST['gfmi'],$_POST['gfma'],$_POST['gfco'],$_POST['gsmi'],$_POST['gsma'],$_POST['gsco'],1);
        
    mysql_query("UPDATE `user` SET `battle`='".$_POST['fid']."', `side`='1' WHERE `id`='".$users."'");
            break;
            case
    '2'://--Принятие заявки
            
    if($pza){
            
    $bid=explode(":",$pza);
            
    mysql_query("LOCK TABLES arena READ, fight arena;");
    if(
    testarena($bid[1])!=0){
    if(
    $user['ft']==3){
    $cp1=mysql_num_rows(mysql_query("SELECT user.side FROM user WHERE side='1' AND battle='$bid[1]';"));
    $cp2=mysql_num_rows(mysql_query("SELECT user.side FROM user WHERE side='2' AND battle='$bid[1]';"));
    if(
    $cp1>$cp2){
        
    $bid[0]=2;
        }}
    $ok=mysql_num_rows(mysql_query("SELECT * FROM arena WHERE ok$bid[0]<kol$bid[0] AND id_battle='$bid[1]';"));
    if(
    $ok>0){
        
    mysql_query("UPDATE `arena` SET `ok".$bid[0]."`='ok".$bid[0]."'+1 WHERE `id_battle`='".$bid[1]."'");
        
    mysql_query("UPDATE `user` SET `battle`='".$bid[1]."',`side`='".$bid[0]."' WHERE `id`='".$users."' LIMIT 1;");
    if(
    $user['ft']==1){sumbat($bid[1],"top.frames['chmain'].add_msg('<font class=chattime>&nbsp;".date("H:i:s")."&nbsp;</font> <font color=000000><b><font color=#cc0000>Внимание!</font></b> &nbsp;<b>$user[login]</b> принял вашу заявку! </font><BR>'+'');$redirect",1);
    }else{
        
    sumbat($bid[1],"$redirect",0);}
        }
    mysql_query("UNLOCK TABLES;");}
        }
            break;
    }
           
    }

    if(isset(
    $_POST['post_id'])=='49' and in_array($_POST['vcode'],$_SESSION['secur'])){ //-- Смена пароля, почты установка дополнительного пароля
            
    switch(intval($_POST['act'])){
              case
    '1':
            if(!
    preg_match("/^[a-zA-Z0-9\._-]+@[a-z0-9\.-_]+\.[a-z]{2,4}$/",strval($_POST['newmail']))){
        
    $msg="<b><font class=proce><b>Ошибка! </b><font color=black><b>Не правильно указали E-mail.</font></b></font>";
    }else{
            
    log_write("newmail",$player['email']."=>".$_POST['newmail'],0); //--Запись лога смены E-mail
            
    $times=86400;
            
    mysql_query("UPDATE `user` SET `email`='".strval($_POST['newmail'])."', `finblock`='".time()+$times."' WHERE `id`='".$users."' LIMIT 1;");
    }
            break;
            case
    '2':
                if(
    $player['pass']==md5($_POST['opass'])){
                    if(
    $_POST['npass']==$_POST['vpass']){
                    if(
    $_POST['npass']<4){
                        
    $msg="<b><font class=proce><b>Ошибка! </b><font color=black><b>Пароль имеет менее 4 знаков</font></b></font>";
                        }else{
                                    
    mysql_query("UPDATE `user` SET `pass`='".md5($_POST['npass'])."', `finblock`='".time()+$times."' WHERE `id`='".$users."' LIMIT 1;");
                            
    $msg="<b><font class=proce><b>Внимание! </b><font color=black><b>Пароль успешно изменен.<br> В течении 24-х часов Вам запрешены любые денежные и вещевые передачи.</font></b></font>";
                            }
                            }else{
                                
    $msg="<b><font class=proce><b>Ошибка! </b><font color=black><b>Пароли не сопрадают.</font></b></font>";
                                }
        }else{
            
    $msg="<b><font class=proce><b>Ошибка! </b><font color=black><b>Вы указали не верный старый пароль.</font></b></font>";
            }
                break;
                case
    '3':
                
    $msg="<b><font class=proce><b>Ошибка! </b><font color=black><b>Установка Flash-пароля в разработке.</font></b></font>";
                break;
                case
    '5':
                
    mysql_query("UPDATE `user` SET `name`='".chars($_POST['newname'])."', `country`='".chars($_POST['newcountry'])."', `city`='".chars($_POST['newcity'])."', `icq`='".chars($_POST['newicq'])."', `url`='".chars($_POST['url'])."', `addon`='".chars($_POST['newaddon'])."', `about`='".chars($_POST['newabout'])."' WHERE `id`='".$users."' LIMIT 1;");
                
    $msg="<b><font class=proce><b>Внимание! </b><font color=black><b>Данные о Вас изменены.</font></b></font>";
                break;
               
        }
       
    }

    Чем это может быть вызвано?
     
  2. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.722
    Симпатии:
    2.097
    а что это конструкция такая интересная isset($_POST['post_id'])=='19' ?

    bool isset (mixed var [, mixed var [, ...]])

    нужно уже тогда писать isset(...) && inval() == 19 + проверить постом ли передаются данные, может лучше $_REQUEST использовать?

    isset - функция которая возращает true/false значение, каким образом его приравнивать к строковой '19'?
     
    Последнее редактирование модератором: 27 авг 2013
  3. linpc

    linpc

    Регистр.:
    6 апр 2012
    Сообщения:
    179
    Симпатии:
    52
    isset($_POST['post_id']) проверяю пустая переменная post_id, если нет то она должна быть равна 19
     
  4. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.722
    Симпатии:
    2.097
    функция то проверяет, но результат она возвращает не строковый, а логический и сравнивать с '19' некорректно. ещё раз повторюсь должно быть что-то наподобии
    if (isset($_POST['post_id']) && intval($_POST['post_id']) == 19 && ....)
     
    linpc нравится это.
  5. Nei

    Nei Nosce te ipsum

    Регистр.:
    5 сен 2009
    Сообщения:
    600
    Симпатии:
    468
    Судя по предыдущим вопросам в PHP ты далеко не гуру.
    Соответственно, уточнение: раз ты пишешь "post_id=19&act=1" ... ты массивы $_POST с $_GET не путаешь случаем? $_POST передаётся через формы, $_GET - через адресную строку
     
    Шумадан нравится это.
  6. linpc

    linpc

    Регистр.:
    6 апр 2012
    Сообщения:
    179
    Симпатии:
    52
    очень помогло, спасибо

    Нет я через форму передаю.
     
    Последнее редактирование модератором: 27 авг 2013
  7. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.402
    Симпатии:
    1.183
    Он его выполняет и для 19 и для 49:
    PHP:
    isset($_POST['post_id'])=='19' 

    isset($_POST['post_id'])=='49'
    Конструкции вполне валидны с точки зрения синтаксиса PHP, но логически неверны, проверка будет только на существование переменной.

    Замени все такие конструкции на код предложенный выше https://www.nulled.cc/threads/244125/#post-2164890
     
    Шумадан нравится это.