gpt4 book ai didi

PHP 脚本不通过 header 重定向

转载 作者:太空宇宙 更新时间:2023-11-03 11:06:18 24 4
gpt4 key购买 nike

我正在寻找我的代码中导致此 PHP 页面无法重定向的某种错误。我想看看是否有人知道这个问题的原因(它可能与 cookies 有关)。

inc_vars.php:

<?php
//some of the variables have been omitted.
$pid = 'gbb';
$dbtable ='';
$dbname = '';
$dbuser = '';
$dbpass = '';

$connect = mysql_connect('localhost', $dbuser, $dbpass);

if(!$connect){
header('Location: omitted');
die();
}

mysql_select_db ($dbname, $connect);

$webroot = 'omitted';

$share_page = $webroot . '/share-the-training';

$gift = $webroot . '/free-video?setuser=1199';

$bonus_content = $webroot . '/awesome-bonus';

$share_php = $webroot . '/share.php';

?>

refresh_id.php:

<?php

include_once('inc_vars.php');

$results = mysql_query("SELECT id FROM " . $dbtable . " WHERE email='" . $_GET['email'] . "'");


if(!$results || mysql_num_rows($results)==0){
header('Location: ' . $share_page . '?errorcode=1');
die();
}

$res_arr = mysql_fetch_assoc ($results);

setcookie($pid . "_viral", (string)$res_arr['id'], time() + 3600 * 365);

move_on();

function move_on(){
header ('Location: ' . $share_php);
die();
}

?>

当访问者访问 refresh_id.php?email=their_email 时,他们应该重定向到 $share_php 页面。这是行不通的。

但是,如果发生这种情况:refresh_id.php?email=an-email-that-is-not-in-database 然后脚本重定向到 $share_page 绝对没问题。

无论有无 gbb_viral cookie,我都试过了。我不确定为什么这不起作用。如果您想自己查找,所有页面现在都在互联网上。

省略

数据库中存在的电子邮件如下:acctrafficcop@gmail.com(对于那些想要测试的人)

更新

作用域的愚蠢错误。我只是在 move_on() 函数中添加了 global $share_php,现在一切正常。感谢大家对 SQL 注入(inject)的关注,我现在正在切换到准备好的语句。

最佳答案

在您的move_on 函数中,变量$share_php 不存在,因为variable scope .因此,您的重定向看起来像这样:Location:。 Location header 中没有 URL。

您可以将变量传递给函数,或使用 global 关键字使其可用。试试这个:

move_on('/redirect_url');

function move_on($url){
header ('Location: ' . $url);
die();
}

事实上,在 refresh_id.php 中我没有在任何地方看到一个名为 $share_php 的变量,因此您正在重定向到一个空 URL。

关于PHP 脚本不通过 header 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11711894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com