2016-04-21 101 views
-2

访问者来到我的网页throught自定义网址,e.g:显示不同的HTML内容根据URL

http://domain.com/dMtYdMRZ%40dispostable.org

域名之后的部分代表用户的电子邮件地址。我不知何故需要提取这部分,并检查数据库中是否存在此电子邮件地址。

如果存在,用户将会看到一个网页表单,在index.php网站上提交一些数据,如果没有,他将被通知他没有资格查看表单,也可以在index.php网站上获得。

我在问一些关于如何解决这个问题的指南,因为我在PHP中很新鲜,所有带有添加电子邮件参数的URL都是404。我是否需要重定向到index.php或者什么?我完全迷失了。所有帮助非常感谢。

+0

阅读php文档,特别是关于$ _SERVER ['REQUEST_URI'] –

+0

使用服务器重写规则将电子邮件地址移动到查询字符串参数,以便您可以使用'$ _GET'在PHP中处理它。 – Barmar

回答

0

所以首先,我不建议你通过URL传递电子邮件。如果你决定,你想通过URL来传递电子邮件,那么最好使用查询字符串,例如:

http://www.foo.com/index.php?email=useremailhere

查询字符串后的整体的一部分“?”:email=useremailhere

为了获取URL的那poriton,你在你的PHP代码做的是:

的index.php:

<?php 
$email = $_GET['email']; 
echo "Users email is = ".$email."<br>"; 
?> 

要检查你在数据库中有什么信息,我推荐使用MySQL(PDO)。网上有很多教程。什么的MySQL(PDO)是是PHP与SQL相结合,使用户能够做很多动作在数据库中,包括(但不限于):

  • 创建表
  • 从表中检索数据
  • 内表插入数据
  • 删除表

有了这样从表中检索数据的操作,就能够检查是否有电子邮件已经在你的数据库中注册的命令像:

$sql = "SELECT * FROM table WHERE email = user_email"; 
$stmt = $conn->prepare($sql); 
$stmt->paramBind(':user_email',$email); 
$stmt->execute(); 

而且你可以看到,如果电子邮件类似MySQL的代码存在:

if ($stmt->rowCount()>=1) 
{ 
    //... 
} 

现在我建议你:

  1. 获取查询字符串部分工作
  2. 关于如何使用MySQL(PDO)的研究
0

不知道你如何安排你的数据库中的数据,但一旦你有URI信息,你应该能够做这样的事 $_SERVER['REQUEST_URI']将加载URL路径或指数..

<?php 
    if($_SERVER['REQUEST_URI'] is in database){ 
     //load the page form 
    } 
    else{ 
     //load access denied 
    } 
?>