Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP登录并连接到MySql_Php_Mysql - Fatal编程技术网

PHP登录并连接到MySql

PHP登录并连接到MySql,php,mysql,Php,Mysql,我是PHP新手。我正在创建一个login.php页面。我已经在MySQL数据库中创建了一个表。 数据库名称:学校 表名:用户 我已经保存了一个username=admin和pass=123 我现在正在尝试连接数据库,并尝试在访问“admin.php”页面之前验证来自数据库的输入信息 现在,请用代码解释如何连接数据库并验证信息,如果信息正确,页面应重定向到admin.php页面if(mysql_num_行(mysql_查询(“select*from username='my_user'和pass=

我是PHP新手。我正在创建一个login.php页面。我已经在MySQL数据库中创建了一个表。 数据库名称:学校 表名:用户

我已经保存了一个
username=admin
pass=123

我现在正在尝试连接数据库,并尝试在访问“admin.php”页面之前验证来自数据库的输入信息

现在,请用代码解释如何连接数据库并验证信息,如果信息正确,页面应重定向到admin.php页面

if(mysql_num_行(mysql_查询(“select*from username='my_user'和pass='my_password')>0){
if(mysql_num_rows(mysql_query("select * from users where username='$my_user' and pass='$my_password'"))>0) {

    header('Location:admin.php');
} else {
    echo " < b > Incorrect username or password<\b>";
}
标题('Location:admin.php'); }否则{ echo“错误的用户名或密码”; }
这将把表单信息插入数据库:

$insert="INSERT INTO `users`(`user`,`password`) VALUES ('$my_user','$my_password') ";
$query=mysql_query($insert,$link);
$result=mysql_query('SELECT * FROM users WHERE username='$my_user' AND password='$my_password'");
$sql1=mysql_query($result,$link);
这将从数据库中选择信息:

$insert="INSERT INTO `users`(`user`,`password`) VALUES ('$my_user','$my_password') ";
$query=mysql_query($insert,$link);
$result=mysql_query('SELECT * FROM users WHERE username='$my_user' AND password='$my_password'");
$sql1=mysql_query($result,$link);


开始将PDO用于数据库连接。我没有测试过这一点,但应该可以让您了解该怎么做

config.php

<?php
define('DB_TYPE', 'mysql');
define('DB_HOST', 'localhost');
define('DB_NAME', 'school');
define('DB_USER', 'root');
define('DB_PASS', '');
?>

functions.php

<?php 
function validate_user_creds() {
    try
{
  $pdo = new PDO(DB_TYPE.':host='.DB_HOST.';dbname='.DB_NAME.', '.DB_USER.', '.DB_PASS);
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  header('Location: admin.php');
  exit();
}
catch (PDOException $e)
{
  $error = 'Unable to connect to the database server.';
  include 'error.html.php';
  exit();
}
}
?>

login.php

<?php
require 'config.php';
require 'functions.php';

if ($_POST['user'] === DB_NAME && $_POST['password'] === DB_PASS) {
    validate_user_creds();
}

?>

在PHP中访问数据库时,将PDO与准备好的语句一起使用,因为它有助于防止SQL注入。看一看

编辑: 韦恩的回答令人困惑。在login.php中,他通过比较用户名和数据库名以及用户密码和数据库密码来验证管理员。我不推荐它,它与你发布的内容也没有多大关系


我同意PatrickB的答案。

通常使用mysql(不推荐!)

登录
登录
PDO/MySQLi

<?php

error_reporting(E_ERROR);

$error = false;
if(isset($_POST['login']))
{
    $servername = 'localhost';
    $dbname     = 'school';
    $dbusername = 'root';
    $dbpassword = '';
    $table_Name = 'users';

    $link = new mysqli($servername, $dbusername, $dbpassword, $dbname);

    if (mysqli_connect_errno())
    {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $my_user = $_POST['user'];
    $my_password = $_POST['password'];

    if(!($signin = $link->prepare('SELECT * FROM `users` WHERE `username` = ? AND `password` = ? LIMIT 1;')))
    {
        printf("Select Error: %s\n", $link->error);
        exit();
    }

    $signin->bind_param('ss', $my_user, $my_password);
    if($signin->execute())
    {
        $signin->store_result();
        $num_rows = $signin->num_rows;

        if($num_rows)
        {
            header('Location: admin.php');
        }
        else
        {
            $error = 'Unknown login!';
        }
    }

    $link->close();
}

?><html><head><title>Login</title></head><body>
    <form action="#" method="post">
        <?php if($error !== false) { echo '<p>' . $error . '</p>'; } ?>
        <input name="user" type="text" size="255" />
        <input name="password" type="text" size="255" />
        <button type="submit" name="login">Login</button>
    </form>
</body></html>
登录
登录

那么到目前为止您尝试了什么,嗯?也不要使用
mysql.*
函数,它们已被弃用。使用
PDO
mysqli
代替在您的问题中更新此内容,而不是在中发布comments@MuhammadRizwan,请把表格也给我们看一下,可能有什么问题,syntex,你有什么问题?你需要做的是1。使用第一个代码块2连接mysql。用第二个代码块3分配变量
$result=mysql_query('SELECT*FROM username='$my_user'和password='$my_password'));if($result){header('Location:admin.php');}else{echo“error”;}
。此外,您有什么问题?您没有引用或转义变量。
<?php 
function validate_user_creds() {
    try
{
  $pdo = new PDO(DB_TYPE.':host='.DB_HOST.';dbname='.DB_NAME.', '.DB_USER.', '.DB_PASS);
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  header('Location: admin.php');
  exit();
}
catch (PDOException $e)
{
  $error = 'Unable to connect to the database server.';
  include 'error.html.php';
  exit();
}
}
?>
<?php
require 'config.php';
require 'functions.php';

if ($_POST['user'] === DB_NAME && $_POST['password'] === DB_PASS) {
    validate_user_creds();
}

?>
<?php

error_reporting(E_ERROR);

$error = false;
if(isset($_POST['login']))
{
    $servername = 'localhost';
    $dbname     = 'school';
    $dbusername = 'root';
    $dbpassword = '';
    $table_Name = 'users';

    $link = mysql_connect($servername, $dbusername, $dbpassword) or die('Could not connect: ' . mysql_error());

    mysql_select_db($dbname, $link) or die ('could not open db' . mysql_error());

    $my_user = $_POST['user'];
    $my_password = $_POST['password'];

    $signin = mysql_query("SELECT * FROM `users` WHERE `username` = '" . mysql_real_escape_string($my_user) . "' AND `password` = '" . mysql_real_escape_string($my_password) . "' LIMIT 1;")
              or die('SELECT Error: '.mysql_error());
    $num_rows = mysql_num_rows($signin);

    mysql_close($link);

    if($num_rows)
    {
        header('Location: admin.php');
    }
    else
    {
        $error = 'Unknown login!';
    }
}

?><html><head><title>Login</title></head><body>
    <form action="#" method="post">
        <?php if($error !== false) { echo '<p>' . $error . '</p>'; } ?>
        <input name="user" type="text" size="255" />
        <input name="password" type="text" size="255" />
        <button type="submit" name="login">Login</button>
    </form>
</body></html>
<?php

error_reporting(E_ERROR);

$error = false;
if(isset($_POST['login']))
{
    $servername = 'localhost';
    $dbname     = 'school';
    $dbusername = 'root';
    $dbpassword = '';
    $table_Name = 'users';

    $link = new mysqli($servername, $dbusername, $dbpassword, $dbname);

    if (mysqli_connect_errno())
    {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $my_user = $_POST['user'];
    $my_password = $_POST['password'];

    if(!($signin = $link->prepare('SELECT * FROM `users` WHERE `username` = ? AND `password` = ? LIMIT 1;')))
    {
        printf("Select Error: %s\n", $link->error);
        exit();
    }

    $signin->bind_param('ss', $my_user, $my_password);
    if($signin->execute())
    {
        $signin->store_result();
        $num_rows = $signin->num_rows;

        if($num_rows)
        {
            header('Location: admin.php');
        }
        else
        {
            $error = 'Unknown login!';
        }
    }

    $link->close();
}

?><html><head><title>Login</title></head><body>
    <form action="#" method="post">
        <?php if($error !== false) { echo '<p>' . $error . '</p>'; } ?>
        <input name="user" type="text" size="255" />
        <input name="password" type="text" size="255" />
        <button type="submit" name="login">Login</button>
    </form>
</body></html>