09. juni 2008 - 15:49Der er
12 kommentarer og 2 løsninger
omskriv denne asp kode til php
Hej. Jeg er blevet enig med mig selv om at hoppe ud i PHP bassinet. Jeg har læst lidt hist og pist, og leget med lidt kodeeksempler, men jeg tror jeg mangler et eksempel der stiller de to sprog op overfor hinanden.
Jeg har derfor skrællet et loginscript sammen i asp, der har lidt forskellige statements.
Scriptet består af to sider. 1) 'Hvis man ikke er logget ind (hvis cookieværdien "login" ikke er "true") så ser man en loginform, ellers står der "du er logget ind".
<% If Not request.cookies("cookienavn")("login") = "true" then %> <form name="login" method="post" action="login_tjek.asp"> <div align="right"> <%if request.querystring("error") = "true" then%> Fejl ved login! <br> Prøv venligst igen. <%end if%> <br> Brugernavn <input name="brugernavn" type="text" class="style2" id="brugernavn"> Password <input name="password" type="password" id="password"> <input name="Submit" type="submit" value="OK"> <br> <%else%> Du er nu logget ind! <br> <a href="login_tjek.asp">Log ud</a> <%end if%> <br> </div> </form> <%end if%>
2) Der tjekkes om værdierne fra de to tekstfelter findes i tabellen i databasen. Hvis ikke, sendes man tilbage første side med en fejlværdi i querystring. Ellers bliver der oprettet en cookie med forskellige værdier.
<% Set Conn = Server.CreateObject("ADODB.Connection") Set MyRS = Server.CreateObject("ADODB.RecordSet")
MyConnection = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/db/database.mdb") Conn.Open MyConnection MySQL = "Select * from Brugere where brugernavn='" & request.form("Brugernavn") & "'"
' response.write(MySQL) set MyRS = Conn.Execute(MySQL)
if MyRS.EOF then Response.Redirect (Request.ServerVariables("HTTP_REFERER") & "?error=true")
else Response.Redirect (Request.ServerVariables("HTTP_REFERER") & "?error=true") end if %>
Er der een der kan lave dette i php, samt derefter være til rådighed med svar, hvis jeg har brug for at spørge lidt ind til de forskellige ting der bliver oversat?
Tak skal du have. Jeg studser over at du ikke skriver nogen steder at det er cookien ved navn "cookienavn" vi har med at gøre. Kan php selv finde ud af det?
Tak showsource: Så også selv jeg havde lavet fejl i min kode, da jeg ikke lige havde set NOT i asp koden. isset() vs == true, kan vel ikke stilles direkte op mod hinanden. Det bør vel være:
if(isset($var) && $var == true)
da isset blot tjekker om $var er sat eller ej.
En anden ting, var det ikke en ide at bruge session og ikke en cookie ?
Det ser godt ud. Jeg prøver det i morgen. grunden til at jeg efterlyser cookienavn, er at jeg i min originalkode har cookien "COOKIENAVN" med værdien "LOGIN" der er sat til "true"
Det er mest for lige at få vist eksempel som jeg kan relatere til. Det er vel bare at skifte session ud med cookie når det kommer dertil ik?
Ja og nej, en cookie skal sættes før output til browser, hvorimod en session kan defineres når du har lyst. Dog skal session_start() også bruges FØR output. Pr. default vil session_start() sætte en cookie som har navn efter hvad session_name() er defineret til i php.ini, ( navn kan ændres med ini_set() før session_start() ) og med en værdi som er lig med session_id()
<?php session_start();
$_SESSION["login"] = "Et eller andet";
echo $_SESSION["login"]."<p>";
$_SESSION["login"] = "Noget helt andet";
echo $_SESSION["login"];
unset($_SESSION["login"]);
echo"<p>";
if(!isset($_SESSION["login"])) { echo"Session \"login\" er ikke sat!"; }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.