请检查旧的PHP代码,以便将变量值放入url

时间:2011-12-16 01:11:15

标签: php url

我一直在处理我继承的一些页面的编码问题,其中两个变量的值没有显示在下一页的URL中。

作者编写的代码可能很旧了

"completeyourorder.php?p=" . $p . "&service=" . $service;

就我的研究而言,至少应该有一个回声

“completeyourorder.php?p =”echo。 $ p。 “& service =”。 $服务;

或者我错过的不仅仅是那个。

我很感激对此进行了一些教育,因为我是一名新手,尽管经过了数小时的搔痒和阅读,却无法找到答案。

由于

更新:

第1页

<form action="send-order.php" method="post">
<p>Name<br /><input name="clientname" value="<?echo $clientname;?>" type="text" style="width: 350px;" /></p>

<p><br /><input type="hidden" name="service" value="<?
echo $_GET['service'];
?>" />

<input type="hidden" name="p" value="<?
echo $_GET['p'];
?>"
 />
<input type="submit" value="Order now" /></p>
 </form>

第2页

$go = "completeyourorder.php?p=" . $p . "&service=" . $service;
return header("location:$go");

如果您还需要更多信息,请告诉我

解决:

非常感谢它的作品!我现在看到我的错误是假设我可以使用位置中的变量值:第2页上的completeyourorder .....而没有在同一页面上的代码中使用$ _POST。谢谢大家!

2 个答案:

答案 0 :(得分:1)

这里显示的只是构建字符串的一部分。在php中,句点是连接运算符,因此它将两个字符串绑定在一起。您需要对整个字符串进行回显,打印,标题或变量赋值,以使其执行某些操作。在那个其他脚本中,你可以得到变量

$p = $_REQUEST['p'];
$service = $_REQUEST['service'];

编辑:看到更新后,它正在使用标题将脚本重定向到新页面

答案 1 :(得分:0)

您最近询问了有关$ _GET vars的类似问题。

在这种情况下,看起来您正在构建一个字符串以在链接或其他内容中回显。所以也许这就是你可能遇到的问题:(只是一个例子)

<?php

if(isset($_GET['p']))
{
    $p = $_GET['p'];
}

if(isset($_GET['service']))
{
    $service = $_GET['service'];
}

//defaults in case they are not set
$p or $p = 1; //assuming p = page
$service or $service = 'laundry'; //since I don't know what service refers to

$link = "completeyourorder.php?p=" . $p . "&service=" . $service;

?>

<a href="<?php echo $link; ?>">string to click on</a>

在此示例中,您可以看到您希望基于$ _GET变量“p”和“service”构建$ link var,如果它们不存在,则默认为第1页的标准集和服务“洗衣店”

显然,您可以根据自己的需要量身定制,但是您需要提供更多信息以获得更好,更相关的答案。

修改

根据您的编辑,基本答案是您的表单应填充$ p和$ service的变量,因此修改后的代码将如下所示:

<?php
if(isset($_POST['p']) && isset($_POST['service']))
{
    $p = $_POST['p'];
    $service = $_POST['service'];

    // do some kind of post processing here
    // possibly do some kind of filtering to ensure the post vars are sanitized 

    header("location: completeyourorder.php?p=" . $p . "&service=" . $service);
    exit;
}
?>
两者都不需要

isset,但您可以更改它以反映您验证发布数据的首选选项。有些人只是这样做:

if(!empty($_POST))