0

我在模型和视图等两个不同的文件夹中使用以下代码。在视图文件夹中包含两个 php 文件,如 Login.php 和 Login_success.php。控制器文件夹包含 mysql 数据库表字段提取代码。当我运行下面的代码时,它无法显示 Login_success 页面。仅显示其他字段检查名称和密码。这些所有文件合并到文件夹外 index.php 。

这是我的代码:

登录.php

<html>
<head>
<title>Login</title>
<link rel ='stylesheet' type = 'text/css' href = 'View/Design.css'> 
<script>
function Validate(){
var x=document.forms["login"]["username"].value;
if (x==null || x=="")
  {
  alert("First name must be filled out");
  return false;
  }
 var x=document.forms["login"]["password"].value;
 if (x==null || x=="")
  {
   alert("Password must be filled out");
   return false;
  }
 }
 </script>
 </head>
 <body>
 <form name = 'login' method = 'post' action = 'Controller/Controll.php' >
 <fieldset>
 <legend>Login</legend>
 User Name :<input type = 'text' name = 'username'>
 Password  :<input type = 'password' name = 'password'><br><br>
 <input type = 'submit' name = 'submit' value = 'submit' onsubmit = "return Validate()" >
 </fieldset>
 </form>
  </body>
 </html>

控制.php

 class Access{
 function connection(){
  require_once('View/Login.php');
 $con = mysql_connect('localhost','root','root');
 $db = mysql_select_db('Times_sheet');
 $query = mysql_query('select * from Login');
 $row = mysql_fetch_array($query);
 if(isset($_POST['submit']))
 {
  if(($row['UserName']==$_POST['username']) && ($row['Password']==$_POST['password'])){
  require_once("View/Login_Success.php");
 }
  }
  else{
  echo "Check User name and Password";
 }
 }
 }

索引.php

require_once('Controller/Controll.php');
class login extends Access{
function getValu(){
require_once('View/Login.php');
}
 }
$Obj = new login();
$Obj ->getValu();
$Obj ->connection();

当我输入正确的用户名和密码时,它会进入空白页面。我不知道我犯了什么错误。

4

5 回答 5

0

使用 header php 函数进行重定向,而不是 require_once。像这种格式 header(url);

于 2013-01-02T07:08:08.700 回答
0

你只是包含Login_success.php在这一行中而不是重定向到Login_success.php

 if(($row['UserName']==$_POST['username']) && ($row['Password']==$_POST['password'])){
    require_once("View/Login_Success.php");
 }

所以header用于这个重定向

 if(($row['UserName']==$_POST['username']) && ($row['Password']==$_POST['password'])){
    header("Location: View/Login_Success.php");
    exit();
 }
于 2013-01-02T07:02:15.647 回答
0

在您的查询中,您正在从表“登录”中获取所有(*)结果。

而不是这个带有 'WHERE' 的查询表:例如。select * from Login WHERE user= $_POST['username'] AND password = $_POST['password']

如果找到结果,则将用户重定向到您所需的页面:

    header("Location : View/Login_Success.php");
于 2013-01-02T07:02:44.273 回答
0

首先,您的代码根本没有保存;和平的黑客蛋糕

 class Access{
 function connection(){
 require_once('View/Login.php');
 $con = mysql_connect('localhost','root','root');
 $db = mysql_select_db('Times_sheet');
 $query = mysql_query('select * from Login');
 $row = mysql_fetch_array($query);
 if(isset($_POST['submit']))
 {

其次,你只包括

 View/Login_Success.php'

你必须这样做:

 if(($row['UserName']==$_POST['username']) && ($row['Password']==$_POST['password'])){
 header('location: View/Login_Success.php');
 }
 }
 else{
  echo "Check User name and Password";
 }
 }
 }
于 2013-01-02T07:20:54.277 回答
0

你必须改变你的代码,

 $query = mysql_query('select * from Login');
 $row = mysql_fetch_array($query);
  1. 您从 MySQL 中选择所有用户,并在检查 PHP 之后将其更改为 : ( & MD5 您的密码,因为它非常重要。)
$user = $_POST['username'];
$pass = MD5($_POST['password']);
$query = mysql_query("select * from Login WHERE `UserName` = '$user' AND `Password` = '$pass' ");

if (mysql_num_rows($query)==1) { // 登录 }

并在所有页面中保存用户名和用户使用会话值:

session_start();
$_SESSION['user'] = $row['UserName'] ;

并使用它,Login_Success.php你可以使用它这个代码:

<?php 

session_start();

echo "wellcome user : ".$_SESSION['user'] ;

?>

我有 2 个提议给你: 1. 在你的代码中使用 Anti SQL Injection。2.使用标头header('location: View/Login_Success.php');重定向到其他页面不包括

于 2013-01-02T07:09:11.003 回答