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