簡體   English   中英

建立一次性鏈接

[英]Make a one-time link

我想知道是否可以在 php 中創建一個鏈接,一旦用戶使用它就會發出 mysql 請求,因此請確保該鏈接不可重復使用,例如通過令牌系統。

$bdd = new PDO("mysql:host=localhost;dbname=onetimeurl", 'root', '');

$bytes = openssl_random_pseudo_bytes(16, $cstrong);
$hex   = bin2hex($bytes);
$sql = "INSERT INTO links (link, solde) VALUES ('$hex','10')";
$bdd->exec($sql);

$select = "SELECT * FROM links";
$result = $bdd->query($select);

while($row = $result->fetch()) {
}

if($_GET['hash'] == $row['link']) {
    echo "You have been credited";
} else {
    echo "This link to already was used";
}
$bdd = new PDO("mysql:host=localhost;dbname=onetimeurl", 'root', '');

$rand = bin2hex(openssl_random_pseudo_bytes(16, $cstrong));

$bdd->exec("INSERT INTO links (link, solde) VALUES ('".rand()."','10');");

$result = $bdd->query("SELECT * FROM links WHERE link='".$_GET['hash']."';");

$row = $result->fetch();

if(empty($row)) {
    echo "This link is not valid";
} else {
    echo "You have been credited";
    $bdd->exec("DELETE FROM links WHERE link='".$_GET['hash']."';");
}

這是解決方案,但此示例代碼不安全

使用bindValue防止SQL 注入攻擊

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM