Paswoord veilig wijzigen met ajax

Status
Niet open voor verdere reacties.

JeroenE

Terugkerende gebruiker
Lid geworden
20 mrt 2005
Berichten
1.950
Hoe kan ik het wijzigen van leden hun paswoord veiliger laten verlopen zonder de pagina helemaal opnieuw te moeten laden en zonder het paswoord mee te geven bij het aanroepen van de pagina?

Ik heb momenteel het volgende in ajax:

[JS]
function wijzigpaswoord() {
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("mijndiv").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "wijzigpaswoord.php?oudpaswoord="+document.getElementById("oudpaswoord").value+"&nieuwpaswoord="+document.getElementById("nieuwpaswoord").value, true);
xmlhttp.send();
}
[/JS]

Dit voelt niet goed al werkt het wel.
 
Laatst bewerkt:
Via GET is een doodzonde......
Gebruik op zijn minst POST, en bij voorkeur een SSL-verbinding.
 
De SSL-verbinding gebruikte ik al, maar niet gedacht dat POST ook kon gebruikt worden ipv GET.
Thx PHP4U
 
Graag gedaan :)
 
Met POST lukt het niet.
Dit is wat ik nu heb:

[JS]
function wijzigpaswoord() {
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("mijndiv").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("POST", "wijzigpaswoord.php", false);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("oudpaswoord="+document.getElementById("oudpaswoord").value+"&nieuwpaswoord="+document.getElementById("nieuwpaswoord").value);
}
[/JS]

en in de wijzigpaswoord.php heb ik dit:

PHP:
$oudpaswoord = $_POST["oudpaswoord"];
$nieuwpaswoord = $_POST["nieuwpaswoord"];

echo "Uw paswoord werd gewijzigd naar " . $nieuwpaswoord;

Ik krijg echter geen respons
 
Laatst bewerkt:
Ik heb nu het voglende, maar krijg het nog steeds niet werkend:

PHP:
function wijzigpaswoord() {
    var oudpw = document.getElementById("oudpaswoord").value;
    var nieuwpw = document.getElementById("nieuwpaswoord").value;
    if (window.XMLHttpRequest) {
        xhttp = new XMLHttpRequest();
    } else {
        xhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xhttp.open("POST", "wijzigpaswoord.php", true);
    xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhttp.send("oudpaswoord="+oudpw+"&nieuwpaswoord="+nieuwpw);
    document.getElementById("mijndiv").innerHTML = xhttp.responseText;
}

Ook het volgende waarin ik alleen het inlogformulier opvraag zonder gegevens te verzenden werkt niet:

PHP:
function inlogformulier() {
    if (window.XMLHttpRequest) {
        xhttp = new XMLHttpRequest();
    } else {
        xhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xhttp.open("POST", "inloggen.php", true);
    xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhttp.send();
    document.getElementById("mijndiv").innerHTML = xhttp.responseText;
}

Nog iemand ideeën wat ik fout doe?
 
Ik denk dat het te maken heeft met asynchroniteit aangezien de derde parameter in je xmlhttp object true is (async).

Wellicht kun je het volgende eens toevoegen:

Code:
xhttp..onreadystatechange = function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
        document.getElementById("mijndiv").innerHTML = xhttp.responseText;
    }
  };

In dit stukje wordt een callback gezet die de data opvangt als er een antwoord van de server komt.

referentie:
http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp

Verder kun je misschien eens kijken wat er in $_POST in je wijzigpassword.php staat. Als de data daar binnenkomt heb je in ieder geval een gedeelte van het problem uitgesloten.
 
Laatst bewerkt:
Check anders even je debug-console. Misschien dat waardes uit password-fields niet eens door AJAX geaccepteerd worden, vanuit veiligheid.
Ik kan mij zoiets wel indenken.
 
Dank je wel, NewbiProgrammer en PHP4U, voor jullie antwoord. Ajax kreeg in eerste instantie inderdaad de gegevens niet mee door een punt ipv een punt-komma.
Wat die onreadystate betreft, had ik op w3schools gezien dat de voorbeelden met get dit hadden, maar die met post niet.
Ik heb de oplossing ondertussen gevonden en er 1 functie van gemaakt die via verschillende links en andere data kan aangeroepen worden.
Hier is ze:
[JS]
function fgetcontent(surl, sdiv, sparams) {
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else {
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("POST", surl, false);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.setRequestHeader("Content-Length", sparams.length);
xhttp.setRequestHeader("Connection", "close");
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
sdiv.innerHTML = xhttp.responseText;
}
}
xhttp.send(sparams);
}[/JS]
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan