Как разрешить пользователю входить на сайт и сохранять информацию об имени пользователя в PHP / HTML?

Я пытаюсь создать веб-сайт, на котором пользователь входит в систему или создает новую учетную запись, если он еще не является пользователем. У меня это работает, но я не могу понять, как заставить PHP или HTML сохранять имя пользователя на разных страницах. Пользователь входит в систему, а затем, в зависимости от конкретного пользователя, на моем веб-сайте будут отображаться различные упражнения, которые пользователь выполнил в прошлом, а также пользователь сможет добавлять другие упражнения в будущем. Мой сайт использует PHP, HTML и MySQL для поиска различных таблиц в моей базе данных и вывода результатов.

Я пробовал много разных возможных решений, таких как сессии в PHP, как это, но это не сработало. Каждая страница PHP имеет это в начале:

session_start();

а затем дальше вниз, у меня есть:

$_SESSION["Username"] = $_POST['Username'];

Я также пробовал скрытые входные значения в HTML, но, похоже, это тоже не совсем правильно. Каждая HTML-страница имеет это:

<input type="hidden" name="Username" value="Cbartowski">

Я перепробовал много способов, чтобы моя веб-страница сохранила имя пользователя и использовала эти данные на своих страницах, но мне не повезло. Будут ли проходить сессии в PHP? Или скрытый ввод в HTML? Или что-то еще целиком?

Любая помощь будет принята с благодарностью!

0

Решение

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

Использование PHP-сессий это путь сюда.

Я понял, что вы инициализируете

$_SESSION["Username"] = $_POST["Username"];

на каждой странице. Теперь представьте, что у вас есть две страницы php.
Один Форма-запрос-handler.php и другое дисплей-пользователь-preferences.php

Теперь, когда пользователь отправляет форму, имя пользователя задается в переменной сеанса с помощью приведенного выше фрагмента кода на странице form-request-handler.php.

Теперь, когда пользователь заходит на страницу display-user-preferences.php, вы снова устанавливаете значение переменной сеанса. Но поскольку на эту страницу не было отправлено ни одного пост-запроса, поэтому значение Null сохраняется в переменной сеанса, и вы не можете получить необходимую информацию из базы данных.

Итак, какая бы страница php ни обрабатывала запрос post, просто инициализируйте там свою переменную сеанса и используйте ее на других страницах.

Переменные сессий будут вам доступны, если вы не позвоните

session_destroy();

Надеюсь это поможет 🙂

1

Другие решения

html скрытый ввод не является хорошим способом, потому что пользователи могут увидеть его с помощью действия браузера показать источник.
Вы сохраняете файл сеанса, и идентификатор сеанса включается в ваши ссылки?
если не сеансы, начинайте новый сеанс каждый раз, когда пользователь щелкает ссылку.
просматривать вашу временную папку каждый раз, когда вы нажимаете на ссылку; если создается новый файл сеанса, это потому, что вы забыли идентификатор сеанса.
возможно это проблема.

0

  • Проверьте ваш метод формы: должно быть POST
  • Проверьте вашу переменную, используя:

var_dump($_POST['Username']);

0

Таким образом, исходя из опыта, лучше использовать методы post при выполнении аутентификации пользователя. Чисто по соображениям безопасности. В дополнение к этому, использование переменных сеанса PHP также является рекомендуемым способом передачи пользовательской информации с одной страницы на другую.
если вы хотите сохранить имя пользователя в переменной сеанса, вот несколько шагов, которые вы можете выполнить

  • начать сеанс, используя session_start();
  • назовите переменную сеанса и сохраните информацию, которую вы хотите
    $_SESSION['what-ever-you-want-to-call-it']=$what-you want to store
    например.$_SESSION['Username']=$_POST['Username'], Обратите внимание на использование одинарных кавычек
  • Теперь вы можете позвонить $_SESSION['Username'] в любом месте скрипта php укажите, что сессия была запущена перед вызовом. То есть session_start();,

Заметка разбейте код, над которым вы работаете, и убедитесь, что каждый отдельный фрагмент работает. Например, есть ли в сообщении имя пользователя?

0
По вопросам рекламы [email protected]