Как я могу изменить свой скрипт входа в PHP с указанием URL-адреса на основе имени пользователя и пароля? - PullRequest
1 голос
/ 24 июля 2011

У меня есть базовый скрипт входа в php. У меня есть три поля: «имя пользователя», «пароль» и «URL». Я хотел бы перенаправить каждого пользователя на его собственный URL, основываясь на их имени пользователя и пароле Я не знаю, как включить «URL» в мой сценарий.

Вот мой check_login.php

<?php
$host="localhost"; // Host name
$username="myusername"; // Mysql username
$password="mypassword"; // Mysql password
$db_name="naturan8_login"; // Database name
$tbl_name="users"; // Table name

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or
die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

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

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and 
password='$mypassword'";
$result=mysql_query($sql);

$count=mysql_num_rows($result);

if($count==1){
session_register("myusername");
session_register("mypassword");
header("location:login_success.php");
}
else {
header("location:error.htm");
}
?>

Ответы [ 5 ]

1 голос
/ 24 июля 2011

Переключите следующий код:

$count=mysql_num_rows($result);

if($count==1){
    session_register("myusername");
    session_register("mypassword");
    header("location:login_success.php");
}

... чтобы:

$user_info = mysql_fetch_assoc($result);

if( isset($user_info['url']) ) {

    session_register("myusername");
    session_register("mypassword");
    header('Location: ' . $user_info['url']); //Redirects to the supplied url from the DB
}

Надеюсь, это то, что вы искали!

1 голос
/ 24 июля 2011

Пара вещей:

  1. session_register устарело. Вместо этого используйте $_SESSION['username'] = $username.
  2. Вы, вероятно, не должны хранить пароль в сеансе, у вас есть имя пользователя или ИД пользователя, и этого должно быть достаточно.
  3. С данными сеанса вы можете настроить страницу login_success для каждого пользователя, не создавая отдельных страниц. Все, что вам нужно сделать, это посмотреть на $_SESSION['username'] var, чтобы увидеть, кто это. (Убедитесь, что вы можете session_start() на всех страницах, где вы собираетесь читать / записывать данные сеанса.
0 голосов
/ 24 июля 2011

Запросите это:

$sql="SELECT url FROM $tbl_name WHERE username='$myusername' and password='$mypassword' LIMIT 1";

Затем, куда вы перенаправляете, замените его на:

header("Location: " . mysql_result($sql, 0));

0 голосов
/ 24 июля 2011

Заменить header("location:login_success.php"); на

$user =  mysql_fetch_assoc($result);
header("location:{$user['url']}");
0 голосов
/ 24 июля 2011

Используйте mysql_result (), чтобы извлечь поле URL из запроса:

http://php.net/manual/en/function.mysql-result.php

$url = mysql_result($result, $x); // $x is the column number of the url field. 

header("location: {$url}");

...