Ik heb net een redelijk simpel Login script gemaakt waarbij een gebruiker in kan loggen op een website.
Na de login kunnen er twee dingen gebeuren:
1- de gebruiker heeft één keuze mogelijkheid.
2- de gebruiker heeft meer keuze mogelijkheden.
Het gaat hier om een simpel lijstje, met bijvoorbeeld het aanpassen van profiel, opslaan van bookmarks, wijzigen avatar, enz.
Als er meer keuze mogelijkheden zijn is dit natuurlijk heel erg mooi, maar als er maar één keuze is, staat dit nogal kaal en/of raar.
Zou het niet geweldig zijn als je bij één keuze meteen doorgestuurd werd naar deze keuze!?
Daar ben ik nu dus mee bezig. Het login script gaat met een Ajax scriptje en een Stored Procedure kijken of men toegang heeft en zo ja, welke keuzes er zijn.
Dan wordt via het XML feedje een error terug gestuurd, of één of meer keuzes. Terug bij het onreadystatechange script wordt het lijstje opgebouwd en weergegeven met innerHTML.
(ik weet dat al die mooie technieken misschien een beetje overkill zijn voor een simpel login script, maargoed, ik moet het ook op en of andere manier leren
De vraag nu is de volgende. Hoe kan ik zorgen dat er na het verwerken van m'n script een refresh plaatsvindt, maar dan enkel bij één keuze.
Wat ik al heb geprobeerd zijn een HTML meta refresh en JS document.location.reload().
Helaas werken ze beide niet omdat de HTML natuurlijk al geladen is voordat er met innerHTML wat wordt toegevoegd.
Ik loop nu even tegen een blinde muur aan, iemand een idee?
Na de login kunnen er twee dingen gebeuren:
1- de gebruiker heeft één keuze mogelijkheid.
2- de gebruiker heeft meer keuze mogelijkheden.
Het gaat hier om een simpel lijstje, met bijvoorbeeld het aanpassen van profiel, opslaan van bookmarks, wijzigen avatar, enz.
Als er meer keuze mogelijkheden zijn is dit natuurlijk heel erg mooi, maar als er maar één keuze is, staat dit nogal kaal en/of raar.
Zou het niet geweldig zijn als je bij één keuze meteen doorgestuurd werd naar deze keuze!?
Daar ben ik nu dus mee bezig. Het login script gaat met een Ajax scriptje en een Stored Procedure kijken of men toegang heeft en zo ja, welke keuzes er zijn.
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
| function getCheckLoginData(Username,Password) { xmlHttp = GetXmlHttpObject(); if (xmlHttp == null) { alert ("Browser does not support HTTP Request"); return; } var geturl = "get_login.php?user="+Username+"&pass="+Password+"&sid="+Math.random(); xmlHttp.onreadystatechange = stateChangedCheckLogin; xmlHttp.open("GET",geturl,true); xmlHttp.send(null); } |
Dan wordt via het XML feedje een error terug gestuurd, of één of meer keuzes. Terug bij het onreadystatechange script wordt het lijstje opgebouwd en weergegeven met innerHTML.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| $xmlfile = xmlHeader(); $xmlfile .= "<response>\n"; $result = $mysqli->query("CALL sp_login('" . $_GET['user'] . "','" . $_GET['pass'] . "')"); while($rows = $result->fetch_assoc()) { if($rows['loginstatus'] == 0) { $xmlfile .= "\t<error>" . $rows['loginstatus_message'] . "</error>\n"; } else { $xmlfile .= "\t<domain id=\"" . $rows['domain_id'] . "\">\n"; $xmlfile .= "\t\t<customer>" . $rows['customer_name'] . "</customer>\n"; $xmlfile .= "\t\t<domain_name db_name=\"" . $rows['domain_database'] . "\" db_user=\"" . $rows['domain_login'] . "\" db_pass=\"" . $rows['domain_password'] . "\">" . $rows['domain_name'] . "</domain_name>\n"; $xmlfile .= "\t</domain>\n"; } } $xmlfile .= "</response>\n"; print $xmlfile; |
(ik weet dat al die mooie technieken misschien een beetje overkill zijn voor een simpel login script, maargoed, ik moet het ook op en of andere manier leren
De vraag nu is de volgende. Hoe kan ik zorgen dat er na het verwerken van m'n script een refresh plaatsvindt, maar dan enkel bij één keuze.
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| function stateChangedCheckLogin() { if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") { var xmlDoc = xmlHttp.responseXML; if (xmlDoc.getElementsByTagName("error")[0]) { document.getElementById('error').innerHTML = xmlDoc.getElementsByTagName("error")[0].childNodes[0].nodeValue; } else { var NewContent = "<fieldset><label><h1>Domeinen:</h1></label></fieldset>\n"; NewContent = NewContent+"<ul id=\"domain_array\">"; for( var i=0; i<xmlDoc.getElementsByTagName("domain").length; i++ ) { NewContent = NewContent+"<li><a href=\"home.php?domain="+xmlDoc.getElementsByTagName("domain")[i].getAttribute("id")+"\">"+xmlDoc.getElementsByTagName("domain_name")[i].childNodes[0].nodeValue+"</a></li>"; } NewContent = NewContent+"</ul>"; } document.getElementById('login').innerHTML = NewContent; } } } |
Wat ik al heb geprobeerd zijn een HTML meta refresh en JS document.location.reload().
Helaas werken ze beide niet omdat de HTML natuurlijk al geladen is voordat er met innerHTML wat wordt toegevoegd.
Ik loop nu even tegen een blinde muur aan, iemand een idee?
Als ik een leuke signature bedenk, zijn jullie de eerste die het weten