Передача нескольких переменных на другую страницу в URL-адресе

Я передаю переменную на другую страницу в URL-адресе, используя такие сеансы, но кажется, что я не могу объединить другую переменную с тем же URL-адресом и получить ее на следующей странице успешно

Страница 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 показывает ошибку Undefined variable на странице 2, но если я использую только event_id в $url как здесь

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

Это работает отлично, но мне нужно иметь возможность использовать обе переменные в URL-адресе, чтобы страница 2 могла получить их.

Используйте переменную ampersand & to clue:

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

Короткий ответ:

Это то, что вы пытаетесь сделать, но оно создает проблемы безопасности и кодирования, поэтому не делайте этого.

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

Длительный ответ:

Все переменные в querystrings должны быть urlencoded для обеспечения правильной передачи. Вы никогда не должны передавать личную информацию пользователя в URL-адресе, потому что URL-адреса очень просачиваются. Urls заканчиваются журнальными файлами, историями просмотра, заголовками рефералов и т. Д. Список можно продолжать и продолжать.

Что касается правильной кодировки url, это может быть достигнуто с помощью 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() и он должен быть доступен.

Ваше первое объявление переменной должно начинаться с ? в то время как любые дополнительные данные должны быть объединены с &

Довольно просто, но другой сказал, что вы не пропускаете переменные сеанса через панель URL 1. Вам не нужно, потому что сеанс передается по всему веб-сайту из заголовка, когда вы помещаете заголовочный файл. 2.security риски
Вот первый код страницы

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

Вторая страница при получении переменных из строки url:

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"; } 

Как я уже говорил, хорошая вещь о сессиях, они могут переноситься на весь сайт, если этот тип кода помещается в заголовочный файл, который вызывается на всех загружаемых страницах, вы можете просто использовать переменную где угодно и когда угодно. Надеюсь это поможет 🙂

Вы проверяете isset($_GET['event_id'] но вы не задали эту переменную в своей гиперссылке, вы просто добавляете email

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

И добавьте еще одну переменную GET в вашу ссылку

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

Вы не использовали для конкатенации своей строки, если вы используете " кавычки»

Используйте & для этого. Используя & вы можете добавить столько переменных, сколько хотите!

 $url = "http://localhost/main.php?event_id=".$event_id."&email=".$email; 
 <a href="deleteshare.php?did=<?php echo "$rowc[id]"; ?>&uid=<?php echo "$id";?>">DELETE</a> 

Передача нескольких переменных одной страницы на другую страницу

от php.net

Предупреждение Суперглобалы $_GET и $_REQUEST уже декодированы. Использование urldecode() для элемента в $_GET или $_REQUEST может иметь неожиданные и опасные результаты.

ссылка: http://php.net/manual/en/function.urldecode.php

быть осторожен.