gpt4 book ai didi

php - MySQL php 登录

转载 作者:行者123 更新时间:2023-11-29 11:14:55 25 4
gpt4 key购买 nike

我尝试检查激活链接是否有效或无效,但是即使激活 token 或电子邮件不正确,我总是从我的代码中获取 $activated_message。我的 sql 语句或函数有什么问题?谢谢

<?php
include("mysql_functions.php");

// Check if all fields are not empty.
if (!empty($_GET['email']) && !empty($_GET['activation_token'])) {

// MySQL database select query.
$mysql_select_query = "SELECT * FROM Accounts WHERE email='" . $_GET['email'] . "' AND activation_token='" . $_GET['activation_token'] . "' AND activated='0' LIMIT 1";

// Execute the MySQL database select query and check if POST password matches MySQL database hashed password.
if(mysql_execute_query($mysql_server, $mysql_username, $mysql_password, $mysql_database_name, $mysql_select_query, false)) {
// Valid activation link.
// MySQL database update query.
$mysql_update_query = "UPDATE Accounts SET activated='1' WHERE email='" . $_GET['email'] . "' AND activation_token='" . $_GET['activation_token'] . "' AND activated='0' LIMIT 1";

// Execute the MySQL database update query to activate the account and check if it is successful.
if (mysql_execute_query($mysql_server, $mysql_username, $mysql_password, $mysql_database_name, $mysql_update_query, false)) {
// The account was successfully activated.
echo $activated_message;
} else {
echo $not_activated_message;
}
} else {
// Invalid activation link.
echo $invalid_activation_link;
}
} else {
echo $not_activated_message;
}

// ------------------------ FUNCTION: MYSQL QUERY EXECUTOR -----------------------

// Function for executing MySQL queries.
function mysql_execute_query($mysql_server, $mysql_username, $mysql_password, $mysql_database_name, $mysql_query, $return_mysql_query_result_boolean) {

// Create the MySQL database connection.
$mysql_database_connection = mysqli_connect($mysql_server, $mysql_username, $mysql_password, $mysql_database_name);

// Check if connected to MySQL database.
if ($mysql_database_connection) {
// Connected to the MySQL database.

// Execute the MySQL query.
if ($mysql_query_result = mysqli_query($mysql_database_connection, $mysql_query)) {
// MySQL query has executed successfully.

// Check if any data needs to be returned.
if ($return_mysql_query_result_boolean) {
// Get an associated array from the MySQL result.
$mysql_query_result = mysqli_fetch_assoc($mysql_query_result);
}

// Close the MySQL database connection.
mysqli_close($mysql_database_connection);

// Return the MySQL query result.
return $mysql_query_result;

} else {
// MySQL query has not executed successfully.
echo "Error: " . mysqli_error($mysql_database_connection);
return false;
}

} else {
// Could not connect to the MySQL database.
die("Error connecting to MySQL database: " . mysqli_connect_error());
return false;
}
}

?>

最佳答案

问题在于,当给定的查询正确时,mysql_execute_query 总是返回解析为 TRUE 的结果。

您应该阅读 select 语句的结果,并以此为基础制定逻辑,而不是基于查询是否有效这一事实。

话虽如此,您的代码有很多错误:

  • 主代码中的嵌套 if 结构可读性或维护性较差
  • 您对 SQL 注入(inject)攻击持开放态度,请查看 prepared statements
  • 不需要为每个查询连接到数据库

希望我能帮到你一点,祝你好运,编码愉快!

关于php - MySQL php 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39910900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com