-1

我有一个包含表单的登录页面。登录数据被发送到一个 php 脚本中,以检查用户是否存在于数据库中。如果成功,它应该重定向。

这是我的代码:

<?php

$host="localhost:8889"; // Host name
$username="root"; // Mysql username
$password="root"; // Mysql password
$db_name="TableName"; // Database name
$tbl_name="Users"; // 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['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);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);

// If result matched $myusername and $mypassword, table row must be 1 row

if($count==1){
// Register $myusername, $mypassword and redirect to file
  session_register("myusername");
  session_register("mypassword");
  header("location:../main.php");
  die();
}
else {
  echo "Wrong Username or Password";
}
?>

计数为 1,但不会发生重定向。

我已经阅读了这个很好的答案并检查了以下内容:

  1. 开始标签之前没有空格,我也没有另一个回声或打印。
  2. 我尝试在打开 php 标记之后放置ob_start,但它也没有工作。

我不明白BOM的事情。你能帮我吗?

我过去一直在使用完全相同的代码并且它有效,现在我在 mamp 上并且 mac 不起作用。

谢谢。

编辑:

我做了人们所说的,在修复了这些事情并启用了报告之后,问题是:

Call to undefined sesion_register.

所以,我改变了它,因为它没有定义也没有被弃用,它现在可以工作了!谢谢大家!

4

3 回答 3

1

尝试这个:

header("Location: http://localhost:8889/main.php");

Location应该有一个大写的 L,并且尝试使用绝对 URI 总是好的。

编辑

阅读此链接后,最好检查一下output_buffering您的 php.ini 是否已启用。然后将ob_start()ob_end_flush()分别放在文件的顶部和底部。

于 2013-11-04T03:32:45.193 回答
0

对于初学者,您没有使用变量。您在引号中使用实际值。代替:

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

它应该是:

mysql_connect($host, $username, $password)or die("cannot connect");
mysql_select_db($db_name)or die("cannot select DB");
于 2013-11-04T03:34:21.563 回答
0

请在位置上大写“L”。如果这不起作用,请尝试以下操作;
您可以使用 headers_sent() 检查错误

// If no headers are sent, send one
if (!headers_sent()) {
    header('Location: ../main.php');
    exit;
}


或者你可以在 php 上尝试 javascript

<?php
echo "<script>window.location='../main.php'</script>";
?>

希望能帮助到你...

于 2013-11-04T03:40:16.293 回答