重定向用户的邀请/推荐系统

时间:2014-07-29 20:46:06

标签: php mysql redirect

我创建了一个邀请/推荐系统,允许用户通过输入电子邮件地址邀请某人,电子邮件和随机邀请代码存储在'推荐'表。然后,通过电子邮件和URL链接中唯一的10个字符的邀请代码向该人发送电子邮件,例如www.website.com/register.php?email=(EMAILADDRESS)及invite_code = 1234567890

  • 我做了一些更改,现在应该将以下脚本重定向到register.php,如果没有则返回主页。

我已对此进行了测试,即使使用有效的URL链接,用户仍会重定向到index.php页面。 (这也不会阻止用户手动访问register.php)

表详情='推介' ID |网址|点击|电子邮件| inviteCode

我已经设法让页面重定向,但如果他们的电子邮件有实际的邀请代码,那就不好了。

这是我过去几天修改的脚本,试图让它起作用:

 <?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) //check if values are correct and available in database
   {
     header('Location: register.php');
       }
     else
         {
     header('Location: index.php');
     exit;
         }
   }
else
   {
header('Location: index.php'); //Page not accessible if neither email nor referral entered
   }

?>

应该是直截了当的,请查看电子邮件的网址&#39; &安培; &#39; inviteCode&#39;如果已被邀请,则与表进行比较,如果不重定向,则允许访问该页面。 &LT;通过更新,它们应该重定向到register.php或index.php。如果没有邀请访问,这不会停止访问register.php。

2 个答案:

答案 0 :(得分:1)

假设问题中的脚本名为register.php且脚本命中此行:

header('Location: register.php');

浏览器会将用户重定向回同一页面,这次查询字符串将不包含电子邮件并注册验证码。此时,register.php脚本将重定向到index.php页面(使其看起来像验证失败)。

当您的电子邮件地址和身份验证代码有效时,您要做的是将用户重定向到welcome.php

welcome.php可能包含以下内容:

<?php
echo 'Your invitation was validated';

并在register.php中更改

header('Location: register.php');header('Location: welcome.php');

答案 1 :(得分:0)

我知道这是一个3岁的问题,但您的代码中仍有一些明显的错误。

例如 你说网址是www.website.com/register.php?email=(emailaddress)&invite_code=1234567890,在你的PHP代码中,你会找到$_GET['inviteCode']。因此,您的网址应该是www.website.com/register.php?email=(emailaddress)&inviteCode=1234567890

现在,它将进入第一个if语句并被查找。然而正如Sean和robbmj所提到的,你现在只是在没有你的GET参数的情况下重定向到同一页面,这意味着它不会输入第一个if语句,直接转到重定向到索引的else。

您应该做的是在if语句中包含您的注册表单,以检查数据库中是否存在代码和电子邮件。而不是header('Location: register.php');