我需要帮助 - 我真的不知道我在哪里做错了!
我需要在代码下面记住加载下一页的变量。该页面使用如下链接加载:
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"> <b>Edit Gallery:</b></td>
</tr>
<tr>
<td class="admincell"> Name:</td>
<td class="admincell">
<input type="text" name="name" value="<?=$name?>" size="40"></td>
</tr>
<tr>
<td class="admincell"> Category:</td><td class="admincell">
<?=$folder?>
</td>
</tr>
<tr valign="top">
<td class="admincell"> 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"> Description: </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");
}
任何人都可以看到为什么链接中的$文件夹名称没有保存到位置链接 - 为什么代码不能&#34;转移&#34;它来自editgallery.php?folder=big_fish&id=459
链接,位于("Location: galleries.php?folder".$folder." ");
请建议。
答案 0 :(得分:0)
我将在这里重新写下我的答案。
您的代码可以使用一些清理。以下是我要解决的一些问题:
<input style="border-style:hidden"
type="text"
value="<?=$displaydate?>"
id="from"
id="<?php echo $_REQUEST["from"]; ?>"
name="displaydate"
size="40">
你有两个身份证。没有bueno。
<textarea id="Enter you description of the photo set here" name="description"><?=$description?></textarea>
让您的ID包含空格并不是一个好主意。你的意思是使用title属性吗?
<input type="hidden" name="id" value="<?=$_GET["id"]?>">
这很好。我认为这是你的主要问题所在。 您需要使用文件夹
添加另一个隐藏的输入<input type="hidden" name="folder" value="<?=$_GET["folder"]?>">
这样,当发布表单时,该文件夹将以$_POST['folder']
的形式发送。
然后,在这里:
header("Location: galleries.php?folder".$folder." ");
应该成为:
header("Location: galleries.php?folder=".$_POST['folder']);
试试并告诉我们会发生什么。
答案 1 :(得分:0)
你错过了一个等号:
header("Location: galleries.php?folder".$folder." ");
应该是
header("Location: galleries.php?folder=".$folder." ");
您可能需要考虑使用http_build_query来处理构建网址。
答案 2 :(得分:0)
您容易受到SQL injection attacks的攻击,并且有错别字:
header("Location: galleries.php?folder=".$folder." ");
^---missing
基本上,您正在生成一个类似于
的链接 galleries.php?folderfoo
而不是
galleries.php?folder=foo
答案 3 :(得分:0)
除了缺少=
之外,我没有看到你如何设置变量(或数据库连接......)。
您可能需要以下内容:
header("Location: galleries.php?folder=" . $_GET['folder']);
您还应该切换到PDO或mysqli和预处理语句,因为mysql_*
函数已被弃用,并且您有SQL注入问题。
编辑:请注意,当设置POST请求/ $_POST["submit"]
时,只会执行脚本的最后两行:
header()
变量进行$folder
调用。