【发布时间】:2014-07-30 00:33:51
【问题描述】:
我创建了一个脚本供用户使用电子邮件地址邀请朋友,电子邮件地址和随机生成的 10 个字符的字符串“inviteCode”被发送到名为“referrals”的表中。
然后受邀者会收到一封电子邮件,其中包含一个 URL 链接,其中包含他们的电子邮件和他们唯一的邀请代码; http://website.com/register.php?email=email&inviteCode=1234567890
当用户点击链接时,页面 register.php 应该检查 URL 以及他们的数据在“推荐”表中是否有效。如果是这样,那么我有一个包含行来添加注册表单,如果没有,那么它们将被重定向。关键是没有人可以访问 register.php,除非他们被邀请并发送了链接。
此时页面不断重定向到 index.php;
Register.php 脚本:
<?php
include 'config.php';
if (isset($_GET['email'],$_GET['inviteCode'])) {
$mysqli = new Mysqli(/* your connection */);
$email = $mysqli->real_escape_string($_GET['email']);
$inviteCode = $mysqli->real_escape_string($_GET['inviteCode']);
$sql = "SELECT email,inviteCode FROM referrals WHERE email='".$email."' AND inviteCode='".$inviteCode."'";
$query = $mysqli->query($sql);
if ($query->num_rows > 0) { //check if values are correct and available in database
echo 'lol';
}
else
{
echo 'no';
exit;
}
}
else
{
echo 'problem'; //Page not accessible if neither email nor referral entered
}
?>
我将第一个 if 语句替换为:
if(!isset($_GET['email']) || !isset($_GET['inviteCode'])) {
die(header('Location: index.php'));
} else
我收到一个没有错误的空白页。我认为未设置电子邮件和邀请码可能有问题。
对此的任何帮助将不胜感激(Y)谢谢。
【问题讨论】:
-
在每个重定向中,将它们更改为
die(random message);以查看引发重定向的条件。 -
我确实怀疑它的
if($mysql->num_rows) -
@Darren 第二个 else 语句似乎在强制重定向;当我把它拿出来时,脚本不包含文件,我什至检查了 URL 字符串;因为如果我手动输入 /register.php 我可以访问该页面;我应该被重定向。
-
@Darren 我很抱歉,我在访问该页面时仍然只是得到一个空白页面。没想到会有这么多bug,只要url和表数据匹配就一个简单的if和else语句