PHP if if条件验证

Kra*_*ray 1 php mysql

我正在尝试创建一个激活页面,该页面将从URL获取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'"

如果URL中没有API和ACT代码,我想回复"内容"

   <?
    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";
    }
    }
    ?>
Run Code Online (Sandbox Code Playgroud)

Fun*_*ner 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
}
Run Code Online (Sandbox Code Playgroud)

然后,要检查您的UPDATE是否真的成功,请使用mysql_affected_rows():

旁注:此函数可能要求您将db连接变量传递给它.

$sql = mysql_query("UPDATE users .... ");

if(mysql_affected_rows() > 0){

   // do something
   }

else {
   // do something else
   }
Run Code Online (Sandbox Code Playgroud)

检查PHP和MySQL的错误:

在打开PHP标记之后立即将错误报告添加到文件的顶部,例如<?php error_reporting(E_ALL); ini_set('display_errors', 1);代码的其余部分,以查看它是否产生任何结果.还添加or die(mysql_error())mysql_query().

如果您收到有关弃用通知的错误,则需要切换到mysqli_PDO或PDO.

您可以在/sf/answers/1557750561/查询我的一个答案,检查是否存在行.

它使用了一些方法,包括一个准备好的语句,这是你应该使用的,因为你可以使用SQL注入.

旁注:您使用的连接API未知.确保您使用与查询相同的一个mysql_.如果是mysqli_PDO或PDO,那些不同的API不会混用.您必须使用相同的连接到查询.

此外,只是一个快速说明if ($sql = 0).单个等号"分配"而不是"比较",如=====.


你在评论中说:

"如果激活码有效(md5将存在)"

我希望你不要用它来存储密码.如果是这样,不要.该功能不再可用于存储密码.

使用以下之一:

其他链接:


看到<?确保启用了短标签.如果没有,请将其更改为<?php.

HTML stickler.

<font color=red><font>标签被弃用/ obsole而不是由HTML5支持.

如果您通过电子邮件发送任何内容,最好使用内联CSS.

即: <p style="color:red;">Hello world</p>

以下是一些参考: