首页 > 解决方案 > PHP isset GET中的唯一标识符链接值接收失败

问题描述

我正在尝试通过电子邮件向用户发送唯一标识符链接来验证注册。

我从远程服务器使用它。服务器,用户名,密码,数据库值是正确的,与其他.php-s 一起工作正常,唯一的区别verify.php是包含连接 require 'connection.php';,但我不确定连接是否会产生以下失败。

发送:

$message = "<p>Hello, dear $user</p><a href='https://mypage.info/php/reg/verify.php?vkey=$vkey'>Confirm Account</a>";

并通过电子邮件接收:

https://mypage.info/php/reg/verify.php?vkey=4bf65cf02210b304143589e6dc3714c0

链接到verify.php,但php会抛出Something went wrong,或者如果相反,die我将检查echo 'VKey: '. $vkey;echo $mysqli->error;不显示任何内容。

似乎由于某种原因if (isset($_GET['vkey']))没有vkey正确接收。我不确定我在这里做错了什么:

警报!此示例代码显示了不安全的方法,因为直接从用户输入接受 SQL 参数。需要准备好的语句和绑定参数real_escape_string()

<?php
  if (isset($_GET['vkey'])) {
     $vkey = $_GET['vkey'];
     $mysqli = NEW MySQLi ('server','username','password','db');
     $resultSet = $mysqli->query("SELECT verified, vkey FROM registration WHERE verified = 0 AND vkey = '$vkey' LIMIT 1");

     if ($resultSet->num_rows == 1)
     {
         $update = $mysqli->query("UPDATE registration SET verified = 1 WHERE vkey = '$vkey' LIMIT 1");

         if($update){
            echo "Your account has been verified. You may now login.";
         } else {
            echo $mysqli->error;
         }
     } 
     else 
     {
         echo "This account invalid or already verified";
     }
    } else {
     die("Something went wrong");
  }
?>

标签: phphtml-emailuniqueidentifier

解决方案


您的代码在 $_POST 数组而不是 $_GET 中查找

  if (isset($_GET['vkey'])) {
     $vkey = $_GET['vkey'];

推荐阅读