2015-09-24 47 views
1

我想對存儲在mysql數據庫中的驗證密鑰進行網頁檢查。在數據庫中我有1000個序列號存儲。檢查以驗證序列號

當序列號得到驗證後,我想讓它返回到頁面,而不再問我一個序列號。

這是我到目前爲止有:

<?php 
require 'keygen-connect.php'; 
$key = addslashes(htmlentities($_GET['key'])); 
if ($key == "") { 
die("No key found"); 
} 
$query = "SELECT * FROM `keys` WHERE key='".$key."'"; 
$result = mysql_query($query) or die("Could not execute query"); 
if (mysql_num_rows($result) > 0) { 
echo "Key valid"; 
// Setting the key activated 
$query = "UPDATE `keys` SET activation='yes' WHERE `key`='".$key."'"; 
$result = mysql_query($query); 
} else { 
echo "Key invalid"; 
} 
?> 

這被保存爲名爲「凱基-validate.php」我的服務器上的文件。這個文件將連接到我的數據庫並查看序列號以確保它沒問題。

我遇到問題的部分是告訴我的頁面通過keygen-validation.php文件運行序列號的部分。

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    <?php 
    // what do I need to put here to have this page run this serial number 
    784a97bf1955d5f7a2b9dd6c1e371e17b73c42bc 
    through the keygen-validation.php file? 
    ?> 
    </head> 
    <body> 
    </body> 
</html> 

我還應該補充一點,這是爲了簡單。我不需要昂貴的選擇。我相信人們可以輕易地做出迴避我努力的事情,但這與其他任何事情一樣,都是一個學習項目。

感謝

而且,它已經指出,我需要更新到PDO ...所以,是的,我正在上:)

+0

[您的腳本存在SQL注入攻擊風險。](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –

+2

如果可以的話,你應該[停止使用'mysql_ *'函數](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)。 [這些擴展](http://php.net/manual/en/migration70.removed-exts-sapis。PHP)已在PHP 7中刪除。瞭解[編寫]​​(http://en.wikipedia.org/wiki/Prepared_statement)對於[PDO]的聲明(http://php.net/manual/en/pdo.prepared -statements.php)和[MySQLi](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php),並考慮使用PDO,[這真的不難](http:// jayblanchard。淨/ demystifying_php_pdo.html)。 –

+0

'key ='%20or%201%3D1'這個在你的URL中會激活所有的鍵 – SparK

回答

0

PHP是你的前置式完全沒有必要結束。所有你需要的是一個<form>帶有輸入的密鑰,它提交給你的PHP腳本進行後端處理。

<form action="keygen-validate.php"> 
    <input type="text" name="key"> 
    ... 

提交的值將根據需要到達您的PHP文件$_GET['key']

+0

得到什麼OP在腳本頭想要作爲驗證的一種手段我猜? – SparK

+0

我可以按照您的建議將它用於表單,但我真正需要的是在將某個數字驗證爲「良好」後將我返回到原始頁面,而不再詢問我的序列號。 – KulerGary

+0

@KulerGary這是一個更大的問題,你問過的人。 – meagar

0

由於您正在使用GET,因此您可以使用表單和GET操作提交數據。

因此,舉例來說:

<form action="keygen-validate.php" method="get"> Serial Number:<br /> <input type="*inputType*" name="*key*" /> </form>

這樣,GET可以檢索你的 '鑰匙' 參數。

我在相當一段時間內沒有對PHP做任何事情,所以有人可以隨時糾正/擴大這個。

0

如果你要檢查每一個頁面加載的序列密鑰和序列密鑰已在URL中所有你需要做的是include你的腳本,而不是呼應了「無效鍵」的結果你叫exit()或設置一個header()正確的401錯誤。

實現您想要的其他方法是將function中的驗證用$key參數表包裝起來,而不是從$_GET中讀取。 然後在您的頁面上include您的腳本,並呼叫它的function$key值傳遞給它。