【问题标题】:Fatal Error: Uncaught error Call to undefined function mysql_real_escape_string() HTML/PHPMYADMIN致命错误:未捕获的错误调用未定义的函数 mysql_real_escape_string() HTML/PHPMYADMIN
【发布时间】:2019-08-01 20:45:18
【问题描述】:

我目前有货:(基本上我在做一个登录页面登录页面没有问题但是一旦我提交它......这是我的登录页面代码。

<form action= "process.php" method="POST">
Username: <input type="text" id="user" name="username">
Password: <input type="password" id="pass" name="password">
<input type="submit" value="Submit" >

现在我的 process.php 出现了同样的错误。我似乎找不到问题所在。请帮忙这里是代码

<?php
    $username = $_POST['user'];
    $password = $_POST['pass'];

    //to prevent sql injection
    $username = stripcslashes($username);
    $password = stripcslashes($password);
    $username = mysql_real_escape_string($username);
    $password = mysql_real_escape_string ($password);

    //connect to the server and select database
    mysql_connect("localhost","root","");
    mysql_select_db("franklin offshore");

    //query the database for user
    $result = mysql_query("select * from login where username='$username' 
    and password='$password'")
        or die ("Failed to query database ".mysql_error());
    $row = mysql_fetch_array($result);
    if ($row['username'] == $username && $row['password'] == $password)
    {
        echo "LOGIN SUCCESS WELCOME" .$row['username'];
    }
    else
    {
        echo "Failed to LOGIN" ;
    }
?>

这就是它一直显示的内容

致命错误:未捕获错误:调用未定义函数 mysql_real_escape_string()

请帮忙

【问题讨论】:

  • 最喜欢您的主机使用 PHP 7,并且 mysql_* 扩展已从 PHP 7 中完全删除。此外,您的代码对SQL injection 相关的攻击是开放的。请学会使用Prepared Statements
  • 我怎么知道我是否使用 php 7..但是我有一个 phpMyAdmin 4.8.3
  • 如果您使用的是 linux,请转到终端并输入 php -v 并按 Enter。你会得到PHP版本号

标签: html mysql phpmyadmin


【解决方案1】:

我建议使用mysqli(在您的代码中将mysql 替换为mysqli)并使用变量连接到您的数据库。

像这样:

$db = mysqli_connect("localhost", "username", "", "database");

然后你必须把$db作为参数放在你的mysqli_query中。

这是一个例子:

$result = mysqli_query($db, "select * from login where username='$username' and password='$password'");

【讨论】:

  • 非常感谢!!你是救生员
  • 我需要问一下,如果我按下提交按钮,即使该字段为空白,它仍会将您定向到该站点。我如何保护它?
  • @KimAleah Yes 会将您引导到一边,但如果您希望输入字段是必需的,只需将 required 添加到您的 HTML 输入标签。像这样:&lt;input type="text" id="user" name="username" required&gt; 现在提交按钮只会引导你,如果输入里面有文本。
  • 你真的是救命稻草
  • 我看得出来,而且你比我年轻...我现在感觉很糟糕^_^
【解决方案2】:

试试下面...它会工作的。

<?php
$username = $_POST['user'];
$password = $_POST['pass'];

$username = stripcslashes($username);
$password = stripcslashes($password);

$db = mysqli_connect("localhost","root","","franklin offshore");

$result = mysqli_query($db, "select * from login where username = '$username' and password = '$password'")
                or die("Faild to query database " .mysqli_error());
$row = mysqli_fetch_array($result);
if ($row['username']== $username && $row['password'] == $password){
    echo "Login success!!! Welcome " .$row['username'];
} else {
    echo "Faild to login!";
}

?>

正如上面有人提到的,您需要将代码中的所有 mysql 替换为 mysqli。

请参考此链接MySQL vs MySQLi when using PHP

并且还删除“mysql_real_escape_string”代码。

谢谢。

【讨论】:

    猜你喜欢
    • 2017-03-24
    • 2019-05-22
    • 2017-01-27
    • 2016-04-07
    • 2017-08-19
    • 2018-01-18
    相关资源
    最近更新 更多