PHP表单提交代码中未定义的索引错误

时间:2014-09-29 01:01:35

标签: php html mysql

我一直得到一个未定义的索引...当我关闭错误报告时,一切都很好,但我正在寻找一种方法来解决这个“正确的方式”

在register.php上的表单上,按钮看起来像这样

<input type="submit" name="submit" class="btn btn-kani btn-lg" value="Sign Up"/>

然后将其链接到另一个名为login.php的页面

Login.php代码

我试过了

if (isset($_POST['submit']=="Sign Up")) {
// etc.

我试过了

if ($_POST['submit']=="Sign Up") { 
// etc.

与注销相同,因为会话,不知道应该如何编码....按钮读取

<li class="inactive"><a href="logout.php?logout=1">Log Out</a></li>

和login.php上的代码

if($_GET["logout"]==1 AND $_SESSION['id']) {
    session_destroy();
    header("Location:../logout.php");       
}

2 个答案:

答案 0 :(得分:2)

isset()评估里面的内容并告诉你它的真或假:

所以这个表达对你要做的事情没有任何意义:

if (isset($_POST['submit']=="Sign Up")) {

应该像:

if(isset($_POST['submit'])) { // if index submit <input type="submit" name="submit" /> button was pressed
    // so if the button is pressed, then it will go inside this block
}

如果您想评估其存在和价值,您可以执行以下操作:

if(isset($_POST['submit']) && $_POST['submit'] == 'whatever value') {

}

关于会话,您可以这样检查:

if(isset($_GET['logout'], $_SESSION['id']) && $_GET['logout'] == 1) {
    // if both get logout and session id does exists and logout is equal to 1
    session_destroy();
    header('Location: ../logout.php');
}

如果您想要更多补充信息,可以查看deceze的The Definitive Guide To PHP's isset And empty。这是一个很好的阅读,并雄辩地解释如何将它与测试用例一起使用,类似于你的

答案 1 :(得分:1)

if ($_POST['submit']=="Sign Up")不首先检查以确保$_POST['submit']中有值,这可能会导致“未定义的索引”;

if (isset($_POST['submit']=="Sign Up"))只是没有意义。尝试类似:

if (isset($_POST['submit']) && ($_POST['submit']==="Sign Up"))