Avatar billede renedk Nybegynder
04. november 2005 - 15:08 Der er 7 kommentarer og
1 løsning

PHP autologin hjælp

Hej vil gerne have sat autologin på dette script... Nogen der kan hjælpe??

Login scriptet virker fint...

På forhånd tak ReneDK

<style type="text/css">
<!--
a:link {
    text-decoration: none;

    color: #808080;
}
a:visited {
    text-decoration: none;

color: #808080;
}
a:hover {
    text-decoration: underline;

    color: #FF9900;
}
a:active {
    text-decoration: none;
color: #808080;

</style>

<?php

ob_start();

//hent header.php

require("login_top.php");
echo "<center>";

?>

<form method=post action=login.php?action=check>
  <div align="center">
  <table cellspacing="1" width="428">
<tr><td align="right">
<font size=1 face=verdana color=808080>Brugernavn:</font></td><td>
<input type="text" class="but" name="Uname" style="color: #FF9900; font-size: 8pt; font-family: Verdana" size="17"></td></tr><tr>
    <td align="right">
<font size=1 face=verdana color=808080>Password:</font></td><td>
<input type="password" class="but" name="Pword" style="color: #FF9900; font-size: 8pt; font-family: Verdana" size="17"></td></tr><tr>
    <td rowspan="2" align="right">

<tr><td>
<input type="checkbox" name="C1" value="ON"><font face="Verdana" size="1" color="#808080">autologin</font><br>
<input type="submit" class="button" value="login" name="send" style="font-family: Verdana; font-size: 8pt"></td></tr>
&nbsp;</td>
</tr>
<tr><td align="right">
<a href=forgotpassword.php><font size=1 face=verdana>Glemt password</font></a></td><td>
<font size=2 face=verdana>| <font size=1 face=verdana> <a href=register.php>Registrer</a>
</font></td></tr>
</table>
    </div>

</form>



<?php

//check input
if($_GET['action'] == 'check')
{
//find bruger
$result = mysql_query("SELECT * FROM easystart_brugere WHERE Uname='{$_POST['Uname']}'") or die(mysql_error());
$row = mysql_fetch_array( $result );
  if($row['Uname'] == "")
  {
      echo error();
  }
  else
  {
      //$enc = md5($_POST['Pword']);
      $enc = $_POST['Pword'];
      if($row['Pword'] == $enc)
      {
          $_SESSION['Uname'] = $_POST['Uname'];
          $_SESSION['lp'] = 'pl';
      header("Location: main.php");
          exit;
      }
      else
      {
        echo error();
      }
  }
}
if($_GET['action'] == 'registered')
{
echo "<font size=1 face=verdana color=ff9900>Du er nu registreret!";
}
function error()
{
echo "<font size=1 face=verdana color=red>Dit brugernavn/password er forkert!";
}

?>
Avatar billede jakobdo Ekspert
04. november 2005 - 22:33 #1
Rene, har vi ikke kigget på dette før?
Avatar billede renedk Nybegynder
05. november 2005 - 13:20 #2
jo... men jeg fandt aldrig ud af det... :( , så jeg prøvede lige at poste det igen..

jeg skal bare bruge noget hjælp til at få sat en cookie, så den husker det login..
Avatar billede jakobdo Ekspert
06. november 2005 - 17:16 #3
Du sætter en cookie med setcookie()
Jeg vil anbefale dig at gemme brugernavn i plaintext og password som md5().
Du laver en checkbox som angiver om autologin skal bruges eller ej.
Når en bruger kommer på din side, tjekker du først cookie, og derefter viser du ellers loginboksen.
Avatar billede renedk Nybegynder
10. november 2005 - 17:36 #4
Det kan godt være det er lidt flad af mig, men kan simpelthen ikke få noget til at virke... Vil du ikke være sød at hjælpe mig lidt mere?.. :)
Avatar billede jakobdo Ekspert
10. november 2005 - 18:48 #5
Jeg har ikke ændret dit "slamkode" så det er ikke kønt, med det virker måske! :o)

<style type="text/css">
a:link
{
    text-decoration: none;
    color: #808080;
}
a:visited
{
    text-decoration: none;
    color: #808080;
}
a:hover
{
    text-decoration: underline;
    color: #FF9900;
}
a:active
{
    text-decoration: none;
    color: #808080;
}
</style>

<?php
ob_start();

//hent header.php

require("login_top.php");

//Vi tjekker om cookien er sat og tjekker den mod db.
if(isset($_COOKIE["Uname"]) && isset($_COOKIE["Pword"]))
{
    $user = mysql_escape_string($_COOKIE["Uname"]);
    $pass = mysql_escape_string($_COOKIE["Pword"]);
   
    $result = mysql_query("SELECT * FROM easystart_brugere WHERE Uname='".$user."' AND Pword = '".$pass."' LIMIT 1") or die(mysql_error());
    if(mysql_num_rows($result)>0)
    {
        $_SESSION['Uname'] = $user;
        $_SESSION['lp'] = 'pl';
        header("Location: main.php");
        exit;
    }
}

echo "<center>";

?>

<form method=post action=login.php?action=check>
  <div align="center">
      <table cellspacing="1" width="428">
            <tr>
                <td align="right">
                    <font size=1 face=verdana color=808080>Brugernavn:</font>
                </td>
                <td>
                    <input type="text" class="but" name="Uname" style="color: #FF9900; font-size: 8pt; font-family: Verdana" size="17">
                </td>
            </tr>
            <tr>
            <td align="right">
                    <font size=1 face=verdana color=808080>Password:</font>
                </td>
                <td>
                    <input type="password" class="but" name="Pword" style="color: #FF9900; font-size: 8pt; font-family: Verdana" size="17">
                </td>
            </tr>
            <tr>
            <td rowspan="2" align="right">
                    <input type="checkbox" name="C1" value="ON"><font face="Verdana" size="1" color="#808080">autologin</font><br>
                    <input type="submit" class="button" value="login" name="send" style="font-family: Verdana; font-size: 8pt">
                </td>
            </tr>
            <tr>
                <td align="right">
                    <a href=forgotpassword.php><font size=1 face=verdana>Glemt password</font></a>
                </td>
                <td>
                    <font size=2 face=verdana>| <font size=1 face=verdana> <a href=register.php>Registrer</a></font>
                </td>
            </tr>
        </table>
    </div>
</form>

<?php

//check input
if($_GET['action'] == 'check')
{
    //find bruger
    $user = mysql_escape_string($_POST['Uname']);
    $pass = md5($_POST['Pword']);

    $result = mysql_query("SELECT * FROM easystart_brugere WHERE Uname='".$user."' AND Pword = '".$pass."' LIMIT 1") or die(mysql_error());
    if(mysql_num_rows($result)>0)
    {
        if(isset($_POST["C1"]))
        {
            //Brugeren ønsker autologin (vi gemmer den 1 år)
            setcookie("Uname", $user, time()+(60*60*24*365));
            setcookie("Pword", $pass, time()+(60*60*24*365));
        }
        else
        {
            setcookie ("Uname", "", time() - 3600);
            setcookie ("Pword", "", time() - 3600);
        }
        $_SESSION['Uname'] = $user;
        $_SESSION['lp'] = 'pl';
        header("Location: main.php");
        exit;
    }
    else
    {
        echo error();
    }
}

if($_GET['action'] == 'registered')
{
    echo "<font size=1 face=verdana color=ff9900>Du er nu registreret!";
}

function error()
{
    echo "<font size=1 face=verdana color=red>Dit brugernavn/password er forkert!";
}
ob_end_flush();
?>
Avatar billede renedk Nybegynder
11. november 2005 - 13:02 #6
Så fungerer det sQ lige på nær denne streng

$user = mysql_escape_string($_POST['Uname']);
$pass = md5($_POST['Pword']);

Sådan her så virker det..

$user = mysql_escape_string($_POST['Uname']);
$pass = mysql_escape_string($_POST['Pword']);
Avatar billede jakobdo Ekspert
12. november 2005 - 23:26 #7
Ahh, men du må ikke gemme brugernavn og kodeord i en cookie i plaintext.
Overvej at brug noget kryptering eller hashing som md5 er.

Og et svar! :o)
Avatar billede jakobdo Ekspert
13. november 2005 - 17:03 #8
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