当我检查它时,php $ _POST var清除自己

时间:2012-01-24 18:37:22

标签: php

我有一个我无法弄清楚的疯狂问题。我的表单有两个字段和一个提交按钮。当我提交vars时,传递到$ _POST就好了......

print('<div class=error>');
print_r($_POST);
print('</div>');

它为我提供了两个具有预期值的字段以及提交按钮的值。

无论其!当我添加以下代码行,以便我可以根据提交按钮进行处理时,它会清除所有数据。 post数组显示为空。

if ($_POST['submit'] == 'Submit') {

清除数据。如果我将值从“提交”更改为其他任何内容,则vars仍会显示在$ _POST中,当我尝试检查它们时它们会被清除。

我在这里做错了什么想法?

这是表格:

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<?
  if (isset($msg)) {
    echo "$msg";
  }
?>
<input type=text  name='email'><br>
<br><input type=password name='password'>
<br>
<input type="submit" name="submit" value=Submit>
</form>

这是处理代码:

if ($_POST['submit'] == 'Submit') {
echo "<div class=error>made it here</div>";
$u = $_POST['email'];
$p = $_POST['password'];
$auth = mysql_query("Select * from member where email='$u' and password='$p'");
$auth = mysql_fetch_array($auth);

if ($auth) {
    $pid = $auth[id];

    echo "aa";
    sess_register("sess_msg");
    $sess_msg = null;
    global $auth, $pid;
}
}

如果我在检查提交按钮的值是否超出提交按钮的实际值(即“提交”)时更改值,则会清除发送到$ _POST的所有变量

2 个答案:

答案 0 :(得分:1)

如果要查看单击了哪个提交按钮,则只需在阵列$_POST中查找其名称作为键。

所以你应该这样做:

if (array_key_exists('submit', $_POST)) {
    // your code
}

小建议:在将$ _POST数据放入查询之前,你最好逃避数据! 看看这个:http://php.net/manual/en/function.mysql-real-escape-string.php

答案 1 :(得分:0)

从你的帖子中看,你的代码看起来不应该清空$ _POST数组。我现在唯一可以想到的是,在代码中你可能只放了一个'='符号。

var_dump( $_POST );

if ( isset( $_POST['submit'] ) ) {
    var_dump( $_POST );
    echo "<div class=error>made it here</div>";
    $u = $_POST['email'];
    $p = $_POST['password'];
   $auth = mysql_query("Select * from member where email='$u' and password='$p'");
   $auth = mysql_fetch_array($auth);

   if ($auth) {
       $pid = $auth[id];

       echo "aa";
       sess_register("sess_msg");
       $sess_msg = null;
       global $auth, $pid;
   }
}

var_dump( $_POST );

var_dump( $_POST ); if ( isset( $_POST['submit'] ) ) { var_dump( $_POST ); echo "<div class=error>made it here</div>"; $u = $_POST['email']; $p = $_POST['password']; $auth = mysql_query("Select * from member where email='$u' and password='$p'"); $auth = mysql_fetch_array($auth); if ($auth) { $pid = $auth[id]; echo "aa"; sess_register("sess_msg"); $sess_msg = null; global $auth, $pid; } } var_dump( $_POST );