Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Hilfe zum TUT Login mit PHP und MYsql [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-consult PHP Entwicklung
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Hilfe zum TUT Login mit PHP und MYsql


 
Blackangel1984
01-03-2008, 17:45 
 
Hallo,
vorab ich bin noch ziemlich am Anfang mit PHP, muss aber von Geschäft aus einen geschützten Bereich anlegen wo sich verschiedene Benutzer einloggen können.

Ich habe das Tut hier auf der Seite gefunden und alles hat bisher geklappt ich kann mich einloggen, ausloggen und den Status überprüfen.
Aber ich verstehe nicht wie ich das ganze an den Anfang einer Seite setzte das diese geschützt ist.
Da habe ich noch Probleme mit.
Wie genau muss das aussehen?

Wäre nett wenn ihr mir helfen könntet!

 
PHP-Desaster
01-03-2008, 18:08 
 
Du überprüft vor dem Ausliefern der Seite, ob der Benutzer angemeldet ist. Ist dies nicht der Fall, führst du einen Redirect auf die Loginseite durch!

 
Blackangel1984
01-03-2008, 18:26 
 
Hallo,
ich habe jetzt mal angefangen. Leider komme ich nicht zurecht:
Folgenden Code verwende ich:

<?
session_start();
include 'login/sessionhelpers.inc.php';
if (!logged_in())
header("Location: http://www.google.de");
?>

so jetzt kriege ich immer den Fehler das der header bereits gesendet wurde also so

"Warning: Cannot modify header information - headers already sent by (output started at ../sessionhelpers.inc.php:52) in ../peps.php on line 5"

Die Links habe ich jetzt mal gekürtzt!

Was mache ich falsch?

 
PHP-Desaster
01-03-2008, 18:30 
 
Guck dir dazu den Sticky-Thread in diesem Forum an!

 
Blackangel1984
01-03-2008, 18:50 
 
Hallo,
das habe ich mir schon durchglesen aber ich komme nicht drauf wie ich das umsetzten kann das das im PHP läuft.
Es heißt ja das der Header als Anfang vor allem anderem stehen muss, aber wenn ich das mache werde ich nur weitergeleitet und der Rest wird ignoriert!
Helft mir mal auf die Sprünge!

 
PHP-Desaster
01-03-2008, 18:55 
 
Du machst irgendwo vorher eine Ausgabe! Vielleicht in der eingebundenen Datei?!

 
Blackangel1984
01-03-2008, 19:02 
 
Ja da ist die Funktion logged_in definiert und wird sag mal abgearbeitet.
Aber die Frage ist wie kriege ich die einbindung der logged_in Funktion und die Weiterleitung wenn der jenige nicht eingeloggt ist?

 
PHP-Desaster
01-03-2008, 19:29 
 
Löß dein Headerproblem, dein Skript stimmt doch :rolleyes:

 
Abraxax
01-03-2008, 23:25 
 
Original geschrieben von Blackangel1984
Ja da ist die Funktion logged_in definiert und wird sag mal abgearbeitet.
Aber die Frage ist wie kriege ich die einbindung der logged_in Funktion und die Weiterleitung wenn der jenige nicht eingeloggt ist?

ich denke, dass du beim copy&paste am anfang und/oder am ende der datei leerzeichen und/oder umbrüche hast.

vor "<?php" und nach "?>" dürfen keinerlei zeichen stehen.

 
Blackangel1984
02-03-2008, 11:55 
 
So Problem ist gelöst! (Auch ohne den Hinweis von Albraxax, trotzdem Danke)
In der Sessionhelpers ware ein Leezeichen hinter dem ?>
Da lag der Hund bergraben jetzt läuft alles wie es soll.
Danke nochmal!

 
Lotus
04-03-2008, 00:27 
 
servus.. habe mir auch euer tutorial angeguckt und es nachprogrammiert, hat ja alles funktioniert nur versteh ich leider nicht vollständig den quelltext!

besonders probleme habe ich bei der check_user


$sql="SELECT UserId
FROM users
WHERE UserName='".$name."' AND UserPass=MD5('".$pass."')
LIMIT 1";
$result= mysql_query($sql) or die(mysql_error());
if ( mysql_num_rows($result)==1)
{
$user=mysql_fetch_assoc($result);
return $user['UserId'];
}
else
return false;
}

hab mal rot makiert was ich nich so recht verstehe!

mysql_num_rows gibt doch die Anzahl der Datensätze zurück.. $result is ja eigentlich $sql und das wiederum müsste die UserID sein..

folglich wird die anzahl der DS der UserID geprüft.. mir ist nun nich wirklich klar ob das ergebnis denn jemals != 1 werden kann oO

 
jahlives
04-03-2008, 11:07 
 
mir ist nun nich wirklich klar ob das ergebnis denn jemals != 1 werden kann oO

Nach welchen Kriterien wird die Suche eingeschränkt? Richtig: Username und Passwort. Es gäbe also folgende Möglichkeiten diese Abfrage scheitern zu lassen:
- Benutzer existiert aber das PW ist falsch
- Benutzer exisitert nicht PW korrekt
- Weder Benutzer noch PW existieren

Gruss

tobi

 
Lotus
04-03-2008, 17:02 
 
ach es wird daraufhin geprüft ob der komplette datensatz = true ist?

 
jahlives
04-03-2008, 17:19 
 
ach es wird daraufhin geprüft ob der komplette datensatz = true ist?

Es wird geprüft ob es einen DS gibt, bei dem beide Bedingungen erfüllt sind. AND oder && verknüpfen zwei Bedingungen und beide müssen erfüllt sein. Im Gegensatz zu OR oder || wo es reicht wenn eine der beiden erfüllt wurde.

 
Lotus
04-03-2008, 19:14 
 
ich dachte in $sql sei nur die UserID gespeichert? nun is id,name und pass gespeichert?

 
Abraxax
04-03-2008, 22:22 
 
in $sql steht nur die sql-anweisung, welche mittels mysql_query() an die datenbank geschoben wird.

in $result wird ein verweis auf das result-set gespeichert.

dieses wiederrum wird mit mysql_num_rows() überprüft ob genau 1 eintrag geliefert wurde.

ist die anzahl == 1 wird der datensatz geholt (gefetcht) und das ergebnis im array $user gespeichert.

tipp:
print_r($user);

nun wird aus $user die user-id zurück geliefert....

oder ... wenn es keinen eintrag gab false ...

 
Lotus
05-03-2008, 00:50 
 
... das genau 1 eintrag geliefert wurde..
was heißt denn das nun konkret?

Sagen wir ich hab ne tabelle die folgendermaßen aussieht:
UserID UserName UserPass
1 admin 123456
2 user 67890


wenn ich nun versuche mich mit admin einzuloggen steht also in sql
die informationen 1, admin und 123456 welche in $result gespeichert werden..

und nun soll geprüft werden das der eintrag (ja welcher denn?) == 1 is??

 
Abraxax
05-03-2008, 11:34 
 
Original geschrieben von jahlives
Es wird geprüft ob es einen DS gibt, bei dem beide Bedingungen erfüllt sind. AND oder && verknüpfen zwei Bedingungen und beide müssen erfüllt sein. Im Gegensatz zu OR oder || wo es reicht wenn eine der beiden erfüllt wurde.

wenn du das jetzt immer noch nicht verstanden hast, solltest du dich bitte noch einmal mit den grundkenntnissen auseinander setzen!

 
Lotus
05-03-2008, 16:55 
 
denke jetzt habe ichs verstanden.. man müsste einfach nur statt ==1 == true sagen und dann isses mir logischer ^^

 
Abraxax
05-03-2008, 22:33 
 
nein denn 1 !== true

es darf nur ein datensatz (menge 1) vorhanden sein. und das ist nicht mit true (wahr) vergleichbar! :teach:

wahr != 1


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:19 Uhr.