Kullanılan php göre, web sitesinin adresini değiştirme

6 Cevap php

I have a button in my abc.html page <input type="button" onclick="javafun();">

üzerinde o daha benim abc.php için bilgi göndermek, hangi javascript gider ... ve javascript fonksiyonu gibi görünüyor tıklatın:

function login()
{   
    xmlhttp=GetXmlHttpObject();
    //alert("pass");
    if(xmlhttp==null)
    {
        alert("Your browser does not support AJAX!");
        return;
    }
    var url="login.php";
    url=url+"?id="+username+"&passwrd="+passwrd;
    xmlhttp.onreadystatechange=statechangedLogin;
    xmlhttp.open("GET", url, true);
    xmlhttp.send(null);
    }
}

function statechangedLogin()
{
    //alert(xmlhttp.readyState);
    if(xmlhttp.responseText=="<font color='red'>Your User Name or Password is incorrect. Please try again.</font>")
	{
		document.getElementById("response").innerHTML=xmlhttp.responseText;
	}
	else 
	{
		//hwin=window.location="http://forum.research.bell-labs.com/zeeshan/qotw/login.php";
		document.getElementById("mainbody").innerHTML=xmlhttp.responseText;
		//hwin.document.innerHTML=xmlhttp.responseText;
		//alert();
	}
}

Everything works fine, but the address of the website in the address bar remains the same: http://severname.com/abc.html

i want this address bar to change, according to the php. it should come to ... http://severname.com/abc.html/login.php

ama yine de göstermek gerekir ?id=username&passwrd=passwrd

Bu mümkün mü, ve eğer nasıl?

Zeeshan

6 Cevap

Ben AJAX bütün mesele yanlış olduğunu düşünüyorum. Ajax yani url değiştirme değil, arka planda çalışmak gerekiyordu. Bunu isterseniz, document.location = "foobar" çalışın;

POST isteği için .. / login.php?

yerine ajax kullanarak, form elemanları wrap

 <form method=POST action="login.php">
      User Name: <input name="username"><br>
      Password: <input name="passwrd" type="password"><br>
      <input type="submit" name="Login">
 </form>

Eğer adres çubuğu değiştirmek istiyorsanız neden AJAX yapıyorsun?

Edit Added real values to the form

Edit 2 daha fazla netlik.

Gerçekten formuyla giriş yapmanız gerekir (NATHANS yazılan @ bakınız).

  • Bir php sayfa içine html giriş formunu yeniden adlandırın. Bunu loginForm.php arama sağlar.
  • LoginForm.php bütün javascript fonksiyonları çıkarın
  • Form etiketini kullanarak loginForm içine formunu yerleştirin.
  • Login.php, siz, onlar kullanıcı başarılı bir giriş olmadığını görmek için kontrol edin
  • Giriş suceeded eğer:

     $failMsg = urlencode("Logged in successfully")
     header("Location: loginForm.php?okMsg=$msg&redirect=home.php");
    
  • Giriş başarısız olursa:

     $failMsg = urlencode("Failed to login")
     header("Location: loginForm.php?failMsg=$msg");
    
  • Şimdi hata iletileri görüntüleniyor sizin loginForm.php, koyun:

     <? echo  htmlentities($_REQUEST['failMsg']);?>
    
  • Eğer koymak mesajda başarı günlüğünü görüntüleniyor loginForm.php içinde

     <? echo  htmlentities($_REQUEST['okMsg']);?>
    
  • Ve baş etiket koymak içinde

     <? if(array_key_exists($_REQUEST,'redirect'))
        {
            echo "<meta http-equiv='refresh" content='5;url=/".$_REQUEST['redirect']."' />";
        }    
     ?>
    

Hiçbir javascript ve kullanıcı güzel hoş hata mesajları alır ve içeri giriş yaptıktan sonra ana sayfasına iletilir

<form method="post" action="login.php">

Sen de tüm bu yapmak AJAX gerekmez. Eğer girişini doğrulamak için Javascript kullanarak iseniz her şeyin yolunda veya yanlış olduğunu eğer değilse onSubmit="return my_validation_function() ... doğrulama işlevi doğru dönmelidir ekleyebilirsiniz. (Yanlış dönüş değeri göndererek formu duracaktır)

Ben bir şey eksik sürece, hiç bir normal formu AJAX istemiyorum gibi geliyor.

Diğer commenters değindiğimiz gibi, gerçek cevap, bir web sayfasının URL'sini değiştiremezsiniz olduğunu ("#" fragmanı tanımlayıcı daha başka, ama bu sizin için yararlı değil) o bir istek göndermek için tarayıcı neden olmadan url.

Eğer AJAX yoluyla göndererek eğer URL'yi değiştirmek için çalışırken rahatsız etmek istiyorum. Diğer açıklamalarda önerilen Veya, bir post isteği yapabilirsiniz.

<form method="post" action="login.php">

Sizin yöntem biraz güvensiz ve bazı betik saldırılarına karşı savunmasız olduğunu. Ben bir Ajax giriş yapmıyor bakmak ve sadece de düzenli bir formu kullanmak istiyorum. Bu makale bana bir ton yardım:

http://www.evolt.org/PHP-Login-System-with-Admin-Features

Sadece Google "Evolt ajax login" - Evolt gerçekleştirmek için çalışıyoruz ne benzer başka bir tane var, ama ben okumadım