#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 (со строкой запроса) действительно используется для вызова вашего скрипта.