【问题标题】:Undefined variable on POSTPOST 上未定义的变量
【发布时间】:2015-09-11 21:48:52
【问题描述】:

我查看了您的页面并修复了用户名和密码上的未定义索引,但现在我得到了未定义的变量。我有更多代码,但为了测试而决定对其进行简化,然后只是回显它以查看是否有任何变化而没有变化。

<?php
if (isset($_POST['submit'])){
$uname = isset($_POST['username']);             
$pass = isset($_POST['password']); 
}

echo $uname;
echo $password;
?>

我明白了:

注意:未定义变量:第 7 行 C:\xampp\htdocs\8\login.php 中的 uname

注意:未定义变量:传入 C:\xampp\htdocs\8\login.php on 第 8 行

我真的不明白这里有什么问题。如果需要,这里是我的表单页面 html。

<form id="login" method="post" action="login.php">
<div id="loginon">
<label for="username" style="color:#0F0; font-family:Arial, Helvetica, sans-serif;" >Username: &nbsp; &nbsp;</label>
<input type="text" id="username" name="username" />
<br  />
<br  />

<label for="password"  style="color:#0F0; size:auto; font-family:Arial, Helvetica, sans-serif;">Password: &nbsp; &nbsp;</label>
<input type="password" id="password" name="password" /> 
<br />
<br />
<input type="image" src="http://www.clker.com/cliparts/2/G/4/v/K/E/submit-hi.png" border="0" width="180px" height="80px" alt="Submit" />
</div>
</form>
</body>

编辑: 进一步的问题与此有关,所以我想我可以在这里发布。

if($username == "pikachu" || "cloud") {
    $ucheck = "dobar";
} else {
    $ucheck = "los";
}

if ($password == "123123" || "132132") {
    $pcheck = "topar";
} else {
    $pcheck = "losh";
}

if($ucheck == "dobar" && $pcheck == "topar") {
    echo "Najjaci si!";

}

elseif ($ucheck == "dobar" && $pcheck == "losh") {
    echo "Wimp.";
} elseif ($ucheck == "los" && $pcheck == "topar") {
    echo "Fish.";
}

问题在于,无论我在以前的表单中输入什么,它总是回显“Najjaci si”。有什么想法吗?

【问题讨论】:

  • 在条件前声明$uname = $pass ="";
  • 没有名称为submitinput
  • 如果我这样做,我会得到“注意:未定义的变量:第 9 行 C:\xampp\htdocs\8\login.php 中的密码”
  • @victiMusPrime 检查变量 $pass$password...您使用的是两个不同的变量
  • 我现在得到一个空白页面,这意味着表单数据没有到达页面。 Jonas m 有解决方案,但感谢大家的努力。

标签: php variables post indexing undefined


【解决方案1】:

试试这个

形式上

<form id="login" method="post" action="login.php">
    <div id="loginon">
        <label for="username" style="color:#0F0; font-family:Arial, Helvetica, sans-serif;" >Username: &nbsp; &nbsp;</label>
        <input type="text" id="username" name="username" />
        <br  />
        <br  />

        <label for="password"  style="color:#0F0; size:auto; font-family:Arial, Helvetica, sans-serif;">Password: &nbsp; &nbsp;</label>
        <input type="password" id="password" name="password" />
        <br />
        <br />
        <input type="submit" name="submit"/>
    </div>
</form>
</body>

在 login.php 中

<?php
    if (isset($_POST['submit']))
    {
        $uname = $_POST['username'];
        $pass = $_POST['password'];
    }

    echo $uname;
    echo $pass;
?>

【讨论】:

    【解决方案2】:

    isset 将检查变量是setnot 并在01 中传递值。所以在这里你需要这样做

    $uname = isset($_POST['username']) ? $_POST['username'] : '';             
    $pass = isset($_POST['password']) ? $_POST['password'] : ''; 
    

    注意:未定义变量:在第 8 行传入 C:\xampp\htdocs\8\login.php

    因为你回显的是$password 而不是$pass

    已编辑

    照做

    $uname = '';
    $pass = '';
    
    if (isset($_POST['submit'])){
    $uname = isset($_POST['username']);             
    $pass = isset($_POST['password']); 
    }
    
    echo $uname;
    echo $pass;
    

    【讨论】:

    • 尝试修复后仍然出现相同的错误。还有其他线索吗?
    • 首先检查它是否在if条件内
    【解决方案3】:

    由于您在逻辑 (If) 中有变量 decleration,因此有可能根本没有设置变量。 试试这个

    <?php
    if (isset($_POST['submit'])){
      $uname = isset($_POST['username']);             
      $pass = isset($_POST['password']); 
    
      echo $uname;
      echo $pass;
    } else {
      echo "No submit detected!";
    }
    
    
    ?>
    

    如果您有一个名为 submit 的实际元素,它看起来也不像。 尝试添加:

    <input type="submit" name="submit" value="Send my form" />
    

    现在,您的表单包含一个名为“submit”的元素,该元素将在表单提交时作为 post 参数发送。

    我自己,需要一个框架,喜欢这样做:

    $username = ( isset($_POST["username"]) && $_POST["username"] != "" ? $_POST["username"] : false );
    $password = ( isset($_POST["password"]) && $_POST["password"] != "" ? $_POST["password"] : false );
    
    if( !$username === false && !$password === false )
    {
        echo $username . " <br /> " . $password;
    } else {
        echo "No! :) ";
    }
    

    【讨论】:

    • 它回显“未检测到提交!”
    • 因为您需要在 html 表单中添加一个提交按钮。看看我的回答。
    • 噢噢噢,所以是提交按钮导致了整个问题?谢谢,我现在都整理好了。 :)
    • 是的。因为您只是设置变量,如果在 POST 数组中设置了键“提交”。不是,因为没有发布任何名为“提交”的内容:)
    • 你在写: if($username == "pikachu" || "cloud") 应该是 if($username == "pikachu" || $username == "cloud") 你需要您要在所有“OR's”/“Ands”上检查的变量
    猜你喜欢
    • 1970-01-01
    • 2015-12-26
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 2022-10-08
    • 2011-06-11
    • 1970-01-01
    • 2012-12-17
    相关资源
    最近更新 更多