Php mysqli\u real\u用$\u转义POST:error

Php mysqli\u real\u用$\u转义POST:error,php,mysql,Php,Mysql,我是PHP初学者,在做登录项目时发现mysqli\u real\u escape参数$\u POST有问题 错误:未定义索引,所以您认为它可能是重复的主题,但在本例中,它位于mysqli_real_转义函数中 所以我用isset修复了这个错误,但它仍然有错误:语法错误,意外的“if”(T_if) 这是我的密码 session_start(); $con = mysqli_connect("localhost","root","", "test2"); $sql = "SELECT * FRO

我是PHP初学者,在做登录项目时发现mysqli\u real\u escape参数$\u POST有问题
错误:未定义索引,所以您认为它可能是重复的主题,但在本例中,它位于mysqli_real_转义函数中

所以我用isset修复了这个错误,但它仍然有错误:语法错误,意外的“if”(T_if)

这是我的密码

session_start();

$con = mysqli_connect("localhost","root","", "test2");

$sql = "SELECT * FROM member WHERE Username = '".mysqli_real_escape_string($con, $_POST['username'])."'
AND Password = '".mysqli_real_escape_string($con, $_POST['password'])."'";

$query = mysqli_query($con, $sql);
这是我的尝试

mysqli_real_escape_string($con, if(isset($_POST['password'])) $_POST['password'])
页面:index.php

<form name="form1" method="post" action="login.php">
<b>Login</b><br><br>
    <table border="1" style="width: 300px">
        <tr>
            <td> &nbsp;Username</td>
            <td><input type="text" name="username"></td>
        </tr>
        <tr>
            <td> &nbsp;Password</td>
            <td><input type="password" name="password"></td>
        </tr>
    </table>
    <br>
        <input type="submit" name="Submit" value="Login">
        &nbsp;&nbsp;<a href="regispage.php"> Register </a>

登录

用户名 密码

您应该在之前使用此选项

$ con = .....

$username = $password = '';

if (isset($_POST['password'])) {
    $password = mysqli_real_escape_stringw($con, $_POST['password']);
}

if (isset($_POST['username'])) {
   $username = mysqli_real_escape_string($con, $_POST['username'])
}

$sql = "SELECT * FROM member WHERE Username = '".$username"' AND Password = '".$password."'";

这是一个更干净的代码,并提供了更好的可读性。

请检查您的查询

$username = $password = ''; // To escape the undefined variable/index error 
// Or you can simply use at the beginning, error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING); to suppress notice and warning type error
$username = mysqli_real_escape_string($con, $_POST['username']);
$password = mysqli_real_escape_string($con, $_POST['password']);
$sql = "SELECT * FROM member WHERE Username = '{$username}' AND Password = '{$password}'";

希望它能起作用。还有一件事,请使用加密密码进行良好的实践。

mysqli\u real\u escape\u string($con,if(isset($\u POST['password']))$\u POST['password'])
您不能将这样的条件语句作为函数参数放入。您可以使用三元运算符,不过
mysqli_real_escape_string($con,!empty($_POST['password'])?$_POST['password']:“”)非常感谢您!:)这仍然会给您一个未定义的索引错误($code>$username=mysqli\u real\u escape\u string($con,$\u POST['username'))如果
用户名
尚未发布。。。除非您设置了危险且现已失效的
register\u globals
。请使用此错误报告(E\u ALL ^E\u NOTICE ^E\u WARNING);取消显示通知和警告类型错误的步骤