mal wieder Include
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
array
benutzen
benutzername
code
datei
fehlermeldung
file
http
inhalt
kennung
login
manual
ordner
ordners
problem
text
textdatei
verarbeiten
verzeichnis
-
Ich hab ein Problem. Und zwar bei einem Login Script bzw. bei einem Registrierungsscript.
Das "registrieren" funtzt auch und zwar so:
Der name wird durch die variable $fname in einer Textdatei gespeichert.
Die Textdatei hat den namen "m-".$fname.".php"
Der inhalt sieht dann so aus:
<?
$name="$fname";
?>
also wird dann $fname durch den eingegebenen namen ersetzt...
Genauso mit den passw?rtern und emailadressen, nur das die datei jeweils anders anf?ngt, also:
m-$fname.php -->Benutzername
e-$email.php -->Emailadresse
p-$passwd.php->Kennwort
funktioniert bis jetzt auch, bis auf das wenn man sich einloggt.
Und zwar dachte ich mir das so:
<?
name="$fname";
pwd="$passwd";
include "users/m-".$fname.".php";
include "users/p-".$pwd.".php";
#dann ne if abfrage ob die dateien existieren, was ja nicht der Fall ist,
#wenn man etwas falsches angibt....
#dann noch ne if abfrage die das passwort ?berpr?ft, wenn die
#Dateien denn doch vorhanden sein sollten
#und wenn das passwort nun auchnoch richtig sein sollte, dann soll
#er einfach nur erstmal irgendwas schreiben...
?>
nur funktioniert das nicht so wie ich es will, da er ne fehlermeldung rausgibt, wenneine datei nicht existiert, also wenn man etwas falsches eingibt. wenn man aber den richtigen namen eingibt aber ein falsches passwort, dann sagt er dass das Passwort falsch ist. Wenn man ein richtiges passowrt angibt aber sich verschrieben hat oder so, dann sagt ein das man eingeloggt ist als der name, den man falsch eingegeben hat.
Das Problem krieg ich wohl auch von selber hin, wei? nicht genau aber was mich vielmehr interssiert ist, wie ich die fehlermeldung wegbekomme. Kann ich nicht einfach den gesammten ordner "users" includen, also alle dateien die sich im ordner befinden, ohne das ich jede datei einzelnt angebe? Dann h?tt ich zwar ein problem mit den variablen aber da h?tte ich schon eine l?sung...
w?re cool wenn mir jemand helfen w?rde.
Nicko
PS:
SEHR WICHTIG:
Ich habe nicht vor dieses script zu verwenden, da es auch viiel leichter geht usw. usw.... Nun, ich will einfach nur ein bisschen mehr in die PHP Welt "eindringen" und mein, ich sag mal, begrentzten horizont oder wie das geschrieben wird, erweitern. Man brauch f?r PHP n?hmlich nicht nur die F?higkeiten, sondern auch Kreativit?t und m?glichkeiten f?r bestehende Probleme. Und da ich jetzt nicht weiter komme, brauche ich eure Inspiration *l?lz*
Nun gut ihr denkt wahrscheinlich "was oder wovon redet der eigentlich??"
aber ich sag es nur damit niemand sagen kann, dass das script total l?cherlich ist und umst?ndlich. Das wei? ich n?hmlich selba :) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo
Wenn der User einen Namen angibt, den es nicht gibt, dann wird die Datei eingef?gt, die es nicht gibt. Au?erdem: Wenn zwei User das gleiche PW haben, hat die Datei den gleichen Namen ==> Fehler! F?ge das Passwort ebenfalls in die Member-Datei (m-sowieso.php) ein!
Au?erdem musst du ?berpr?fen, ob die Datei dann vorhanden ist:
$name="$fname";
if(file_exists("users/m-".$fname.".php")) {
include "users/m-".$fname.".php";
}
else {
echo "User nicht vorhanden!!";
}
So m?sste es dann aussehen, wenn das PW ebenfalls in der Datei ist.
bis dann,
scripter (Mitglied Members on Wire) -
jo, soweit hab ich es auch, nur das er eine fehlermeldung und den text, das die datei nicht vorhanden ist anzeigt... deswegen wollte ich ja den gesammten inhalt des ordners includen, falls das ?berhaupt geht...
nicko -
Mit opendir() und readdir() die Verzeichniseintr?ge einlesen:
$basepath = '_dein_Pfad_zum_Verzeichnis_'; $dirlist = array(); $handle=opendir ($basepath); echo "Verzeichnis-Handle: $handle\n"; echo "Dateien:\n"; while (false !== ($file = readdir ($handle))) { if( is_file($file) ) { echo "$file\n"; $dirlist[] = $file; } } closedir($handle);
Den Verzeichnispfad mit den Verzeichnis-Eintr?gen zusammenkleben und includen:
foreach($dirlist as $key => $val) { include($basepath.'/'.$val); }
Dies ist nur ein Beispielcode. Geht bestimmt noch zu verbessern.
MfG
alopex
-
gibt es auch noch eine variante die leichter zu verstehen ist bzw k?rzer ist?
thx Nicko
Edit (by Thornet): Der Beitrag vor diesem wurde gel?scht. Noch ein Doppelposting und ich sehe mich gezwungen, Dich zu verwarnen. -
$name="$fname";
if(file_exists("users/m-".$fname.".php")) {
include "users/m-".$fname.".php";
}
else {
echo "User nicht vorhanden!!";
}
nicko schrieb:
jo, soweit hab ich es auch, nur das er eine fehlermeldung und den text, das die datei nicht vorhanden ist anzeigt... deswegen wollte ich ja den gesammten inhalt des ordners includen, falls das ?berhaupt geht...
nicko
Das ist es ja. Wenn die Datei nicht exists, dann wird auch nichts includet.
Und somit kommt wegen dem Include keine Fehlermeldung.
Wenn doch, dann greifst du sp?ter nochmal auf die Datei zu.
Jens -
nuja bei mir ?berpr?ft er ob es die datei gibt und egal ob es sie gibt oder nicht, er versucht sie zu includen und deshalb kommt da dann auch eine fehlermeldung, also eine warnung, das es die datei nicht gibt die man includen will. ich mache da wohl irgendwas falsch.. muss ich mir nochmal angucken. auf jedenfall erstmal danke :)
-
Hallo nicko!
M?glicherweise hast du nicht den korrekten Pfad angegeben. Versuche doch mal die Datei mit dem gesamten Pfad zu includen, in etwa so:
$my_include = $_SERVER['DOCUMENT_ROOT'].'/weiterer_pfad/'.'include_datei.php';
if( file_exists($my_include) ) {
include($my_include);
}
MfG
alopex
-
kann ich nicht einfach ?berpr?fen ob es die datei gibt und wenn ja, dann soll sie includet werden, so das man den inhalt verarbeiten kann und wenn nicht, das er dann sagt, dass das eingegebene passwort bzw. benutzername falsch ist?
Das problem ist ja das er irgendwie, trotz falschen benutzernamen und oder passwort sich sozusagen trotzdem versucht einzuloggen, was auch funtkioniert nur mit ein oder 2 fehlermeldungen. somit k?nnte man dann mit den falschen daten trotzdem alles weitere ausf?hren.
Ich wollte eigentlich nur ein textdatei basiertes loginscript machen, so das ich nicht jeden user manuell eintragen muss aber klappt wohl nicht so ganz. nicht das ich das script auch benutzen will, ich will das ja nur zur eigenen ?bung hinbekommen.
Deswegen wollte ich auch den gesammten ordner includen, so das alle daten da sind und ich sie bequem ?berpr?fen kann ob eins von denen mit dem eingegebenen ?bereinstimmt ^^
Nicko -
kann ich nicht einfach ?berpr?fen ob es die datei gibt und wenn ja, dann soll sie includet werden, so das man den inhalt verarbeiten kann und wenn nicht, das er dann sagt, dass das eingegebene passwort bzw. benutzername falsch ist?
Genau das macht das von mir angegebene Skript.
Ich wollte eigentlich nur ein textdatei basiertes loginscript machen, so das ich nicht jeden user manuell eintragen muss aber klappt wohl nicht so ganz. nicht das ich das script auch benutzen will, ich will das ja nur zur eigenen ?bung hinbekommen.
Sowas gibt es sicher fertig irgendwo zum Download. Man muss das Rad nicht zweimal erfinden. Allerdings, wenn du etwas lernen willst ...
1. Befasse dich eingehender mit der PHP-Documentation
http://www.php.net/manual/de/
2. Speichere die Benutzerkennung-Passwort-Kombinationen in einer Datei, nicht in mehreren. Benutze das "ini"-Format, d.h. die Datei sieht dann etwa so aus:
nutzer1="passwort1"
nicko="gro?er_webmeister"
gast="08154711"
3. PHP bietet eine sch?ne Funktion, um solche INI-Dateien in ein so genanntes assoziatives Array zu speichern:
http://www.php.net/manual/de/language.types.array.php
Die Funktio hei?t parse_ini_file():
http://de.php.net/manual/de/function.parse-ini-file.php
4. Das Abspeichern solcher Dateien geschieht mit der Datei-Funktion fputs():
http://de.php.net/manual/de/function.fputs.php
5. Ein assoziatives Array durchsucht man in einer foreach()-Schleife:
http://de.php.net/manual/de/function.foreach.php
$login_name = _hier_den_eingegeben_benutzername_einsetzen_;
$login_password = _hier_das_eingegebene_password_einsetzen;
...
$all_okay = FALSE;
$password_wrong = FALSE;
foreach($mein_array as $key => $val) {
if($key == $login_name) {
if($val == $login_password) {
$all_okay = TRUE;
}
else {
$password_wrong = TRUE;
}
break;
}
}
// Hier kannst du den Login auswerten
// $all_okay ist TRUE, wenn Kennung und Passwort stimmen
// $password_wrong ist TRUE, wenn eine g?ltige Kennung,
// aber ein falsches Passwort eingegeben wurde
// beide sind FALSE, wenn die Nutzerkennung nicht existiert
So, und jetzt: Sch?n ?ben!
MfG
alopex
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage