webForumDet fria alternativet

Vari ligger missen?

3 svar · 551 visningar · startad av PollyJuice

PollyJuiceMedlem sedan mars 2006124 inlägg
#1

Hej,

jag försöker skapa en sida som kombinerar Ajax och PHP. När man skrivit in användarnamn och lösenord och trycker på knappen, ska losenordskoll.php kolla att användarnamn och lösenord är de rätta. Därefter ska ett av två meddelanden läsas in av ett script i HTML-filen, och skrivas ut i en div-tagg där.

Mitt problem är att värdena anvandarnamn och losenord aldrig förs över till PHP, så den skickar alltid tillbaka felmeddelandet. Vad är det jag har missat?

Såhär ser filerna ut:

HTML-fil:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Övning 6, uppgift 1</title>
<script type="text/javascript" src="asynkron.js"></script>
<script type="text/javascript">

function processaDokument(XHR)
{
var malElement = document.getElementById("texten");
malElement.innerHTML =  XHR.responseText;
}

</script>
</head>
<body>

<div id="hej">
<form id="inmatning" method="get" enctype="" action="">

<table cellpadding="10">

  <tr><td><h2>Inloggning</h2></td></tr>
  
  <tr><td><input type="text" id="anvandarnamn" name="anvandarnamn" value="Anv&auml;ndarnamn" /></td></tr>

<tr><td><input type="password" id="losenord" name="losenord" value="L&ouml;senord" /></td></tr>

<tr><td align="right"><input type="button" value="Kolla" onclick="hamtaFranServern('losenordskoll.php', processaDokument);"
/></td></tr>

</table>
</form>
</div>

<div id="texten"></div>
</body>
</html>

PHP-fil:

<?php 
//kontrollerar förväntade användarnamn och lösenord 
if ( ($_GET['anvandarnamn'] == "per") && ($_GET['losenord'] == "1234") ) 
{ 
	echo "Detta är ett superhemligt meddelande"; 
}
else { 
	echo "Du måste ange rätt användarnamn och lösenord"; 
} 
?>

och asynkron.js, som refereras till:

function hamtaFranServern(url, handelsehanterare)
{
var XHRobjekt = null;
try {
XHRobjekt = new XMLHttpRequest(); // Firefox, Opera, ...
}
catch(err1) {
try {
XHRobjekt = new ActiveXObject("Microsoft.XMLHTTP");// Några IE ver
}
catch(err2) {
try {
XHRobjekt = new ActiveXObject("Msxml2.XMLHTTP"); // Några IE ver
}
catch(err3) {
XHRobjekt = false;
}//catch 3
}//catch 2
}//catch 1
if (XHRobjekt)
{
XHRobjekt.onreadystatechange = function()
{
if (XHRobjekt.readyState == 4)

{
handelsehanterare(XHRobjekt);
delete XHRobjekt; //städar upp
XHRobjekt = null; //referensen pekar nu på null
}//if
}//slut på den anonym funktion som körs när tillståndet i XHR ändras
XHRobjekt.open("GET", url);
XHRobjekt.send(null);
}//if objekt existerar
}//slut på funktionen hamtaFranServern()
nitro2k01Medlem sedan aug. 20039 342 inlägg
#2

Ingenstans i koden på serversidan behandlar du ju användarnamn/lösenord alls. Användarnamnet flyttar sig inte magiskt in i AJAX-anropet, utan detta måste din kod göra.

Om du bara vill få godkänt på uppgiften bör följande kod göra susen. Sen finns det problem med koden i sin nuvarande utformning. Tex borde du använda en POST-request istället för en GET-request för en sådan sak som lösenord.

var anvandarnamn_esc = escape(document.getElementById('anvandarnamn').value);
var losenord_esc = escape(document.getElementById('losenord').value);

XHRobjekt.open("GET", url + '?anvandarnamn=' + anvandarnamn_esc + '&losenord=' + losenord_esc);
PollyJuiceMedlem sedan mars 2006124 inlägg
#3

Ahaaaa, jag inbillade mig att då <form> länkade till PHP-filen, så skulle den läsa av id:na automatiskt. Får nog läsa på lite bättre.

Tack för hjälpen, nu fattar jag hur det ska göras.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#4

Om du använder jQuery kan du enkelt skicka formuläret med något i still med

$.get("losenordskoll.php", $("#inmatning").serialize());
// eller ännu hellre
$.post("losenordskoll.php", $("#inmatning").serialize());

Jag anar att detta inte skulle gillas för din utbildning, men kanske något att titta vidare på för egen del.

128 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)