Передача переменной PHP в URL

#php #html

#php #HTML

Вопрос:

В настоящее время у меня есть форма входа, и я хочу передать имя пользователя по URL-адресу. Она хранится в переменной сеанса.

У меня есть это на странице после входа в систему, но, похоже, это не работает.

 $myusername = $_POST['myusername'];
  

Я ищу что-то вроде этого:

 page.php?myusername=example
  

Страница входа — это страница php, которая подключается к другому php, который проверяет данные для входа из базы данных MySQL.

Основная часть из этого такова (на странице контрольного списка на php)

 // username and password sent from form 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword'];
  

На следующей странице после успешного входа в систему у меня есть это:

    <? 
    session_start();
header( 'Location: menu.php?myusername=$myusername' ) ;
    if(!session_is_registered(myusername)){
    header("location:index.php");
    }
    ?>
  

Ответ №1:

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

Но я вижу, вы говорите

Она хранится в переменной сеанса.

Вы форматируете строку URL из сеанса php, а затем пытаетесь куда-то передать параметры get? Если да, пробовали ли вы использовать session API для получения имени пользователя, а затем выполнить перенаправление php?

  session_start();

 $username = $_SESSION['myusername'];

 // redirect
 header("http://your/sites/dir/page.php?myusername=$username");
  

Но, похоже, вы полагаетесь на устаревшие session_register и register_globals, основанные на этом комментарии:

Я хочу передать это по всему приложению, у меня это сохранено как сеанс, я думаю, так: session_register («myusername»);

Вероятно, это не используется, потому что register_globals был отключен. Вам следует отключить это. Вы хотите избежать session_register и вместо этого использовать массив $_SESSION.

Вот как вы извлекаете «myusername» из запроса на получение URL

Для извлечения имени пользователя из URL-адреса вы хотите использовать $_GET, т.Е.

  $myusername = $_GET['myusername'];
  

Часть URL, на которую вы смотрите, известна как «строка запроса». Параметры, отформатированные

?var=значениеamp;var2=значение2...

известны как параметры «GET». параметры $_POST не передаются в самом URL-адресе. Вы можете прочитать больше о HTTP GET vs POST, здесь.

Чтобы сохранить имя пользователя в сеансе, выполните

  session_start();
 // be sure to VALIDATE your inputs
 $_SESSION['myusername'] = $_GET['myusername']; // replace with post if appropriate
  

Комментарии:

1. Я изменил ее на GET, и она по-прежнему не отображается.. Есть идеи?

2. @Xerting: Нам нужно просмотреть некоторый код, чтобы понять, что не так с вашим использованием $_GET .

3. Я работаю на основе отзывов серверной части, и она просто хочет видеть параметры, размещенные в URL (?username = xxxx).

4. @xerting, смотрите мое перенаправление, вы можете вставить $username в HTTP-запрос.

5. Я только что попробовал это, и, похоже, по какой-то причине это не работает: я получаю, что страница не может быть отображена сейчас …page.php $myusername

Ответ №2:

$_POST аргументы должны поступать из POST отредактированной формы. Если вы передаете аргументы в URL-адресе, это GET запрос, и значения будут доступны в $_GET .

 $myusername = $_GET['myusername'];
  

Ответ №3:

Используйте $_GET вместо:

 $myusername = $_GET['myusername'];
  

Ответ №4:

page.php?myusername=example использует метод GET.

Попробуйте

$myusername = $_GET['myusername'];

Ответ №5:

Вы можете использовать $_REQUEST, чтобы просмотреть все переданные переменные. Попробуйте сделать print_r($_REQUEST) или то же самое только для ваших GET и POST. Это позволит вам точно увидеть, через какие значения передаются, и вы сможете подтвердить, присвоено ли значение, на которое вы пытаетесь установить переменную.

Ответ №6:

Вы уверены, что у вас где-нибудь нет перенаправления, которое удаляет параметры url? Например, url_rewrite или любые условия перезаписи apache могут выводить какие-либо параметры запроса и фактически ничего не передавать вашему PHP-скрипту.

Проверьте журналы вашего веб-сервера, чтобы убедиться, что полный URL (со строкой запроса) действительно используется для вызова вашего скрипта.