我正在尝试创建一个能够获取API和API的激活页面。来自网址的ACT代码。
然后我尝试在这些代码上查询数据库以检查它们是否有效。
如果它们无效,我想回复说明echo "<strong><font color=red>Your Activation Code has Expired, or Your Activation Code is not Valid!</font></strong>";
如果有效,那么我想使用2nd SQL Query - "UPDATE users SET status='1', date_activated='$Activation_Date', Activation='' WHERE Activation='$Activation' AND API='$API' AND status='0'"
如果网址中没有API&amp; ACT代码,我想回复一下&#34;内容&#34;
<?
require 'admin/config.php';
require 'Connection.php';
error_reporting(E_ALL);
$API = $_REQUEST['api'];
$Activation = $_REQUEST['act'];
$sql= mysql_query("SELECT * WHERE Activation='$Activation'");
if ($sql = 0) { echo"ERROR";}
else {
$Activation_Date = date('m-j-y - h-iA');
$sql = mysql_query("UPDATE users
SET status='1', date_activated='$Activation_Date', Activation=''
WHERE Activation='$Activation' AND API='$API' AND status='0'");
if($sql == 0){
echo "<strong><font color=red>Your Activation Code has Expired, or Your Activation Code is not Valid!</font></strong>";
} elseif ($sql > 0) {
echo "content";
}
}
?>
答案 0 :(得分:6)
您需要检查的是,是否存在行。
要检查它是否存在并基于以下型号:
$sql = mysql_query("SELECT * WHERE Activation='$Activation'");
if(mysql_num_rows($sql) > 0){
//do something here or show error because relation already exists
}
else{
//relation already do not exists. so you can insert the record here
}
然后,要检查您的UPDATE是否真的成功,请使用mysql_affected_rows()
:
旁注:此函数可能要求您将db连接变量传递给它。
$sql = mysql_query("UPDATE users .... ");
if(mysql_affected_rows() > 0){
// do something
}
else {
// do something else
}
检查PHP和MySQL的错误:
在打开PHP标记后立即将错误报告添加到文件的顶部
例如<?php error_reporting(E_ALL); ini_set('display_errors', 1);
然后代码的其余部分,看它是否产生任何结果。
同时将or die(mysql_error())
添加到mysql_query()
。
如果您收到有关弃用通知的错误,则需要切换到mysqli_
或PDO。
您可以在https://stackoverflow.com/a/22253579/1415724查阅我的一个答案,以检查是否存在行。
它使用了一些方法,包括一个准备好的语句,这是你应该使用的,因为你可以使用SQL注入。
旁注:您使用的连接API未知。确保您使用的查询与mysql_
的查询相同。如果它是mysqli_
或PDO,那些不同的API不会混用。您必须使用相同的连接到查询。
另外,只是关于if ($sql = 0)
的快速说明。单个等号&#34;指定&#34;而不是&#34;比较&#34;例如==
或===
。
你在评论中说:
&#34;如果激活码处于活动状态(md5将存在)&#34;
我希望您不要将其用于密码存储。如果是这样,请不要。该功能不再可以安全地用来存储密码。
使用以下其中一项:
crypt()
bcrypt()
scrypt()
password_hash()
功能。其他链接:
查看<?
确保启用了短标记。如果没有,请将其更改为<?php
。
HTML stickler。
<font color=red>
{@ 1}}标记已弃用/已废弃,HTML5不支持。
如果您通过电子邮件发送任何内容,最好使用内联CSS。
即:<font>
以下是一些参考文献:
答案 1 :(得分:1)
// Get parameters and check if mandatory parameters are set
$API = isset($_REQUEST['api']) ? $_REQUEST['api'] : false;
$Activation = isset($_REQUEST['act']) ? $_REQUEST['act'] : false;
if ( ($API===false) || ($Activation===false)) {
$which = ($API === false ) ? '"api"' : '';
$which .= ($Activation === false) ? ((empty($which) ? '' : ', ') . '"act"') : '';
echo "ERROR: Parameter(s) missing: $which";
return;
}
// Select activation record
$sql= mysql_query("SELECT * FROM users WHERE Activation='$Activation'");
if ($sql===false) {
echo "SQL ERROR: " . mysql_error();
return;
} else {
$nrows = mysql_num_rows();
mysql_free_result($sql);
if ($nrows < 1) {
// No matching record found
echo "ERROR: No activation record found";
return;
} else {
// Update users record
$Activation_Date = date('m-j-y - h-iA');
$sql = mysql_query("UPDATE users
SET status='1', date_activated='$Activation_Date', Activation=''
WHERE Activation='$Activation' AND API='$API' AND status='0'");
if ($sql===false) {
echo "SQL ERROR: " . mysql_error();
} elseif(mysql_affected_rows() < 1) {
// No matching record found for updating
echo '<span style="color:red; font-weight:bold;">Your Activation Code has Expired, or Your Activation Code is not Valid!</span>';
} else {
echo "content";
}
}
}
答案 2 :(得分:0)
这是我最终的结果。
这是来自@ hherger答案的调整....
// Report all errors
error_reporting(E_ALL);
// Get parameters and check if mandatory parameters are set // Get parameters and check if mandatory parameters are set
$API = isset($_REQUEST['api']) ? $_REQUEST['api'] : false;
$Activation = isset($_REQUEST['act']) ? $_REQUEST['act'] : false;
if ( ($API===false) || ($Activation===false)) {
}
// Select activation record
$sql= mysql_query("SELECT * FROM users WHERE Activation='$Activation'");
if ($sql===false) {
echo "SQL ERROR: " . mysql_error();
return;
} else {
$nrows = mysql_num_rows($sql);
mysql_free_result($sql);
if ($nrows < 1) {
// No matching record found
echo "REDIRECT USER TO HOME PAGE";
return;
} else {
// Update users record
$Activation_Date = date('m-j-y - h-iA');
$sql = mysql_query("UPDATE users
SET status='1', date_activated='$Activation_Date', Activation=''
WHERE pinAPP_Activation='$Activation' AND API='$API' AND status='0'");
if ($sql===false) {
echo "SQL ERROR: " . mysql_error();
} elseif(mysql_affected_rows() < 1) {
// No matching record found for updating
echo '<span style="color:red; font-weight:bold;">Your Activation Code has Expired, or Your Activation Code is not Valid!</span>';
} else {
echo "ECHO SUCCESS DISPLAY!";
}
}
}