2012-06-30 21 views
0

我想用ajax和php構建一個登錄系統。我使用了一個日誌視圖,然後將數據保存在帶有doLogin.php(php文件)的ajax中。我的問題是,PHP文件不應該是當我建立成一個類和函數的任何AJAX數據獲取ajax數據到一個php文件

VIEW:

public function DoLoginBox() { 
    //inloggning form-tagg... 
    return '<p>&nbsp;</p> 
     <div id="content"> 
      <h1>Login Form</h1> 
      <form id="form1" name="form1" action="Handler/doLogin.php" method="post"> 
      <p> 
       <label for="username">Username: </label> 
       <input type="text" name="username" id="username" /> 
      </p> 
      <p> 
       <label for="password">Password: </label> 
       <input type="password" name="password" id="password" /> 
      </p> 
      <p> 
       <input type="submit" id="login" name="login" /> 
      </p> 
      </form> 
      <div id="message"></div> 
     </div>'; 
} 

AJAX:

<script type="text/javascript"> 
$(document).ready(function() { 
$("#login").click(function() { 
    var action = $("#form1").attr('action'); 
    var form_data = { 
     username: $("#username").val(), 
     password: $("#password").val(), 
     is_ajax: 1 
    }; 
    $.ajax({ 
     type: "POST", 
     url: action, 
     data: form_data, 
     success: function(response) 
     { 
      if(response == 'success') 
       $("#form1").slideUp('slow', function() { 
        $("#message").html("<p class='success'>You have logged in successfully!</p>"); 
       }); 
      else 
       $("#message").html("<p class='error'>Invalid username and/or password.</p>"); 
     } 
    }); 
    return false; 
}); 
}); 
</script 

PHP:

<?php 
require_once ("UserHandler.php"); 
class DoLogingHandler{ 

public function Login(){ 
    $is_ajax = !empty($_REQUEST['is_ajax']); 

    if(isset($is_ajax) && $is_ajax) 
    { 
     $username = $_REQUEST['username']; 
     $password = $_REQUEST['password']; 
     $UserHandler = new UserHandler(); 
     $UserHandler -> controllDB($username,$password); 

     if($username == 'demo' && $password == 'demo') 
     { 
      echo "success"; 

     } 
    } 
} 

} `$ DoLogingHandler = new DoLogingHandler(); $ DoLogingHandler-> Login(); >


,如果我在stack.php添加類和函數,我得到「錯誤連接到服務器」(我想這個代碼到一個類和函數調用其他功能:

<?php 
class DologinHandler{ 
public function Login(){ 
if(isset($_REQUEST['is_ajax'])) 
    { 
     $username = $_REQUEST['username']; 
     $password = $_REQUEST['password']; 
     //$UserHandler = new UserHandler(); 
     //$UserHandler -> controllDB($username,$password); 
     if($username == 'demo' && $password == 'demo') 
     { 
      exit('success'); 
     } else { 
      exit('error'); 
     } 
    } 
} 

} ?>

回答

0

使用此

第一個文件classes.php

<?php 
class loginHandler{ 
    public static function doLogin(){ 
     if(!isset($_POST['is_ajax']) || !isset($_POST['username']) || !isset($_POST['password'])){ 
      return false; 
     } 
     if(isset($_REQUEST['is_ajax'])) 
     { 
      $username = $_REQUEST['username']; 
      $password = $_REQUEST['password']; 
      //$UserHandler = new UserHandler(); 
      //$UserHandler -> controllDB($username,$password); 
      if($username == 'demo' && $password == 'demo') 
      { 
       exit('success'); 
      } else { 
       exit('error'); 
      } 
     } 
    } 
} 
?> 

第二個文件的index.php

<?php 
    require_once('classes.php'); 
    loginHandler::doLogin();//for static methods 
    /* 
     //or use this syntax for non static method 
     $c = new loginHandler; 
     $c->doLogin(); 
    */ 
?> 
<html> 
<head> <title>1</title> 
<script type="text/javascript" src="jquery.js" ></script> 
</head> 
<body> 
<p>&nbsp;</p> 
<div id="content"> 
    <h1>Login Form</h1> 
    <form id="form1" name="form1" action="index.php" method="post" onsubmit="return loginMe()"> 
    <p> 
     <label for="username">Username: </label> 
     <input type="text" name="username" id="username" /> 
    </p> 
    <p> 
     <label for="password">Password: </label> 
     <input type="password" name="password" id="password" /> 
    </p> 
    <p> 
     <input type="submit" id="login" name="login"/> 
    </p> 
    </form> 
    <div id="message"></div> 
</div> 
<script type="text/javascript"> 
    function loginMe(){ 
     var action = $("#form1").attr('action'); 
     var form_data = { 
      username: $("#username").val(), 
      password: $("#password").val(), 
      is_ajax: 1 
     }; 
     $.ajax({ 
      type: 'POST', 
      url: action, 
      data: form_data, 
      success: function(data){ 
       if(typeof(data) != 'undefined' && (data == 'success' || data == 'error')){ 
        if($.trim(data) == 'success'){ 
         $("#form1").slideUp('slow', function() { 
          $("#message").html("<p class='success'>You have logged in successfully!</p>"); 
         }); 
        } else if($.trim(data) == 'error'){ 
         $("#form1").slideUp('slow', function() { 
          $("#message").html("<p class='error'>Invalid username and/or password.</p>"); 
         }); 
        } 
       } else { 
        console.log(data); 
        $("#message").html("<p class='error'>Error to connect to server</p>"); 
       } 
      } 
     }); 
     return false; 
    } 
</script> 
</body> 
</html> 
+0

消息框:無效的用戶名和/或密碼... – Max

+0

@MaxTorstensson:我測試的代碼,它沒有任何錯誤,請檢查你的php類,並確保PHP代碼是HTML代碼的頂部。 – Hamidreza

+0

@MaxTorstensson,如果您有任何問題,我可以把所有的代碼放在單個文件中,並在這裏複製 – Hamidreza