1

我有一个基本的 php 登录脚本。我有三个字段:“用户名”、“密码”和“网址”。我想根据每个用户的用户名和密码组合将每个用户重定向到他们自己的 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");
}
?>
4

5 回答 5

1

几件事:

  1. session_register已弃用。改为使用$_SESSION['username'] = $username
  2. 您可能不应该在会话中存储密码,您有用户名或用户 ID,这就足够了。
  3. 使用会话数据,您可以为每个用户自定义 login_success 页面,而无需创建单独的页面。您需要做的就是查看$_SESSION['username']var 以了解它是谁。(确保您可以session_start()在您打算读取/写入会话数据的所有页面上。
于 2011-07-24T18:19:09.567 回答
1

切换以下代码:

$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
}

希望这就是你要找的!

于 2011-07-24T18:21:29.670 回答
0

使用 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}");

于 2011-07-24T18:17:24.327 回答
0

替换header("location:login_success.php");

$user =  mysql_fetch_assoc($result);
header("location:{$user['url']}");
于 2011-07-24T18:20:35.433 回答
0

查询这个:

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

然后在您重定向的地方,将其替换为:

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

于 2011-07-24T18:21:31.427 回答