PHP中的登录脚本

3

你好,我很新于PHP,已经学习了一些关于phpmysql的知识。

我创建了一个mysql数据库和一个,但是不知道如何创建php登录脚本

有人可以帮帮我吗?

我尝试使用下面的代码连接数据库,但没有成功。我正在运行我的脚本在我的本地电脑上。

<?php



    $dbHost = "mysql";
    $dbUser = "root";
    $dbPass = "1234567";
    $dbDatabase = "db_name";
    $db = mysql_connect($dbHost,$dbUser,$dbPass)or die("Error connecting to database."); 
 ?>

我遇到了无法连接到数据库的错误


5
我认为问题出在您的主机名上。 - Bhuvan Rikka
2个回答

3
尝试将您的主机名更改为localhost 此外,您应该真正考虑使用PHP数据对象(通常称为PDO)来实现更安全的登录。

1
使用PDO登录是否比使用mysql更安全? - user254875486
@Lex 绝对可以有效地防止mysql注入技术的攻击。 - Undefined
谢谢,我已经改成本地主机了,现在我能够连接了,但是登录脚本怎么办? - user1565383
2
@user1565383 为了登录,您需要设置一些带有登录表单的HTML。最好查看S Varun关于此的答案。 - Undefined
1
@Sam;好的,我知道了,我以为你是指从PHP登录到MySQL会更安全,这对我来说似乎很奇怪。 - user254875486
1
@Lex PDO 可以保护你免受恶意用户通过你的表单运行 mysql 命令的攻击,但它并不能帮助你安全地登录数据库。 - Undefined

1

你遇到了连接错误,这是因为你在database中指定了mysql作为你的host。如果你在本地运行php,你的主机应该是localhost

以下是Php登录脚本:

将下面的代码保存在一个Php文件中,并将其命名为login_page.php

<form action="verify.php" method="post">
    User Name:<br>
    <input type="text" name="username"><br><br>
    Password:<br>
    <input type="password" name="password"><br><br>
    <input type="submit" name="submit" value="Login">
</form>

将以下代码保存在一个 Php 文件中,并将其命名为 verify.php

<?php
if(isset($_POST['submit'])){
    $dbHost = "localhost";        //Location Of Database usually its localhost
    $dbUser = "xxxx";            //Database User Name
    $dbPass = "xxxxxx";            //Database Password
    $dbDatabase = "db_name";    //Database Name

    $db = mysql_connect($dbHost,$dbUser,$dbPass)or die("Error connecting to database.");
    //Connect to the databasse
    mysql_select_db($dbDatabase, $db)or die("Couldn't select the database.");
    //Selects the database

    /*
    The Above code can be in a different file, then you can place include'filename.php'; instead.
    */

    //Lets search the databse for the user name and password
    //Choose some sort of password encryption, I choose sha256
    //Password function (Not In all versions of MySQL).
    $usr = mysql_real_escape_string($_POST['username']);
    $pas = hash('sha256', mysql_real_escape_string($_POST['password']));
    $sql = mysql_query("SELECT * FROM users_table 
        WHERE username='$usr' AND
        password='$pas'
        LIMIT 1");
    if(mysql_num_rows($sql) == 1){
        $row = mysql_fetch_array($sql);
        session_start();
        $_SESSION['username'] = $row['username'];
        $_SESSION['fname'] = $row['first_name'];
        $_SESSION['lname'] = $row['last_name'];
        $_SESSION['logged'] = TRUE;
        header("Location: users_page.php"); // Modify to go to the page you would like
        exit;
    }else{
        header("Location: login_page.php");
        exit;
    }
}else{    //If the form button wasn't submitted go to the index page, or login page
    header("Location: index.php");    
    exit;
}
?> 

要检查用户是否已登录,请使用以下代码

<?php
session_start();
if(!$_SESSION['logged']){
    header("Location: login_page.php");
    exit;
}
echo 'Welcome, '.$_SESSION['username'];
?> 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接