Подтвердить что ты не робот

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

Я передаю переменную на другую страницу в 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 могла получить их.

4b9b3361

Ответ 1

Используйте амперсанд &, чтобы склеить переменные вместе:

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

Ответ 2

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

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

$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() и он должен быть доступен.

Ответ 3

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

Ответ 4

Довольно просто, но другой сказал, что вы не пропускаете переменные сеанса через строку 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";
 }

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

Ответ 5

Вы проверяете 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";

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

Ответ 6

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

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

Ответ 7

<a href="deleteshare.php?did=<?php echo "$rowc[id]"; ?>&uid=<?php echo "$id";?>">DELETE</a>

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

Ответ 8

от php.net

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

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

Будьте осторожны.