0

Model と View のような 2 つの異なるフォルダーで次のコードを使用しています。View Folder には、Login.php と Login_success.php のような 2 つの php ファイルが含まれています。コントローラ フォルダには、mysql データベース テーブル フィールド フェッチ コードが含まれています。以下のコードを実行すると、Login_success ページを表示できません。else フィールドCheck Name と passwordのみが表示されます。これらのすべてのファイルは、フォルダー 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>

Controll.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

まず、コードはまったく保存されません。ハッキングのためのケーキを平和に

 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

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

リダイレクトの目的で、require_once の代わりにヘッダー php 関数を使用します。この形式のヘッダー(url)のように。

于 2013-01-02T07:08:08.700 に答える
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. コードでアンチ SQL インジェクションを使用します。2. ヘッダーheader('location: View/Login_Success.php');を使用して他のページにリダイレクトする

于 2013-01-02T07:09:11.003 に答える