• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Login Fragen

Status
Für weitere Antworten geschlossen.

Chrisok

Neues Mitglied
So moje erstmal in die Runde,

wage mich so langsam an PHP und natürlich kommen mir direkt ein paar Fragen^^

Bisher habe ich mir ein Login Skript gebastelt und wie ich finde ist es mir ganz gut gelungen...

PHP:
<?php
session_start();

$verbindung = mysql_connect("localhost" , "xxxx" , "xxxx")
or die ("Da ist wohl etwas schief gelaufen... Bitte wenden sie sich an den Administrator dieser Page!");
mysql_select_db("usr_web55_6") or die ("Datenbank kaputt?!");

$Username = $_POST["Username"];
$password = $_POST["password"];

$abfrage = "SELECT Username, password FROM User WHERE Username LIKE '$Username' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);

if($row->password == $password && !empty($password))
    {
    $_SESSION["Username"] = $Username;
    echo "Login erfolgreich. <br> <a href=\"/page.php\">Weiter zur Page...</a>";
    }
else
    {
    echo "Benutzername und/oder Passwort waren falsch. <a href=\"index.html\">Zurück zum Login</a>";
    } 
?>
Hinterher ist nem Kumpel noch aufgefallen, dass "&& !empty($password)" hinzugefügt werden muss... :mrgreen:


Naja, nun ist aber meine Frage wie ich es verhindern kann per Adresszeileneingabe die eigentliche page aufzurufen, denn sonst ist das Login ja wohl eher unnötig...^^

Das heißt doch, dass am Anfang jeder htm bzw php ne Abfrage stattfinden muss, ob derjenige geloggt ist oder nicht, oder?

Möchte natürlich nichts vorgefertigtes, denn da bleibt das Lernen wohl eher auf der Strecke... Aber würde mich über Erklärungen zu dem Thema schon freuen!^^

Bis dahin erstmal

Chrisok
 
Sodele, nach einigem Lesen z.b. der Links von thuemmy bin ich nun zum Schluss gekommen, dass die session daten scheinbar nicht übergeben werden...

Zum Verständnis: In der index habe ich mein login Formular, die Daten werden mit dem obigen Skript weitergegeben an die eigentliche page...
Zuletzt habe ich mal vor die eigentliche page ne Überprüfung geschrieben:

PHP:
<?php 
session_start (); 
if (!isset ($_SESSION["Username"])) 
{ 
  echo "Du bist nicht eingeloggt! <br>
  Hier gehts zum <a href="/index.html">Login</a>"; 
} 
?>
Die Sache ist mir wird ne schöne weiße Seite angezeigt und das wars...
Also entweder hab ich da Müll geschrieben oder die session wird wie gesagt nicht übertragen...
Wäre dann jetzt doch für etwas konkretere Hilfe dankbar, da ich erstmal genug gelesen hab...^^
 
Username='/**/UNION/**/SELECT/**/Username,'haha'/**/FROM/**/User/**/WHERE/**/userID=1/*&password=haha

danke das ich mich als admin einloggen darf... der query dürfte nicht funktionieren da ich deine genaue datenbank struktur nicht kenne aber das dürfte sich leicht herausfinden lassen. :)

also wede dich bitte vertrauensvoll an
PHP: mysql_real_escape_string - Manual
danke. :)

Ps: warum nimmst du mysql_fetch_object? ist viel zu langsam und du arbeitest doch garnicht mit objekten ^^ also nimm lieber mysql_fetch_assoc ist auf jeden fall schneller und in diesem fall auch sinnvoller. :)

//Edit: irgendwie habe ich das gefühl das der thread starter diesen post noch nicht gelesen hat^^
 
Zuletzt bearbeitet von einem Moderator:
Wenn Du Dich richtig eingelogged hast, wird dem Script auch nichts anderes übrig bleiben, als eine leere Seite auszuliefern, zumindest von dem her zu urteilen, was Du gepostet hast.

Gruß thuemmy
 
Doch klar.. Habs mehrmals versucht... Wenn es beim Einloggen Schwierigkeiten gegeben hätte wäre ich ja auf ein negatives echo gestoßen...

Das loggen hat immer gefunzt, demnach müsste er ja auch "Username" in der session gespeichert haben, oder?
Und wenn er das hat, müsste ich ja auch die page zu Gesicht bekommen, dank der Abfrage davor, oder?
 
Code:
[LEFT][COLOR=Black]<?php 
session_start (); 
if (!isset ($_SESSION["Username"])) 
{ 
  echo "Du bist nicht eingeloggt! <br>
  Hier gehts zum <a href=[B][COLOR=Red]\[/COLOR][/B]"/index.html[B][COLOR=Red]\[/COLOR][/B]">Login</a>"; 
} 
?>    [/COLOR][/LEFT]
Da ist auf jeden Fall ein Fehler, du musst die Anführungszeichen in der Ausgabe maskieren. Es könnte sein, dass das Script an der Stelle abbricht.

Gruß thuemmy
 
Stimmt danke... Hatte ich völlig vergessen -.-

Nun wird mir am Anfang der Seite "Du bist nicht eingeloggt! Hier gehts zum Login" angezeigt...
Sollte diese Phrase nicht auf einer eigenen Seite erscheinen statt auf der page zu der geleitet werden soll?
 
Warum sollte sie auf einer eigenen Seite erscheinen. Die Phrase erscheint auf der Seite, wo Du es ausgibst. Da Dein Script an der Stelle dann zu Ende ist, wird der (vermutlich) nachfolgende HTML-Teil an den Browser geschickt. Wenn der übrige Teil nicht ausgegeben werden soll, dann pack ihn in einen else-Zweig.

Gruß thuemmy
 
ein weiterer else zweig würde bedeuten, dass der eigentliche hauptteil der seite unübersichtlicher wird da er eingerückt werden müsste und da an dessen ende noch eine schließende klammer währe. daher ist es übersichtlicher die ganze verarbeitung an dem punkt einfach zu beenden, mehr soll ein user der nicht angemeldet ist ja garnicht sehen... ;)

PHP:
<?php 
session_start (); 
if (!isset ($_SESSION["Username"])) 
{ 
  echo "Du bist nicht eingeloggt! <br>
  Hier gehts zum <a href=\"/index.html\">Login</a>"; 
  exit;
} 

// hier dein content

?>

Ps: ich empfehle dir mal ein bisschen hoch zu scrollen und meinen letzten post anzugucken ;) ^^
 
exit; <= da hab ich jetzt gar nicht dran gedacht ;)

Gruß thuemmy

Ja, ich auch nicht... Man sollte das ganze dann auch abschließen!^^
Durch das exit; funtioniert es jetzt auch:

Habe das Skript wie folgt verändert:
Auf der eigentlichen Seite habe ich
PHP:
<?php 
include 'login_check.php';
?>
hinzugefügt.

login_check.php:
PHP:
<?php 
session_start (); 
if (!isset ($_SESSION["Username"])) 
{ 
  echo "Du bist nicht eingeloggt! <br>
  Hier gehts zum <a href=\"/index.html\">Login</a>"; 
} 
  exit;
?>

Das jetzige Problem:

In der index.html Daten abschicken zur login.php, diese gibt "Login erfolgreich" aus und einen Link zur eigentlichen Seite auf welchen ich natürlich klicke... Da schaltet sich die login_check.php ein und gibt "Du bist nicht eingeloggt" und einen Link zur index.html, also dem Login-Formular, wieder...

Also wie weiter oben schon beschrieben denke ich, dass die Session nicht übergeben wird denn sonst dürfte die login_check ja nicht meckern...
 
ähhhhmmmmm.... nein? ^^

PHP:
   <?php
session_start ();
if (!isset ($_SESSION["Username"]))
{
  echo "Du bist nicht eingeloggt! <br>
  Hier gehts zum <a href=\"/index.html\">Login</a>";
  exit;
}
?>

so schon eher ^^
 
OmG... am besten vergesst ihr alles was ich gesagt habe!:-D

Naja, immerhin waren alles nur dämliche Tippselfehler siehe die Strings und exit... xD


Danke erstmal!^^
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben