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

Abu*_*zzy 35 php variables url session

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

第1页

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

$url = "http://localhost/main.php?email=" . $email_address . $event_id;     
Run Code Online (Sandbox Code Playgroud)

第2页

if (isset($_GET['event_id'])) {
$event_id = $_GET['event_id'];}
echo $event_id;
Run Code Online (Sandbox Code Playgroud)

echo $event_idUndefined variable在第2页显示错误,但如果我event_id$url这里使用类似的

 $url = "http://localhost/main.php?event_id=" . $event_id;
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我需要能够在url中使用这两个变量,以便第2页可以检索获取它们.

Jvd*_*erg 108

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

$url = "http://localhost/main.php?email=$email_address&event_id=$event_id";
//                               ^ start of vars      ^next var
Run Code Online (Sandbox Code Playgroud)

  • 您应该注意一些安全警告.有关详细信息,请参阅[我的回答](http://stackoverflow.com/a/13102519/166339). (5认同)

Asa*_*aph 23

简短回答:

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

$url = "http://localhost/main.php?email=" . $email_address . "&eventid=" . $event_id;
Run Code Online (Sandbox Code Playgroud)

答案很长:

查询字符串中的所有变量都需要进行urlencoded以确保正确传输.您永远不应该在网址中传递用户的个人信息,因为网址非常漏洞.Urls最终会出现在日志文件,浏览历史记录,反馈标题等方面.该列表会一直持续下去.

作为适当的URL编码,则可以使用任一来实现urlencode()http_build_query().其中任何一个应该工作:

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

要么

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

此外,如果$event_id在您的会话中,您实际上不需要传递它以便从不同的页面访问它.只是打电话session_start(),它应该可用.

  • 简而言之,为什么不发帖:`$ url ="http://localhost/main.php?email =".urlencode($ email_address)."&eventid =".urlencode($ event_id);`在那里没有解释.然后在Long回答你可以解释一下吗?现在不推荐简短的答案,因此与其他简答题相比,它没有添加任何内容. (2认同)

Cro*_*lla 7

你的第一个变量声明必须以一段?时间开始,任何附加必须与a连接&