Php 链接中未使用变量?

Php 链接中未使用变量?,php,hyperlink,location,Php,Hyperlink,Location,我需要一些帮助-我真的看不出我在哪里犯了错误 我需要在下面的代码中记住用于加载下一页的变量。页面使用如下链接加载: editgallery.php?folder=big_fish&id=459 现在我想让下面的代码记住文件夹变量:big_fish,用于生成下一个链接。在代码的底部,我使用“位置”来加载下一页。它看起来像: header("Location: galleries.php?folder".$folder." "); 当用户在以下代码的表单中单击“更新”时,它应将用户发送回

我需要一些帮助-我真的看不出我在哪里犯了错误

我需要在下面的代码中记住用于加载下一页的变量。页面使用如下链接加载:

editgallery.php?folder=big_fish&id=459
现在我想让下面的代码记住文件夹变量:big_fish,用于生成下一个链接。在代码的底部,我使用“位置”来加载下一页。它看起来像:

header("Location: galleries.php?folder".$folder." ");
当用户在以下代码的表单中单击“更新”时,它应将用户发送回他们来自的页面:

if(!$_POST["submit"])
{
include "header.php";
$query = mysql_query("select name, type, folder, description , displaydate from galleries where id = '".$_GET["id"]."' ");
$row = mysql_fetch_row($query);
$name = $row[0];
$type = $row[1];
$folder = $row[2];
$description = $row[3];
$displaydate = $row[4];
?>

<form method="POST" action="<?=$_SERVER["PHP_SELF"]?>" name="myform" id="myform">
<center><table width="<?=$setting["tablewidth"]?>" class="admintable" cellpadding="<?=$setting["cellpadding"]?>">
<tr>
    <td class="adminheader" colspan="2">&nbsp;<b>Edit Gallery:</b></td>
</tr>

        <tr>    
            <td class="admincell">&nbsp;Name:</td>
            <td class="admincell">
<input type="text" name="name" value="<?=$name?>" size="40"></td>
</tr>
        <tr>    
            <td class="admincell">&nbsp;Category:</td><td class="admincell">

<?=$folder?>

</td>
</tr>
<tr valign="top">
<td class="admincell">&nbsp;Display Date:</td>
<td class="admincell" align="">
    <input style="border-style:hidden" type="text" value="<?=$displaydate?>" id="from" id="<?php echo $_REQUEST["from"]; ?>" name="displaydate" size="40">
    (yyyymmdd - Like <?=date('Ymd');?> or <?=date('Y-m-d');?>)</td>
</tr>
<tr valign="top">
<td class="admincell">&nbsp;Description:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td class="admincell">

<textarea id="Enter you description of the photo set here" name="description"><?=$description?></textarea></td>
<!-- http://ckeditor.com/ -->          
            <script>
                CKEDITOR.replace( 'description' );
            </script>
</tr>
<tr>
<td class="admincell" colspan="2"><input type="hidden" name="id" value="<?=$_GET["id"]?>"><center>
<input type="submit" name="submit" value="Update"></center></td>
</tr>

</table></center>
</form><center>
<p>



</table></center>

<?
include "footer.php";
}
else
{

mysql_query("update galleries set name = '".$_POST["name"]."', description = '".$_POST["description"]."' , displaydate = '" . $_POST["displaydate"] . "' where id = '".$_POST["id"]."' ");

header("Location: galleries.php?folder".$folder." ");
//header("Location: galleries.php");
}
if(!$\u POST[“提交”])
{
包括“header.php”;
$query=mysql\u query(“从库中选择名称、类型、文件夹、描述、显示日期,其中id=”。$\u GET[“id”]。“””);
$row=mysql\u fetch\u row($query);
$name=$row[0];
$type=$row[1];
$folder=$row[2];
$description=$row[3];
$displaydate=$row[4];
?>

我只想在这里重新写下我的答案

您的代码可能需要一些清理。以下是我要修复的一些项目:

<input style="border-style:hidden" 
       type="text" 
       value="<?=$displaydate?>" 
       id="from" 
       id="<?php echo $_REQUEST["from"]; ?>" 
       name="displaydate" 
       size="40">
应成为:

header("Location: galleries.php?folder=".$_POST['folder']);

试试看,请告诉我们发生了什么。

您缺少一个等号:

header("Location: galleries.php?folder".$folder." ");
应该是

header("Location: galleries.php?folder=".$folder." ");

你可能想考虑使用来处理URL。

你很容易受到攻击,并且有错别字:

header("Location: galleries.php?folder=".$folder." ");
                                      ^---missing
本质上,您生成的链接

 galleries.php?folderfoo
而不是

 galleries.php?folder=foo

除了缺少的
=
,我看不出您如何设置变量(或数据库连接…)

您可能需要以下内容:

header("Location: galleries.php?folder=" . $_GET['folder']);
您还应该切换到PDO或mysqli并准备好语句,因为
mysql.*
函数已被弃用,并且存在sql注入问题

编辑:注意,当发出POST请求时/
$\u设置POST[“提交”]
,只执行脚本的最后两行:

  • 没有数据库连接的mysql查询
  • 使用未定义的
    $folder
    变量调用
    header()

不要使用
标题
,而是将其切换到echo-它打印出什么?它看起来像您要生成的URL吗?@andrewsi您将如何使用echo使用代码生成下一页:gallers.php?文件夹“$folder”?你可以直接交换
标题
来交换
echo
。这是一个调试工具-你正在测试代码,看看它产生了什么。一旦你看到了你产生的内容,你就可以找出需要修复的内容。谢谢,但它仍然不起作用。关键是当我使用一个位置链接,比如:header(“location:galleries.php?folder=“.id”)。“”);然后显示ID号。这意味着它可以工作,但不能与“文件夹”一起工作,只能与“ID”一起工作"。你能明白为什么吗?你的意思是你在浏览器中看到了
gallers.php?id
?这段代码中没有任何东西会导致这种情况。你在服务器上有任何重写吗?@Mars B很抱歉不清楚。我的意思是,如果我将位置中的链接更改为:
galleries.php?folder=“..$folder.”&id=“..$id.”
然后使用id变量生成下一页,因此URL看起来像:
galleries.php?folder=&id=459
但是文件夹变量(big_fish)不在URL中,你知道为什么吗?它应该看起来像
galleries.php?folder=big_fish&id=459
@Kryten谢谢,但它仍然不起作用。最关键的是当我使用一个位置链接,比如:header(“location:galleries.php?folder=“.id.”),然后它会显示id号。这意味着它可以工作,而不是只使用带有“id”的“folder”。你知道为什么吗?谢谢,但它仍然不起作用。最关键的是当我使用一个位置链接时,比如:header(“location:galleries.php?folder=“.id.”);然后它会显示id号。这意味着它起作用,但不是只使用带有“id”的“folder”。你能看到原因吗?@GernerChristensen查询的输出是什么?我想知道执行查询时文件夹列是否为空。@joseph4tw如果我更改为:header(“位置:
galleries.php?folder=“.$\u GET['folder'])
然后我仍然没有得到变量,生成的URL看起来像:
gallers.php?folder=
。该列不是空的,它在数据库中充满了信息。该页面是使用URL生成的,如:
editgallery.php?folder=big_fish&id=459
,如果我将位置中的链接更改为:
gallers.php?folder=“$folder.”&id=“.$id.”
然后使用id变量us生成下一页,因此URL看起来像:
galleries.php?folder=&id=459
但是文件夹变量(big_fish)不在URL中,你知道为什么吗?@GernerChristensen我刚刚重新写了答案。谢谢,但它仍然不起作用。最关键的是当我使用一个位置链接时,比如:header(“location:gallers.php?folder=“.id.”);然后它显示id号。这意味着它起作用,而不是只使用“id”的“folder”"。你知道为什么吗?@GernerChristensen就我所知,一个POST请求只执行了2行代码,因此如果有更多的事情发生,你需要显示它。所有代码都在第一篇帖子中,没有更多的事情发生。该页面是使用URL生成的,比如:
editgallery.php?folder=big_fish&id=459
,如果我更改Loc中的链接设置为:
galleries.php?folder=“..$folder.”&id=“..$id.”
然后使用id变量生成下一页,因此URL看起来像:
galleries.php?folder=&id=459
但是文件夹变量(big_fish)不在URL中,你知道为什么吗?@GernerChristensen查看脚本的流程,如果发出POST请求,则只执行脚本的最后两行:没有数据库连接的mysql查询和带有未定义的
$folder
变量的
调用。只需使用
$\u GET['folder']
如我的回答中所示。我了解该帖子(不确定如何更改该帖子!),但如果我使用代码:
标题(“Location:gallers.php?folder=“.$\u GET['folder']”;
URL中不包含来自“folder”的变量,它看起来像:<
header("Location: galleries.php?folder=".$folder." ");
                                      ^---missing
 galleries.php?folderfoo
 galleries.php?folder=foo
header("Location: galleries.php?folder=" . $_GET['folder']);