Login Script Cookies/Sessions

chinese1

Mitglied
Hallo, habe ein ziemliches Problem und zwar habe ich ein Loginscript gemacht. Immoment kann man sich damit nur Anmelden, es läuft über eine mysql Datenbank. Nun würde ich es gerne so machen das wenn man ein hacken setzt bei Login Speichern das es per Cookie oder Session keine ahnung gespeichert wird. Bin noch nicht so der Php Guru. Ich Poste euch aber mal mein bisherigen Code:

login.php
PHP:
if(isset($_POST['user']) == true) {
$abfrage = "SELECT user_id, username,user_password FROM users WHERE username = '$_POST[user]'";
$ergebnis = mysql_query($abfrage);

while ($row = mysql_fetch_object($ergebnis))
{
if($_POST['user'] == $row->username and md5($_POST['pw']) == $row->user_password) {


$user_s = $_POST['user'];
session_register("user_s");
echo "<meta http-equiv='refresh' content='3; URL=index.php?page=news'><br><br><h5><center><b>Login successful!</b><br><br><br>You were successfully logged in as <b>$user</b><br><br></h5></center>";
}
else
{
echo "<meta http-equiv='refresh' content='3; URL=user_login.html'><br><br><h5><center><b>Name or Passwort incorrect!</b><br><br><br>Try again please...</h5></center>";
};
}
}

Hier nun das Formular:
user_login.html
PHP:
<form name="Login" method="post" action="login.php">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr height="12"> 
      <td width="30%">&nbsp; </td>
      <td width="70%">&nbsp; </td>
    </tr>
    <tr> 
      <td width="30%">Nickname:</td>
      <td width="70%"> 
        <input type="text" name="user" size="30">
      </td>
    </tr>
    <tr> 
      <td width="30%">Password:</td>
      <td width="70%"> 
        <input type="password" name="pw" size="30">
      </td>
    </tr>
    <tr> 
      <td width="30%">&nbsp;</td>
      <td width="70%"> 
        <input type="checkbox" name="save_login" value="checkbox" style="background-color: #575B65;">
        Save Login </td>
    </tr>
    <tr>
      <td width="30%">&nbsp;</td>
      <td width="70%">
        <input type="submit" name="submit" value="login now">
      </td>
    </tr>
  </table>
</form>

Das Checkbox feld ist schon da, nur leider hab ich keine ahnung wie ich des jetzt speichern kann. Weiß nur das es mit Cookies und/oder Sessions geht. Ich weiß es gibt schon mehrere Threads wo ähnliches drin steht aber glaubt mir ich hab es nicht hinbekommen.

P.S. Wenn jemand was weiß, bitte auch hinschreiben wie ich das Cookie oder die Session dann nachher wieder auslesen kann damit der User beim nächsten Login auch gespeichert ist.

Vielen Dank im vorraus
 
Hallo.
1. Meinst du abspeichern, dass er dann immer eingeloggt ist, wenn er deine Seite betritt, oder wie?
2. Ich sehe, dass du schon mit Sessions arbeitest. Kleine Frage: Hast du am Anfang des login.php Scripts session_start(); stehen? Wenn nicht, bringt dir das:
$user_s = $_POST['user'];
session_register("user_s");
nicht viel.

Wenn der User immer eingeloggt sein soll, ginge das so:
PHP:
//in der while Schleife

if(isset($_POST['save_login']) AND $_POST['save_login'] == 'checkbox')
{
     setcookie('COOKIENAME','COOKIEINHALT',COOKIEDAUER);
}

// weiterleitung durch meta refresh
// restlicher code

Hoffe, dass ist das, was du suchst.

mb fanste
 
Hallo fanste, danke für deine Antwort genau das meine ich! :-)

Ein session_start(); steht natürlich am anfang des scriptes des wird aber aus einer sessions.php included daher stehts nid im code.

Zu deiner Antwort:
Das is genau das was ich suchte, kannst du mir nun noch sagen welchen code ich in die index.php (die hauptseite) einfügen muss damit man eingeloggt ist? Oder reicht das so wie es da steht?

Gruß und Vielen Dank
 
Du musst 2 Cookies erstellen. Einer für den Usernamen, und der andere für das Passwort.
Auf der index.php greifst du dann ganz einfach auf die Cookies via $_COOKIE['COOKIENAME'] zu.

Kann du ja so machen:
PHP:
if(isset($_COOKIE['COOKIENAME']) AND isset($_COOKIE['COOKIENAME2']))
{
   // Dann die Daten in einer Sessiojn registrieren.
}

// weiterer code
 
Ah soweit ok, noch eine Frage

// Dann die Daten in einer Sessiojn registrieren.

Was heißt das genau?
Und was heißt weiterer Code?

Sorry wenn ich so dumm frage :-)

Achja und wie siehts aus mit PW verschlüsseln im Cookie?

Gruß & Danke
 
Das Passwort kannst du mit md5 verschlüsselt hinterlegen.

// Dann die Daten in einer Sessiojn registrieren.

$_SESSION['username'] = $_COOKIE['COKKIE_MIT_USERNAME_DRIN'];

// weiterer code
Index.php weitermachen. diese If Anweisung würde ichan den Anfang vom Script schreiben.
 
Vielen Dank, Probier das gleich mal aus ich nehm mal an das wenn ich:
den username in die session übergebe das passwort dann auch übergeben muss oder?

also so:
$_SESSION['username'] = $_COOKIE['COKKIE_MIT_USERNAME_DRIN'];
$_SESSION['password'] = $_COOKIE['COKKIE_MIT_PASSWORT_DRIN'];


greetz und Danke :)
 
Wenn du das Passwort auch bei deinem Loginscript in einer Session speicherst, aknnst du das ruhig machen.
 
Hallo nochmal,

das mit den Cookies setzen funktioniert gut, problem was weiterhin besteht ist das der index die cookies nicht anerkennt oder ausliest bzw in die session speichert. Ich poste dir nun nochmal meine fertigen codes:

login.php
PHP:
if(isset($_POST['user']) == true) {

$query = "SELECT username, user_password FROM phpbb_users WHERE username = '$_POST[user]'";
$result = mysql_query($query);

while ($row = mysql_fetch_object($result)) {

if($_POST['user'] == $row->username and md5($_POST['pw']) == $row->user_password) {


// Cookies
if(isset($_POST['save_login']) AND $_POST['save_login'] == 'yes')
{
     setcookie("user_name", $_POST[user], time()+(3600*24*365));
     setcookie("user_pass", $_POST[pw], time()+(3600*24*365));

}
// Cookies Ende


$user_s = $_POST['user'];
session_register("user_s");

echo "<meta http-equiv='refresh' content='3; URL=index.php?page=news'><br><br><h5><center><b>Login successful!</b><br><br><br>You were successfully logged in as <b>$user</b><br><br></h5></center>";
}
else
{
echo "<meta http-equiv='refresh' content='3; URL=?page=login'><br><br><h5><center><b>Name or Passwort incorrect!</b><br><br><br>Try again please...</h5></center>";
};
}
}


index.php
PHP:
session_start();

if(isset($_COOKIE['user_name']) AND isset($_COOKIE['user_pass']))
{

   $_SESSION['username'] = $_COOKIE['user_name'];
   $_SESSION['user_password'] = $_COOKIE['user_pass'];

}

// restlicher code...

Der fehler ist in der Index.php oder?

Gruß & Danke :-)
 
Liegen die Scripte login.php und index.php im selben Ordner? Muss nämlich so sein. Wenn nicht, kannst du die Cookies in der index.php setzten. Einfach mit if schauen, ob der User schon eingeloggt ist und die Cookies noch nicht bestehen.
 
Zurück