PHP/MySQLi-第一次编写登录脚本-工作-安全?

PHP/MySQLi-第一次编写登录脚本-工作-安全?,php,oop,mysqli,pdo,login,Php,Oop,Mysqli,Pdo,Login,因此,在学习编写PHP代码6年后,我终于完成了网站的编写(还没有上线),我读了一篇关于MYSQL_*函数被贬低和存在安全问题的帖子,因此我决定学习如何使用MYSQLi_*函数重新编写 虽然我已经使用mysqli_uuu函数重新编写了代码,并且正在按它应该的方式工作(登录和会话),但我不确定这是否对那些讨厌的SQL注入脚本安全。(我认为将$u POST的值绑定到prepared语句中就足以停止SQL注入?) 如果您能给我任何建议,我将不胜感激 亲切的问候 包含/mysqli\u connectio

因此,在学习编写PHP代码6年后,我终于完成了网站的编写(还没有上线),我读了一篇关于MYSQL_*函数被贬低和存在安全问题的帖子,因此我决定学习如何使用MYSQLi_*函数重新编写

虽然我已经使用mysqli_uuu函数重新编写了代码,并且正在按它应该的方式工作(登录和会话),但我不确定这是否对那些讨厌的SQL注入脚本安全。(我认为将$u POST的值绑定到prepared语句中就足以停止SQL注入?)

如果您能给我任何建议,我将不胜感激

亲切的问候

包含/mysqli\u connection.php(连接脚本)

<?php

// Connection Details
$MySQLi_Server     = 'localhost';
$MySQLi_Username   = '#####';
$MySQLi_Password   = '#####';
$MySQLi_Database   = '#####';

// Connect To Server
$MySQLi_Connection = new PDO("mysql:host=$MySQLi_Server;dbname=$MySQLi_Database", $MySQLi_Username, $MySQLi_Password);

// Tables
$MySQLi_Users_Table = 'users';

?>

include/global.php(包括在每个用户限制页面上)


login\u process.php(登录表单提交到此脚本)


members\u区域/dashboard.php

<?php

// Include Global Settings
include('../include/global.php');

// Display Message (Logged In)
echo 'Username : ('.$_SESSION['username'].')';

?>

使用MySQLi扩展:

$db_user='user';
$db_pass='pass';
$db_server='localhost';
$db_database='database';

$mysqli = new mysqli($db_server, $db_user, $db_pass, $db_database);
if ($mysqli->connect_error){
  die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
}

    // Login (Query)
$stmt = $mysqli->prepare("SELECT count(*) FROM $MySQLi_Users_Table WHERE username=? AND password=?");
$stmt->bindParam('ss', $Username, $Password);
$stmt->bindResult($count);
$stmt->execute();
$stmt->fetch();
$stmt->close();

if ($count > 0 ) {... user exists - can login him...

使用MySQLi扩展:

$db_user='user';
$db_pass='pass';
$db_server='localhost';
$db_database='database';

$mysqli = new mysqli($db_server, $db_user, $db_pass, $db_database);
if ($mysqli->connect_error){
  die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
}

    // Login (Query)
$stmt = $mysqli->prepare("SELECT count(*) FROM $MySQLi_Users_Table WHERE username=? AND password=?");
$stmt->bindParam('ss', $Username, $Password);
$stmt->bindResult($count);
$stmt->execute();
$stmt->fetch();
$stmt->close();

if ($count > 0 ) {... user exists - can login him...

几乎。md5不再被认为是安全的哈希函数。使用
密码\u散列()
。除此之外,您还可以继续。这里有您的问题的答案。还有一件事,您正在使用
session_start()两次。你会得到一个关于会话已经开始的通知;如果您的系统设置为捕捉/显示通知/警告/错误。@Fred ii-非常感谢您的建议,我肯定会将MD5更改为password_hash()。将在早上检查如何使用该功能。哦,是的,我明白你对重复会议的看法(我们应该说愚蠢的时刻lol)。。我会找人来帮我整合PayPal的并行支付与购物车,所以如果你认为你能帮助我,请让我知道,我会联系的价格,一旦我完成重写我的所有网站使用mysqli_*的。我对你感激不尽。干杯。欢迎你,克里斯托弗,干杯,欢迎回到编码者的世界;-)几乎。md5不再被认为是安全的哈希函数。使用
密码\u散列()
。除此之外,您还可以继续。这里有您的问题的答案。还有一件事,您正在使用
session_start()两次。你会得到一个关于会话已经开始的通知;如果您的系统设置为捕捉/显示通知/警告/错误。@Fred ii-非常感谢您的建议,我肯定会将MD5更改为password_hash()。将在早上检查如何使用该功能。哦,是的,我明白你对重复会议的看法(我们应该说愚蠢的时刻lol)。。我会找人来帮我整合PayPal的并行支付与购物车,所以如果你认为你能帮助我,请让我知道,我会联系的价格,一旦我完成重写我的所有网站使用mysqli_*的。我对你感激不尽。干杯。欢迎你,克里斯托弗,干杯,欢迎回到编码者的世界;-)
$db_user='user';
$db_pass='pass';
$db_server='localhost';
$db_database='database';

$mysqli = new mysqli($db_server, $db_user, $db_pass, $db_database);
if ($mysqli->connect_error){
  die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
}

    // Login (Query)
$stmt = $mysqli->prepare("SELECT count(*) FROM $MySQLi_Users_Table WHERE username=? AND password=?");
$stmt->bindParam('ss', $Username, $Password);
$stmt->bindResult($count);
$stmt->execute();
$stmt->fetch();
$stmt->close();

if ($count > 0 ) {... user exists - can login him...