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

linpc

Гуру форума
Регистрация
6 Апр 2012
Сообщения
178
Реакции
55
Подскажите передаю запрос $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;
           
    }
   
}
Чем это может быть вызвано?
 
а что это конструкция такая интересная isset($_POST['post_id'])=='19' ?

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

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

isset - функция которая возращает true/false значение, каким образом его приравнивать к строковой '19'?
 
Последнее редактирование модератором:
isset - функция которая вовращает true/false значение, каким образом его приравнивать к строковой '19'?
isset($_POST['post_id']) проверяю пустая переменная post_id, если нет то она должна быть равна 19
 
isset($_POST['post_id']) проверяю пустая переменная post_id, если нет то она должна быть равна 19
функция то проверяет, но результат она возвращает не строковый, а логический и сравнивать с '19' некорректно. ещё раз повторюсь должно быть что-то наподобии
if (isset($_POST['post_id']) && intval($_POST['post_id']) == 19 && ....)
 
Подскажите передаю запрос $POST в файл post_id.
C параметрами post_id=19&act=1 и так далее.
Он его выполняет но почему то берет его не с 19 а допустим с 49.

Судя по предыдущим вопросам в PHP ты далеко не гуру.
Соответственно, уточнение: раз ты пишешь "post_id=19&act=1" ... ты массивы $_POST с $_GET не путаешь случаем? $_POST передаётся через формы, $_GET - через адресную строку
 
функция то проверяет, но результат она возвращает не строковый, а логический и сравнивать с '19' некорректно. ещё раз повторюсь должно быть что-то наподобии
if (isset($_POST['post_id']) && intval($_POST['post_id']) == 19 && ....)
очень помогло, спасибо

Судя по предыдущим вопросам в PHP ты далеко не гуру.
Соответственно, уточнение: раз ты пишешь "post_id=19&act=1" ... ты массивы $_POST с $_GET не путаешь случаем? $_POST передаётся через формы, $_GET - через адресную строку
Нет я через форму передаю.
 
Последнее редактирование модератором:
Он его выполняет но почему то берет его не с 19 а допустим с 49.
Чем это может быть вызвано?

Он его выполняет и для 19 и для 49:
PHP:
isset($_POST['post_id'])=='19' 

isset($_POST['post_id'])=='49'

Конструкции вполне валидны с точки зрения синтаксиса PHP, но логически неверны, проверка будет только на существование переменной.

Замени все такие конструкции на код предложенный выше Для просмотра ссылки Войди или Зарегистрируйся
 
Назад
Сверху