2016-04-21 32 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 
    } 
?>