Я передаю переменную на другую страницу в 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-адрес переменной
множественный URL-адрес переменной
Довольно просто, но другой сказал, что вы не пропускаете переменные сеанса через панель 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
быть осторожен.