0

我在一个名为收藏夹的用户个人资料上有一个链接。另一个用户可以单击此按钮,该用户将被添加到他们的收藏夹列表中。

链接收藏夹转到收藏夹.php,此代码在其中处理查询:

<?php

require_once('includes/session.php');
require_once('includes/functions.php');
require('includes/_config/connection.php');


session_start();


    confirm_logged_in();




    if (isset ($_GET['to'])) {
    $user_to_id = $_GET['to'];


}


if (!isset($_GET['to']))
    exit('No user specified.');

$user_id = $_GET['to'];

$result = mysql_query("INSERT INTO ptb_favorites (user_id, favorite_id) VALUES (".$_SESSION['user_id'].", ".$user_to_id.")") 
or die(mysql_error()); 

header("Location: profile.php" . $_SERVER['HTTP_REFERRER']);


?>

因此,一旦此过程完成,我的目标是让标头将用户带回 profile.php(上一页),同时使用 $_SERVER['HTTP_REFERRER'] 调用用户 ID。

因此,如果用户 id 为 16,它会将他们重定向回 profile.php?id=16

相反,它只是重定向到 profile.php 并且不包括该配置文件的 id。

有人可以告诉我是否有办法做到这一点,如果我的方式完全正确,为什么它不起作用?

谢谢

4

2 回答 2

1

我想你正在寻找:

header("Location: profile.php?id=" . $_SESSION['user_id']);

ps你的代码不安全。阅读有关 SQL 注入的信息。切换到 MySQLi 或 PDO

于 2012-12-27T01:34:58.837 回答
0

HTTP_REFERRER 不是这样写的,它是 HTTP_REFERER (1 R)。它包含用户来自的页面,因此 header("Location: profile.php" . $_SERVER['HTTP_REFERRER']) 不应该工作。你应该这样做:

header("Location:" . $_SERVER['HTTP_REFERRER']);

但是 HTTP_REFERRER 不是很可靠,你应该使用:

header("Location: profile.php?id=" . $user_to_id);

您应该将最后一个选项更改为您的网站如何构建链接,我们只是从您的示例中假设的。

此外,您正在设置变量 $user_id = $_GET['to'] 但您正在使用 $user_to_id 插入数据库。

另外你的代码很容易被破解,请不要这样使用,查看 PDO 或 Mysqli 函数。

于 2012-12-27T02:08:18.050 回答