Ответ 1
Используйте амперсанд &
, чтобы склеить переменные вместе:
$url = "http://localhost/main.php?email=$email_address&event_id=$event_id";
// ^ start of vars ^next var
Я передаю переменную на другую страницу в URL-адресе, используя такие сеансы, но кажется, что я не могу объединить другую переменную с тем же URL-адресом и получить ее на следующей странице успешно
Page 1
session_start();
$event_id = $_SESSION['event_id'];
echo $event_id;
$url = "http://localhost/main.php?email=" . $email_address . $event_id;
Page 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 могла получить их.
Используйте амперсанд &
, чтобы склеить переменные вместе:
$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 должны быть закодированы для обеспечения правильной передачи. Вы никогда не должны передавать личную информацию пользователя в 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
Довольно просто, но другой сказал, что вы не пропускаете переменные сеанса через строку url
1. Вам не нужно, потому что сеанс передается по всему веб-сайту из заголовка, когда вы помещаете в заголовочный файл
2. риски безопасности
Вот первый код страницы
$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']
, но вы не задали эту переменную get в своей гиперссылке, вы просто добавляете 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
Будьте осторожны.