Avatar billede rille101 Nybegynder
09. juni 2008 - 15:49 Der 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">
  &nbsp;&nbsp;&nbsp;&nbsp;Password
                            &nbsp;&nbsp;
                            <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")

elseif request.form("password")=MyRS("password") then
Response.Cookies("cookienavn").Expires = DateAdd("h", 1, Now())
Response.Cookies("cookienavn")("login") = "true"
Response.Cookies("cookienavn")("brugernavn") = MyRS("brugernavn")
Response.Cookies("cookienavn")("Rang") = MyRS("rang")


MyRS.Close
Conn.Close

Response.Redirect (Request.ServerVariables("HTTP_REFERER"))

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?

Venlig hilsen
Rene
Avatar billede jakobdo Ekspert
09. juni 2008 - 15:57 #1
Kode 1:

<?php
if($_COOKIE['login']){
?>
    <form name="login" method="post" action="login_tjek.asp">
        <div align="right">
            <?php
                if($_GET['error']){
            ?>
            Fejl ved login! <br>
            Prøv venligst igen.
            <br>
            Brugernavn
            <input name="brugernavn" type="text" class="style2" id="brugernavn">&nbsp;&nbsp;&nbsp;&nbsp;Password&nbsp;&nbsp;
            <input name="password" type="password" id="password">
            <input name="Submit" type="submit" value="OK">
            <br>
            <?php
            }else{
            ?>
            Du er nu logget ind! <br>
    <a href="login_tjek.asp">Log ud</a>
    <?php
    }
    ?>
<br>
    </div>
    </form>
<?php
}
?>
Avatar billede jakobdo Ekspert
09. juni 2008 - 15:57 #2
Kode 2 kommer måske senere, hvis ingen springer til inden...
Avatar billede rille101 Nybegynder
09. juni 2008 - 16:05 #3
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?
Avatar billede showsource Seniormester
09. juni 2008 - 17:03 #4
Du skriver jo at der tjekkes for cookien "login"
Selv er jeg til at bruge isset()

<?php
if(!isset($_COOKIE["login"])){
?>
    <form name="login" method="post" action="login_tjek.php">
        <div align="right">
            <?php
                if(isset($_GET["error"])){
            ?>
            Fejl ved login! <br>
            Prøv venligst igen.
            <?php
                }
            ?>

            <br>
            Brugernavn
            <input name="brugernavn" type="text" class="style2" id="brugernavn">&nbsp;&nbsp;&nbsp;&nbsp;Password&nbsp;&nbsp;
            <input name="password" type="password" id="password">
            <input name="Submit" type="submit" value="OK">
            <br>
        </div>
    </form>
            <?php
            }else{
            ?>
<br>
            Du er nu logget ind! <br>
    <a href="login_tjek.php">Log ud</a>
<br>
<?php
}
?>
Avatar billede showsource Seniormester
09. juni 2008 - 17:04 #5
Og jakobdo's ex. viser jo faktisk formen hvis cookien er sat :O)
Avatar billede showsource Seniormester
09. juni 2008 - 17:20 #6
Et bud på nr. 2

<?php
$conn = mysql_connect("host","bruger","pass") or die (mysql_error());
mysql_select_db("databasenavn", $conn) or die (mysql_error());

$name = mysql_real_escape_string($_POST["Brugernavn"]);
$pass = mysql_real_escape_string($_POST["Password"]);

$sql = "SELECT * FROM `tabelnavn` WHERE `brugernavn` = '".$name."' AND `password` = '".$pass."'";

$find = mysql_query($sql) or die (mysql_error());

    if(mysql_num_rows($find) != 1) {

    header("Location:".$_SERVER["HTTP_REFERER"]."?error=true");
    exit;

    }else{

    $row = mysql_fetch_object($find);
    $cookietid = (time()+3600);

    setcookie("login", "sand", $cookietid, "/"); // Kan ikke li' "true" :O)
    setcookie("brugernavn", $row->brugernavn, $cookietid, "/");
    setcookie("Rang", $row->rang, $cookietid, "/");

    header("Location:".$_SERVER["HTTP_REFERER"]);
    exit;

    }
?>
Avatar billede jakobdo Ekspert
09. juni 2008 - 19:13 #7
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 ?
Avatar billede rille101 Nybegynder
09. juni 2008 - 20:31 #8
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?
Avatar billede showsource Seniormester
09. juni 2008 - 20:51 #9
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!";
}

?>
Avatar billede rille101 Nybegynder
26. juni 2008 - 15:09 #10
Jeg siger mange tak for hjælpen, nu er jeg godt igang med php indlæring.
Jeg deler pointene ud til jer, hvis I lige gider smide et svar!
Avatar billede jakobdo Ekspert
26. juni 2008 - 15:13 #11
Svar!
Avatar billede showsource Seniormester
27. juni 2008 - 07:43 #12
Og et svar.
Avatar billede showsource Seniormester
27. juni 2008 - 07:44 #13
Nåh, !
Avatar billede jakobdo Ekspert
27. juni 2008 - 10:49 #14
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester