php - 使用 php 登录系统重定向到存储在 mysql 服务器上的链接

标签 php mysql apache session cookies

所以我知道这个问题已经在这里被问过多次,但是我已经盯着我的代码几个小时了,需要一双新的眼睛来检查我的错误。

现在我知道 mysql_* 在 php 5.5 中已被贬值,但在 IT 世界中,我们被教导如果某些东西没有损坏,就不要损坏它。直奔问题

我有一个 php 登录系统,它似乎适用于我的一个域,但不适用于另一个域。该代码在使用相同登录系统的其他服务器上是相同的,但它似乎在我的第二个服务器上不起作用(可能是 php.ini 配置问题?)。基本上,login_success.php 文件应该将用户重定向到存储在 mysql 数据库内的链接。

链接在 phpmyadmin 上看起来像这样:enter image description here

这是我的登录索引文件:

<?php
session_start();

function loggedin()
{
 if (isset($_SESSION['myusername']) || isset($_COOKIE['myusername']))
 {
        return true;
 }
else {
            return false;
     }
}

if (loggedin() == true)
{
   header("Location: /login_success.php");
   exit;
}

if(isset($_POST['submit']))
{

$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password="password"; // Mysql password 
$db_name="database_name"; // Database name 
$tbl_name="table_name"; // Table name

// Connect to server and select databse.
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['username']; 
$mypassword=$_POST['password'];
$rememberme=$_POST['rememberme'];

// 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);
$ip = $_SERVER["REMOTE_ADDR"];

$encrypted_mypassword=md5($mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$encrypted_mypassword'";
$result=mysql_query($sql);
mysql_close();
// Mysql_num_row is counting table row
if(mysql_num_rows($result) == 1) //user exists
{
  if ($rememberme=="on"){
      setcookie("myusername", $myusername, time()+7200);
   }
 elseif ($rememberme==""){
      $_SESSION['myusername'] = $myusername;
   }

header("Location: /login_success.php");
exit;
}
else {
echo '<div class="alert">Incorrect Username or Password!</div>';
}
}
?>

这是我的login_success.php 文件:

<?php
session_start();
// IF USER NOT REMEMBERED(DID NOT CLICK REMEBER ME BUTTON) OR NO SESSION IS FOUND THEN THROW HIM OUT TO LOGIN
//SECURITY SO THAT USERS CANT ACCESS WEB URL DIRECTLY
 if (!isset($_SESSION['myusername']) && !isset($_COOKIE['myusername']))
 {
   header("Location: index.php");
 }

$host="localhost"; // Host name
$username="root"; // Mysql username
$password="password"; // Mysql password
$db_name="database_name"; // Database name
$tbl_name="table_name"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$result=mysql_query("SELECT target_address, username FROM $tbl_name");

while ($row = mysql_fetch_assoc($result)) {
$LOCATION = $row['target_address'];
if ($_SESSION['myusername'] == $row['username'] || $_COOKIE['myusername'] == $row['username'] ){
header("Location: $row['target_address']");

}
}
mysql_close();
?>

最佳答案

问题出在这里:

header("Location: $row['target_address']");

将其更改为:

$url=$row['target_address'];
header("Location: ".$url);

关于php - 使用 php 登录系统重定向到存储在 mysql 服务器上的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21469561/

相关文章:

c# - 自动增量不适用于模型

mysql - TeSTLink 升级遇到问题 "You need to proceed with Manual upgrade of your DB scheme to DB 1.9.15"

php - 当PHP运行模块时,Apache无法启动

php - 如何在 Linux 上安装旧的 CURL(我有旧的 PHP 版本)

php - 如何在 wordpress 子主题中注册/加载样式 css 文件?

php - phpMyAdmin 中无法正常启动 session , session 变量不起作用

mysql - 带有远程数据库的 Rails 应用程序 - 我应该在应用程序中复制还是远程连接

php - 数组和 if 语句并访问每个索引位置

apache - XSL FO - 尊重填充

apache - 使用虚拟主机在 Apache 中配置 Ssl