如何使用 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 中?的主要内容,如果未能解决你的问题,请参考以下文章

如何删除 php 扩展并将扩展重定向到无扩展表单

使用 rewrite_mod 将 index.php 重定向到 root,并将 www 重定向到非 www [重复]

如何在 ModelAndView 中使用重定向

不使用301而是使用PHP脚本进行重定向,是吗?

我如何跟踪访问者的国家并将他们重定向到适当的站点?

如何在 PHP 中登录页面后将用户重定向回所需的 URL?