یه مشکل کوچیک اما اساسی!!!

سلام به همه. من یه برنامه نویس پی اچ پی هستم که تقریبا 3 سالی میشه تو این کارم. اما دیگه این روزها آجاکس جای خیلی چیزا رو تنگ کرده. به همین خاطرم دارم سیستم سایتم رو با آجاکس همخوانی میدم. البته چون از جاوا و در کل آجاکس زیاد سرم نمیشه مجبورم فعلا از اسکریپت های آماده استفاده کنم :)

یکی از این اسکریپت ها مربوط به ورود کاربره. مشکل اینجاست که اسکریپت در سایت سازنده درست کار می کنه و وقتی که یوزر و رمز عبور را درست تشخیص بده به صفحه ای دیگه دایرکت میشه. اما این کار در خود اسکریپتی که سازنده ارائه داده و میشه دانلود کرد اجرا نمیشه و فقط آدرس صفحه مورد نظر رو مینویسه.:sad:

از اینجا میتونید هم دمو را ببینید اما دانلود کنید و اجراش کنید تا ببینید که منظور من چیه :) http://joeabiraad.com/ajax/ajax-login-form-php-javascript/89

مشکل من فقط دایرکت نشدنه. کسی میتونه بفهمه چیه مشکل؟ :sad:
 
خوب مثل اینکه کسی نمیخواد جواب بده.:sad:

حالا من فایل ها رو براتون اینجا میارم. اگه امکانش هست ببینید میشه کاریش کرد که دایرکت بشه وقتی یوزر و رمز عبور را درست میشناسه.

فایل ajax.new:
HTML:
function Ajax() {
  this.req = null;
  this.url = null;
  this.status = null;
  this.statusText = '';
  this.method = 'GET';
  this.async = true;
  this.dataPayload = null;
  this.readyState = null;
  this.responseText = null;
  this.responseXML = null;
  this.handleResp = null;
  this.responseFormat = 'text', // 'text', 'xml', 'object'
  this.mimeType = null;
  this.headers = [];

  
  this.init = function() {
    var i = 0;
    var reqTry = [ 
      function() { return new XMLHttpRequest(); },
      function() { return new ActiveXObject('Msxml2.XMLHTTP') },
      function() { return new ActiveXObject('Microsoft.XMLHTTP' )} ];
      
    while (!this.req && (i < reqTry.length)) {
      try { 
        this.req = reqTry[i++]();
      } 
      catch(e) {}
    }
    return true;
  };
  this.doGet = function(url, hand, format) {
    this.url = url;
    this.handleResp = hand;
    this.responseFormat = format || 'text';
    this.doReq();
  };
  this.doPost = function(url, dataPayload, hand, format) {
    this.url = url;
    this.dataPayload = dataPayload;
    this.handleResp = hand;
    this.responseFormat = format || 'text';
    this.method = 'POST';
    this.doReq();
  };
  this.doReq = function() {
    var self = null;
    var req = null;
    var headArr = [];
    
    if (!this.init()) {
      alert('Could not create XMLHttpRequest object.');
      return;
    }
    req = this.req;
    req.open(this.method, this.url, this.async);
    if (this.method == "POST") {
      this.req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    }
    self = this;
    req.onreadystatechange = function() {
      var resp = null;
      self.readyState = req.readyState;
      if (req.readyState == 4) {
        
        self.status = req.status;
        self.statusText = req.statusText;
        self.responseText = req.responseText;
        self.responseXML = req.responseXML;
        
        switch(self.responseFormat) {
          case 'text':
            resp = self.responseText;
            break;
          case 'xml':
            resp = self.responseXML;
            break;
          case 'object':
            resp = req;
            break;
        }
        
        if (self.status > 199 && self.status < 300) {
          if (!self.handleResp) {
            alert('No response handler defined ' +
              'for this XMLHttpRequest object.');
            return;
          }
          else {
            self.handleResp(resp);
          }
        }
        
        else {
          self.handleErr(resp);
        }
      }
    }
    req.send(this.dataPayload);
  };
  this.abort = function() {
    if (this.req) {
      this.req.onreadystatechange = function() { };
      this.req.abort();
      this.req = null;
    }
  };
  this.handleErr = function() {
    var errorWin;
    // Create new window and display error
    try {
      errorWin = window.open('', 'errorWin');
      errorWin.document.body.innerHTML = this.responseText;
    }
    // If pop-up gets blocked, inform user
    catch(e) {
      alert('An error occurred, but the error message cannot be' +
      ' displayed because of your browser\'s pop-up blocker.\n' +
      'Please allow pop-ups from this Web site.');
    }
  };
  this.setMimeType = function(mimeType) {
    this.mimeType = mimeType;
  };
  this.setHandlerResp = function(funcRef) {
    this.handleResp = funcRef;
  };
  this.setHandlerErr = function(funcRef) {
    this.handleErr = funcRef; 
  };
  this.setHandlerBoth = function(funcRef) {
    this.handleResp = funcRef;
    this.handleErr = funcRef;
  };
  this.setRequestHeader = function(headerName, headerValue) {
    this.headers.push(headerName + ': ' + headerValue);
  };
  
}

فایل applogin:

HTML:
var Login = new function() {  
  this.ajax = null;
  this.form = null;
  this.promptDiv = null;
  this.dotSpan = null;
  this.button = null;
  this.enabled = true;
  this.dots = '';
  this.promptInterval = null;
  
  this.cleanup = function() {
    var self = Login;
    self.form = null;
    self.promptDiv = null;
    self.dotSpan = null;
    self.button = null;
  };
  
  this.init = function() {
    var self = Login;
    self.ajax = new Ajax();
    self.form = document.getElementById('loginForm');
    self.promptDiv = document.getElementById('promptDiv'); //joe
    self.dotSpan = document.getElementById('msg2'); //joe
    self.button = document.getElementById('submitButton');
    self.setPrompt('base', 'Enter a login ID and password, and click the Submit button.');
    self.form.email.focus();
    self.toggleEnabled(false);
    self.form.onsubmit = function() { return false; }
    self.clearCookie('ses');
//    self.enableScreenReaderFeatures();//Joe
  };
  
  this.clearCookie = function(name) {
    var expireDate = new Date(0);
    document.cookie = name + '=; expires=' + expireDate.toGMTString() + '; path=/';
  };
  
  this.setPrompt = function(stat, msg) {
    var self = Login;
    var promptDiv = self.promptDiv;
    var msgSpan = document.getElementById('msg1');
    var statusClass = '';
    promptDiv.className = stat; // 'base', 'proc' or 'err'
    if (msgSpan.firstChild) {
      msgSpan.removeChild(msgSpan.firstChild);
    }
    msgSpan.appendChild(document.createTextNode(msg));
  };
  
  this.keyup = function(e) {
    var self = Login;
    if (!e) {
      e = window.event;
    }
    if (e.keyCode != 13) {
      self.evalFormFieldState();
    }
    else {
      if (self.enabled) {
        self.submitData();
      }
    }
  };
  
  this.evalFormFieldState = function() {
    var self = Login;
    if (self.form.email.value.length > 0 && self.form.password.value.length > 0) { //Joe
      self.toggleEnabled(true);
    }
    else {
      self.toggleEnabled(false);
    }
  };
  
  this.toggleEnabled = function(able) {
    var self = Login;
//	alert(able); //joe//
    if (able) {
      self.button.onclick = self.submitData;
      self.button.disabled = false;
      self.button.className = 'inputButtonActive';
      self.enabled = true;
    }
    else {
      self.button.onclick = null;
      self.button.disabled = true;
      self.button.className = 'inputButtonDisabled';
      self.enabled = false;
    }
  };
  
  this.submitData = function() {
    var self = Login;
    var postData = '';
    postData = formData2QueryString(self.form);
    self.ajax.doPost(’login.php?action=login’, postData, self.handleLoginResp);
    self.showStatusPrompt();
    self.toggleEnabled(false);
  };
	
	this.showStatusPrompt = function() {
    var self = Login;
    self.setPrompt('proc', 'Processing');
    self.promptInterval = setInterval(self.showStatusDots, 200);
  };
	
	this.showStatusDots = function() { //joe
    var self = Login;
    var dotSpan = self.dotSpan;
    self.dots += '.';
    if (self.dots.length > 4) {
      self.dots = '';
    }
    if (dotSpan.firstChild) {
      dotSpan.removeChild(dotSpan.firstChild);
    }
    dotSpan.appendChild(document.createTextNode(' ' + self.dots));
  };
  
  this.handleLoginResp = function(str) {
//	alert(str);
    var self = Login;
    var respArr = str.split(',');
    var respType = respArr[0].toLowerCase();
    var respMsg = respArr[1];
    var respSes = respArr[2];
    if (respType == 'success') {
      location = respMsg+'?'+respSes;
    }
    else {
      self.showErrorPrompt(respMsg);
    }
  };
  
  this.showErrorPrompt = function(str) {
    var self = Login;
    var dotSpan = self.dotSpan;
    clearInterval(self.promptInterval);
    if (dotSpan.firstChild) {
      dotSpan.removeChild(dotSpan.firstChild);
    }
    self.setPrompt('err', str);
    self.form.Pass.value = '';
    if (self.form.ChangeAlert.checked) { //not working becuz i disabled the enableScreenReaderFeatures
      alert('Error. ' + str);
    }
  };
  // implement it lataaaaaaaaaaaa
this.enableScreenReaderFeatures = function() {
  var self = Login;
  var fieldDiv = document.getElementById('fieldDiv');
  var msgDiv = null;
  var checkboxDiv = null;
  var label = null;
  var checkbox = null;
  var msg = 'This web page uses dynamic content. Page content' +
    ' may change without a page refresh. Check the following' +
    ' checkbox if you would like an alert dialog to inform' +
    ' you of page content changes.';
  msgDiv = document.createElement('div');
  msgDiv.className = 'readerText';
  msgDiv.appendChild(document.createTextNode(msg));
  self.form.insertBefore(msgDiv, fieldDiv);
  checkboxDiv = document.createElement('div');
  checkboxDiv.className = 'readerText';
  label = document.createElement('label');
  label.appendChild(document.createTextNode('Content Change Alert'));
  checkbox = document.createElement('input');
  checkbox.type = 'checkbox';
  checkbox.id = 'ChangeAlert';
  checkbox.name = 'ChangeAlert';
  checkbox.value = 'true';
  checkbox.title = 'Content Change Alert';
  label.appendChild(checkbox);
  checkboxDiv.appendChild(label);
  self.form.insertBefore(checkboxDiv, fieldDiv);
    self.form.Pass.onchange = self.evalFormFieldState;
    self.form.Pass.title = 'Password. Enter text to activate the Submit button.';
  };
};


window.onunload = Login.cleanup;
window.onload = Login.init;
document.onkeyup = Login.keyup;

فایل جاوای دیگش فکر نکنم در این زمینه نقشی داشته باشه. با این حال من فایل php رو میارم که قراره چک کنه رمز عبور رو:

PHP:
$action=trim($HTTP_GET_VARS['action']);
switch($action):
	case 'login':
		$good_email="[email protected]";
		$good_pass="iwannalogin";
		$sub = trim($_POST['sub']);
		$email = trim($_POST['email']);
		$password =trim($_POST['password']);
		$sep=',';
		sleep(2); # simulating
		$msg="Email and password do not match";
		if ( $password == $good_pass ){
		   # REGISTER SESSION HERE
		   print 'success,welcome.html,lolllll';
		}
		else{
		   print 'error'.$sep.$msg;
		}
//		print 'success,index.php';
	break;
	default:
		print 'error,going somewhere ?';
endswitch;
#check if the mail is valid
function fun_isemail($strng){
 return preg_match('/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/i',$strng);

خواهشا یه نگاهی بندازید. چون سیستمم همین جوری رو هوا مونده:sad::cry:

موفق باشید/.
 

جدیدترین ارسال ها

بالا