首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >登录脚本仅在特定条件下工作

问登录脚本仅在特定条件下工作
EN

Stack Overflow用户
提问于 2014-08-27 18:12:17
回答 3查看 50关注 0票数 0

我正在制作一个登录页面,其中的HTML部分是:

代码语言:javascript
复制
<form action="login.php" method="post">
Email: <input type="email" placeholder="Email" name="email">
Password: <input type="password" placeholder="Password" name="password">
<input name="submit" type="submit" value=" Login "> 
</form>

而login.php页面是

代码语言:javascript
复制
    <?php
if (isset($_POST['submit'])) 
    {
        if (empty($_POST['email']) || empty($_POST['password'])) 
            {
                $error = "email or Password is invalid";
            }
        else
            {
                // Define $email and $password
                $email=$_POST['email'];
                $password=$_POST['password'];
                // To protect mysqli injection for Security purpose
                $email = stripslashes($email);
                $password = stripslashes($password);
                $email = mysqli_real_escape_string($email);
                $password = mysqli_real_escape_string($password);
                // Establishing Connection with Server by passing server_name, user_id and password as a parameter
                $connection = mysqli_connect("abc.com", "abc", "123");
                // Selecting Database
                $db = mysqli_select_db("dealapp", $connection);
                // SQL query to fetch information of registerd users and finds user match.
                $query = mysqli_query("select * from users where password='$password' AND email='$email'", $connection);
                $rows = mysqli_num_rows($query);
                if ($rows == 1) 
                    {
                        $_SESSION['login_user']=$email; // Initializing Session
                        header("location: index.html"); // Redirecting To Other Page
                    } 
                else 
                    {
                        $error = "email or Password is invalid";
                    }
            mysqli_close($connection); // Closing Connection
    }
}
?>

我面对两个问题:

1)当我使用striplashes和mysql_real_escape_string时,程序显示以下错误,并且我无法建立数据库连接。但是如果我删除了它们,它就会正常运行。我不能理解为什么会发生这种情况。

代码语言:javascript
复制
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /home/content/10/10898710/html/dealapp/admin/login.php

2)我的第二个问题是,如果用户输入了错误的电子邮件/密码,我希望重定向页面,但当我使用重定向代码时,它既不会被重定向,也不会显示我在上面的代码中尝试的错误消息。但是,当登录详细信息为真时,它就可以完美地工作。

任何帮助/指导都将不胜感激。

附注-我现在已经进行了更改并使用了sqli,但它仍然显示错误

EN

回答 3

Stack Overflow用户

发布于 2014-08-27 18:14:32

如果您真正关注安全性,请使用mysqli_* functions或PDO而不是mysql_* functions,因为将来将不再支持它

编辑:在使用mysqli_real_escape_string之前先进行连接,因为它需要连接到您的数据库。

此外,mysqli_connect还需要四个参数(主机名、用户名、密码、db_name)

代码语言:javascript
复制
$connection = mysqli_connect("dealapp.db.10898710.hostedresource.com", "dealapp", "Dealapp12!@", "dealapp");

删除此代码,因为它不再需要。

代码语言:javascript
复制
$db = mysqli_select_db("dealapp", $connection); <--- Delete this line of code

请在连接后执行此操作。

代码语言:javascript
复制
$email    = myqli_real_escape_string($connection, stripslashes($email));
$password = mysqli_real_escape_string($connection, stripslashes($password));
票数 1
EN

Stack Overflow用户

发布于 2014-08-27 18:19:19

请检查您的版本并检查此链接

http://php.net/manual/en/function.mysql-real-escape-string.php

自PHP 5.5.0起,此扩展已弃用,并将在将来删除

票数 0
EN

Stack Overflow用户

发布于 2014-08-27 18:19:21

$_POST['email']应为$_POST['firstname'];

另外,您是否在页面的开头添加了session_start();?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25524419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档