【问题标题】:HTML if and else if statement errorHTML if 和 else if 语句错误
【发布时间】:2016-07-21 11:39:48
【问题描述】:

我有一个带有两个按钮的 html 表单。一种是使用mysql查询登录,另一种是重定向到注册页面。登录按钮正常工作,但注册按钮有点奇怪。它将运行它应该运行的函数,但它也会返回有关 if 语句的登录按钮部分的错误。

HTML:

<html><head><title> Sign-In </title></head>
<body>

<h1> Login Form </h1>
<div id="Sign-In">
<form method="POST" action="connectivity.php">
Username: <input type='text' name='user'> <br><br>
Password: <input type='password' name='password'> <br><br>
<input type="submit" class="button" name="login_button" value="Login"> <br>
<input type="submit" class="button" name="register_button" value="Register">

</form>
</div>
</body>
</html>

PHP:

<?php
session_start();   //starting the session for user profile page
define('DB_HOST', 'localhost');
define('DB_NAME', 'project2');
define('DB_USER','root');
define('DB_PASSWORD','password');

if($_POST['login_button']){
    signin();
}
else if($_POST['register_button']){
    register();
}

function signin()
{
    $con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error());
    $db=mysql_select_db(DB_NAME,$con) or die("Failed to connect to MySQL: " . mysql_error());

    $ID = $_POST["user"];
    $Password = $_POST["password"];

    if(!empty($_POST['user']))   //checking the 'user' name which is from Sign-In.html, is it empty or have some text
    {
        $query =("SELECT *  FROM Customers where userName = '" .$ID. "' AND pass = '" .$Password. "';");

        $result = mysql_query($query, $con);
        if (mysql_num_rows($result) == 0)
        {
            echo "Invalid username or password.";
        }
        else
        {
            echo "Successfully logged in!";
        }
    }
    else
    {
        echo "Username field is empty!";
    }
}

function register()
{
    echo "please register";
}



?>

我得到的错误是:

Notice: Undefined index: login_button in C:\xampp\htdocs\project2\connectivity.php on line 8
please register

如您所见,register() 函数的回显工作正常,但我猜它也在尝试signin() 函数。我只需要执行其中一个功能,具体取决于单击的按钮。提前致谢!

【问题讨论】:

  • 您收到的错误信息是什么?

标签: php html mysql


【解决方案1】:

当您执行if($_POST['login_button']){ 时,您正在检查该按钮是否存在于先前的表单中并且是通过邮寄发送的,因为它在表单中。

如果你想检查哪个按钮被点击了,你必须这样做:

if(isset($_POST['login_button'])){
    signin();
}
else if(isset($_POST['register_button'])){
    register();
}

如果没有点击,按钮不会被设置。

【讨论】:

  • 太棒了!非常感谢!这是我第一次使用 html/php,感觉有点粗糙。您会认为讲师会从一个更简单的项目开始... -.- 再次感谢!
  • 这是一个简单的 CRUD,在这种情况下,只是一个选择。其实很简单。
【解决方案2】:

一个表单中不能有多个提交按钮。看这里的解释:Multiple submit buttons in an HTML form

【讨论】: