【问题标题】:PHP IF message is not being printedPHP IF 消息未打印
【发布时间】:2023-03-23 00:56:02
【问题描述】:

我有一个带有电子邮件确认的注册脚本,它的工作几乎没有问题。 用户信息首先从表单发送到“临时”表,当他点击电子邮件确认链接时,信息从“临时”表发送到最终目的地“印度”表。

确认链接是一个名为“confirmation.php”的文件。

虽然代码将数据从一个表发送到另一个表,但它没有打印消息“Obrigado, o seu registo foi validado.”,葡萄牙语表示“谢谢,您的注册现已验证”。我做错了什么?

谢谢!

确认.php

<?php
include_once ('config.php');

$confirm_code = $_GET["confirm_code"];

$sql1 = mysqli_query($conn, "SELECT * FROM temp WHERE confirm_code = '$confirm_code'");
$result1= mysqli_fetch_array($sql1, MYSQLI_ASSOC);

if(mysqli_num_rows($sql1) == 1) {
    $query = mysqli_query($conn, "INSERT INTO india (confirm_code, name, password, email) SELECT confirm_code, name, password, email FROM temp WHERE confirm_code = '$confirm_code'");

    if($query) {
        $del = mysqli_query($conn, "DELETE FROM temp WHERE confirm_code = '$confirm_code'");
        if($del) {
            $msg = "Obrigado, o seu registo foi validado.";
        }    
    }   
} else {
    $msg2 = "Erro no registo";
}   
$conn->close();
?>

【问题讨论】:

  • 请缩进这样不可读的php代码。
  • 如果您使用 mysqli 函数,出于安全考虑,您也可以bind your parameters,而不是在查询中随意转储变量。
  • 您为消息设置了两个变量,但没有打印出此脚本中的值。
  • 你展示了部分代码。这里没有打印你只设置变量。变量的名称也不同。

标签: php mysql forms


【解决方案1】:

您应该使用结果变量而不是 if(mysqli_num_rows($sql1) == 1) {if(mysqli_num_rows($result1) == 1) {

还请使用参数化查询,如How can I prevent SQL injection in PHP? 中所述

【讨论】:

    【解决方案2】:

    试试mysqli_query($conn, "DELETE FROM temp WHERE confirm_code = '$confirm_code'");

    在这样的 if 条件下:(我认为你错过了打印)

    if(mysqli_query($conn, "DELETE FROM temp WHERE confirm_code = '$confirm_code'"))`
    { 
      $msg = "Obrigado, o seu registo foi validado.";
     echo $msg;
    }
    

    【讨论】:

    • 最好在if 语句之外回显$msg,因为如果注册不成功,$msg 会设置为其他值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 2023-01-17
    • 2016-11-18
    • 1970-01-01
    相关资源
    最近更新 更多