将多个变量传递到url中的另一个页面

时间:2012-10-27 17:33:54

标签: php url session variables

我正在使用这样的会话将一个变量传递到url中的另一个页面,但似乎我无法将另一个变量连接到同一个url并在下一页成功检索它

Page 1

session_start();
$event_id = $_SESSION['event_id'];
echo $event_id;

$url = "http://localhost/main.php?email=" . $email_address . $event_id;     

第2页

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

echo $event_id在第2页上显示错误Undefined variable,但如果我只使用event_id中的$url,就像这里一样

 $url = "http://localhost/main.php?event_id=" . $event_id;

这很好,但是我需要能够在url中使用这两个变量,以便第2页可以检索它们。

8 个答案:

答案 0 :(得分:96)

使用&符号&将变量粘合在一起:

$url = "http://localhost/main.php?email=$email_address&event_id=$event_id";
//                               ^ start of vars      ^next var

答案 1 :(得分:22)

简答:

这是你要做的,但它会带来一些安全性和编码问题,所以不要这样做。

$url = "http://localhost/main.php?email=" . $email_address . "&eventid=" . $event_id;

答案很长:

查询字符串中的所有变量都需要进行urlencoded以确保正确传输。您不应该在网址中传递用户的个人信息,因为网址非常漏洞。网址会以日志文件,浏览历史记录,反馈标题等结束。列表会一直显示。

对于正确的网址编码,可以使用urlencode()http_build_query()来实现。其中任何一个都应该有效:

$url = "http://localhost/main.php?email=" . urlencode($email_address) . "&eventid=" . urlencode($event_id);

$vars = array('email' => $email_address, 'event_id' => $event_id);
$querystring = http_build_query($vars);
$url = "http://localhost/main.php?" . $querystring;

此外,如果您的会话中有$event_id,那么您实际上并不需要传递它以便从不同的网页访问它。只需致电session_start()即可。

答案 2 :(得分:6)

您的第一个变量声明必须以?开头,而任何其他变量声明必须与&

连接

答案 3 :(得分:3)

非常简单但另一个说你不通过url栏传递会话变量 1.您不需要,因为当您输入头文件时,会话从整个网站传递到整个网站 2.安全风险
这是第一页代码

$url = "http://localhost/main.php?email=" . urlencode($email_address) . "&eventid=" . urlencode($event_id);

从网址栏获取变量的第二页是:

if(isset($_GET['email']) && !empty($_GET['email']) AND isset($_GET['eventid']) && !empty($_GET['eventid'])){ ////do whatever here }

现在,如果你想以正确的方式使用你创建的会话,那么忽略我上面的代码并在第二页上调用会话变量,例如在第一页上创建一个会话,例如:

 $_SESSION['WEB_SES'] = $email_address . "^" . $event_id;
很明显,你已经为上面的代码中的会话变量分配了值,你可以调用会话名称,只需要使用示例web_ses,第二页只需要启动一个会话,查看会话是否存在并检查变量并对它们执行任何操作,例如:

 session_start();
 if (isset($_SESSION['WEB_SES'])){
 $Array = explode("^", $_SESSION['WEB_SES']);
 $email = $Array[0];
 $event_id = $Array[1]
 echo "$email";
 echo "$event_id";
 }

就像我之前所说的关于会话的好处是它们可以在整个网站中传播,如果这种类型的代码放在头文件中,在所有加载的页面上调用,你可以简单地使用变量而不管每当。希望这会有所帮助:)

答案 4 :(得分:1)

您正在检查isset($_GET['event_id']但是您没有在超链接中设置get变量,只是添加了email

http://localhost/main.php?email=" . $email_address . $event_id

在链接中添加另一个GET变量

$url = "http://localhost/main.php?email=$email_address&event_id=$event_id";

如果使用"引号

,则不会用来连接字符串

答案 5 :(得分:1)

使用&为了这。使用&您可以根据需要添加任意数量的变量!

$url = "http://localhost/main.php?event_id=".$event_id."&email=".$email;

答案 6 :(得分:1)

<a href="deleteshare.php?did=<?php echo "$rowc[id]"; ?>&uid=<?php echo "$id";?>">DELETE</a>

将多个可变一页传递到另一页

答案 7 :(得分:-1)

来自php.net

警告 超级全局$_GET$_REQUEST已经被解码。对urldecode()$_GET中的元素使用$_REQUEST可能会产生意外和危险的结果。

link:http://php.net/manual/en/function.urldecode.php

小心。