所以我知道这个问题已经在这里被问过多次,但是我已经盯着我的代码几个小时了,需要一双新的眼睛来检查我的错误。
现在我知道 mysql_* 在 php 5.5 中已被贬值,但在 IT 世界中,我们被教导如果某些东西没有损坏,就不要损坏它。直奔问题
我有一个 php 登录系统,它似乎适用于我的一个域,但不适用于另一个域。该代码在使用相同登录系统的其他服务器上是相同的,但它似乎在我的第二个服务器上不起作用(可能是 php.ini 配置问题?)。基本上,login_success.php 文件应该将用户重定向到存储在 mysql 数据库内的链接。
链接在 phpmyadmin 上看起来像这样:
这是我的登录索引文件:
<?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/