如何使用 PHP 重定向并将链接保存在 SQL 中?
Posted
技术标签:
【中文标题】如何使用 PHP 重定向并将链接保存在 SQL 中?【英文标题】:How do I redirect with PHP and save the link in SQL? 【发布时间】:2015-11-22 20:59:59 【问题描述】:我有 XAMPP,我想编写一个简单的 php 页面,它将我重定向到我指定的链接,并将链接保存在 SQL 数据库中。
假设我想访问 www.google.com:
我会去类似的地方:
localhost:80/redirect.php?url=https://google.com
PHP 会将我重定向到那里,并将 www.google.com 链接保存在 SQL 表中。
你能帮帮我吗?
【问题讨论】:
到目前为止你得到了什么?$_GET['url']
header() 重定向。
你尝试了什么?你遇到了什么错误?
【参考方案1】:
考虑到你是如何形成你的问题的,看起来你有一个想法,只是希望有人在你不付出努力的情况下给你解决方案(如果我错了,请纠正我,但这就是它的接缝方式...)
您要完成的任务很简单,只有为您指明正确的方向才公平。您的“任务”可以分解为几个较小的任务:
-
创建用于存储数据的数据库/表| PHP Create mysql Tables
Get URL parameter in PHP
PHP Insert Data Into MySQL
How to make a redirect in PHP
对不起,如果这不是您正在寻找的那种答案,但我认为这个网站的目的是让人们学习一些东西,而不仅仅是复制+粘贴。提供的链接可用于解决您的任务问题。
【讨论】:
我被困在这里:$sql = "INSERT INTO log (link, last_visit_date, visit_count) VALUES ($link, $datetime, 1) ON DUPLICATE KEY UPDATE last_visit_date = $datetime, visit_count = visit_count + 1";但 属于 TEXT/VARCHAR(256) 并且不能是 PRIMARY KEY。 我也卡在这里:$sql = "REPLACE INTO log (link, last_visit_date, visit_count) SELECT ($link, $datetime, 1) ON DUPLICATE KEY UPDATE last_visit_date = $datetime, visit_count =访问次数 + 1 ";因为 属于 TEXT/VARCHAR(256) 并且不能是 PRIMARY KEY 最后,我被困在这里: $sql = "IF EXISTS (SELECT * FROM logging WHERE link=$link) THEN UPDATE log SET last_visit_date = $datetime, visit_count = visit_count + 1 WHERE link =$link ELSE INSERT INTO log (link, last_visit_date, visit_count) VALUES ($link , $datetime , 1) END IF";【参考方案2】:这是我想出来的,在 MySQLi 面向对象没有验证这个之后:
$sql = "SELECT * FROM logging WHERE link=$link";
if ($conn->query($sql) === TRUE)
它有时仍会使访问次数增加 +2。我不知道为什么。
<?php
$servername = " ";
$username = " ";
$password = " ";
$dbname = " ";
$datetime = date_create()->format('Y-m-d H:i:s');
$datetime = "'".$datetime."'";
$link_clean = $_GET['link'];
$link = "'".$link_clean."'";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn)
die("Connection failed: " . mysqli_connect_error());
$sql = "SELECT * FROM logging WHERE link=$link";
if ($result = mysqli_query($conn, $sql))
if(mysqli_num_rows($result)>0)
$sql="UPDATE logging SET last_visit_date = $datetime, visit_count = visit_count + 1 WHERE link=$link";
if (mysqli_query($conn, $sql))
$conn->close();
header("Location: https://$link_clean");
exit;
else
echo "1Error: " . $sql . "<br>" . mysqli_error($conn);
$conn->close();
exit;
else
$sql="INSERT INTO logging (link, last_visit_date, visit_count) VALUES ($link , $datetime , 1)";
if (mysqli_query($conn, $sql))
mysqli_close($conn);
header("Location: https://$link_clean");
exit;
else
echo "2Error: " . $sql . "<br>" . mysqli_error($conn);
mysqli_close($conn);
exit;
else
echo "3Error: " . $sql . "<br>" . mysqli_error($conn);
mysqli_close($conn);
?>
【讨论】:
以上是关于如何使用 PHP 重定向并将链接保存在 SQL 中?的主要内容,如果未能解决你的问题,请参考以下文章