Регистрация учетной записи, создание пользовательской идентификационной страницы, доступ через PHP и MySQL

Я хочу создать систему, чтобы пользователь мог зарегистрироваться / войти в систему, и когда они продолжат работу, они будут перенаправлены на страницу с пользовательскими настройками, например blahurl.com/nations/customid, каждый идентификатор уже генерируется, когда он регистрируется под именем UserID, и я хотите иметь возможность перейти на blahurl.com/nations/92, ​​и у этого человека появится всплывающее окно, и его информация о SQL будет отображена.

Я хочу, чтобы, когда они регистрировались, они уже могли получить доступ к этим страницам, я не хочу делать страницу для каждого подписавшегося. Как бы я поступил так? И затем искать их по имени пользователя MySQL?

  • Таблица в моем MySQL называется пользователями
  • Идентификатор нас называется UserID
  • Имя пользователя называется UserName
  • Пароль называется Пароль
  • Дата регистрации называется RegDate

Когда люди регистрируются, они автоматически помещаются в мой submit-form.php, который выглядит так:

<?php
$username=$_POST['UserName'];
$password=$_POST['Password'];
$leadername=$_POST['LeaderName'];
$nationname=$_POST['NationName'];
$email=$_POST['Email'];

//Database connection
require_once("config.php");
require_once("checkregister.php");

//mysql query to insert value to database
$query=mysql_query("INSERT INTO users (UserName, Password, LeaderName, NationName, Email)
VALUES ('$username', '$password', '$leadername', '$nationname', '$email')");
//if value inserted successyully disply success message
if($query)
{
echo '<div style="color:#008000; font-weight:bold;">Your Account has been Created! <del>Check your Email for Verification Code!</del> in the future you will need to Verify your Account, for right now just <a href="../Login.php">go back to the Website!</a></div>';
} else
{
//error message
echo '<div style="color:#c24f00; font-weight:bold;">Registration Failed: Could not INSERT to Query! (Could not Connect to Database)<br><a href="../home.php">Back to Website</a></div>';
}

?>
  • config.php подключается к базе данных
  • checkregister.php проверяет, чтобы убедиться, что имя пользователя / имя лидера
    еще не существует и что пробелы не остаются пустыми.

-1

Решение

Вы спросили, как сделать ссылку на необычный URL, что довольно просто. Вам просто нужно получить первичный ключ, который будет создан из вашего столбца автоинкремента:

представить-form.php

// Create user
// @todo Fix injection vuln
$query=mysql_query( ... );

// If successful...
if($query)
{
// Get the inserted primary key
$userId = mysql_insert_id();
?>
<div style="color:#008000; font-weight:bold;">
Your account has been created,
<a
href="nations.php?userId=<?php echo $userId ?>">go back to the website!</a>
</div>
<?php
}

Затем вы можете прочитать его на другой странице:

nations.php

<?php
// Read it only if it exists
$userId = isset($_GET['userId']) ? $_GET['userId'] : null;

// Escape any apostrophes in the ID, to avoid SQL injection
$cleanUserId = mysql_real_escape_string($userId);

// Always check if it exists, the user may have tampered with the URL
$sql = "SELECT * FROM users WHERE UserID = '$cleanUserId'";
$query = mysql_query($sql);
// Do something with the result...

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

  • Когда вы выполняете операцию POST, вы, как правило, должны выполнять ее с перенаправлением, если только оно не завершилось неудачей (и вам необходимо отобразить сообщения проверки / ошибки). Это связано с тем, что браузеры не любят отображать контент методом post, и если вы затем обновите экран, браузеры попросят вас подтвердить, хотите ли вы повторно отправить операцию. В большинстве случаев это не так, поскольку будет повторяться то, что произошло в посте (в данном случае создание пользователя)
  • Для переноса информации через POST-перенаправление часто используется сеанс. Некоторые платформы предлагают «флэш-сообщения», которые являются просто значениями сеанса, которые очищаются после одного просмотра страницы. В качестве альтернативы можно использовать строку запроса. В любом случае, было бы полезно перенести ваш идентификатор пользователя со страницы публикации на страницу результатов, чтобы обновление экрана не привело к повторной отправке.
  • Логика и представление здесь смешаны, что делает приложение довольно сложным в обслуживании. Когда у вас появится возможность, попробуйте переместить всю свою логику (например, вызовы базы данных) в верхнюю часть страницы и поместить HTML-код своей презентации в конец сценария. Крошечные кусочки PHP могут быть использованы там, где требуется динамический контент.
  • Использование веб-фреймворка может оказаться полезным для придания вашей структуре дополнительной структуры и модульности. Не существует «лучшего» PHP-фреймворка, поэтому выбирайте из Slim, Laravel, Aura, Symfony, Zend, Cake, CodeIgniter и некоторых других. Стоит попробовать несколько, чтобы увидеть, что вы предпочитаете.
  • Обмен на более новую библиотеку базы данных — mysql_ звонки больше не поддерживаются. Они будут выдавать уведомления в PHP 5.5+.
  • Согласно комментариям, используйте привязку параметров и хеширование паролей для безопасности. Не уходи, пока они оба не исправят.
  • Если вы не используете контроль версий, стоит привыкнуть. Git довольно прост в использовании и автоматически интегрируется с рядом приложений IDE (например, NetBeans).
2

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector