我正在使用这样的会话将一个变量传递到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页可以检索它们。
答案 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
可能会产生意外和危险的结果。