php - 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");
}
?>
解决方案
您的代码在 $_POST 数组而不是 $_GET 中查找
if (isset($_GET['vkey'])) {
$vkey = $_GET['vkey'];
推荐阅读
- latex - pandoc 的 markdown pdf:字体大小为 11 或 12pt 会增大字体,但 13 或 14pt 会变小
- node.js - 更新 mongoDB 中的深层嵌套数组(不是文档/对象数组)
- java - 如何将模型的对象传递给 thymeleaf,并将控制器隐藏在 thymeleaf 中?
- html - 在闪亮中返回上一个链接
- aws-lambda - 雪花的异步外部函数不尊重 HttpStatus 429
- javascript - 带有对象解构的下一个 js 动态导入
- javascript - 无法使用 Angular 多次上传同一个文件
- postgresql - 如何复制特定分区表
- java - WebRTC Android 原生可插入流
- javascript - 如何解决reactjs中的noscript渲染问题