in datei schreib problem

  • #1
M

mafihl

Mitglied
Themenersteller
Dabei seit
02.04.2005
Beiträge
20
Reaktionspunkte
0
moin Forum,


möchte mich anmelden, also namen und passwort vergeben und diese in eine textdatei schreiben.


code:

<form method=post action=anmelden.php>
Username:<br>
<input type=text name=username><br><br>
Password:<br>
<input type=password name=password><br><br>
Wiederhole<br>Password:<br>
<input type=password name=password2><br><br>
<input type=submit value=Anmelden>
</form>



und die anmelden.php:


<?php
include(config.php);   //hier steht nichts relevantes drin

$user_name = array();

if($_POST['username'] != and $_POST['password'] != ) {

echo <b><font color=\#FF0000\>Es wurden nicht alle Felder ausgefüllt!</b></font><br><a href=\\ onClick=\history.back()\>zurück</a>;

}
else
{
$userdatei = fopen (benutzer.txt,r);
while (!feof($userdatei))
{
$zeile = fgets($userdatei,100);
$userdata = explode(|, $zeile);
array_push ($user_name,$userdata[0]);
}
fclose($userdatei);

if (in_array($username,$user_name))
{
echo <b><font color=\#FF0000\>Dieser Benutzername existiert schon!</b></font><br><a href=\$anmeldeseite\>zurück</a>;
}
else
{
if ($password==$password2)
{
$userdatei = fopen (benutzer.txt,a);
fwrite($userdatei, $username);
fwrite($userdatei, |);
$password=crypt($password,$schluessel);
fwrite($userdatei, $password);
fwrite($userdatei, \n);
fclose($userdatei);
echo Anmeldung war erfolgreich!<br><a href=\$loginseite\>zum Login</a>;
}
else
{
echo <b><font color=\#FF0000\>Ihr angegebenes Passwort stimmt nicht mit dem zu Widerholenden überein!</b></font><br><a href=\$loginseite\>zurück</a>;
}
}
}
?>



Ist hier irgendetwas falsch? vielleicht nicht php5 geeignet oder so.

Ich will ja eigentlich nur zwei werte auslesen,ne txt einsehen und wenn gut- werte durch  | getrennt reinschreiben.

Ich verzweifel langsam daran.

Dankbar für jeden guten Rat,

mafihl
 
  • #2
Hi

Die Variablen $username, $password und $password2 sind nicht gesetzt, du meinst wahrscheinlich die $_POST Werte.

Gruß, Michael
 
  • #3
Probiers mal so:

Code:
<?php
include(config.php);  //hier steht nichts relevantes drin

$user_name = array();

if($_POST['username'] ==  || $_POST['password'] ==  || $_POST['password2'] ==  ) {
	echo <b><font color=\#FF0000\>Es wurden nicht alle Felder ausgefüllt!</b></font><br><a href=\\ onClick=\history.back()\>zurück</a>;
}
elseif($_POST['password'] != $_POST['password2']) {
	echo <b><font color=\#FF0000\>Die Passwörter müssen übereinstimmen!</b></font><br><a href=\\ onClick=\history.back()\>zurück</a>;
}
else {
	$userdatei = fopen (benutzer.txt,r);
	
	while ($zeile = fgets($userdatei,100)) {
		$userdata = explode(|, $zeile);
		array_push ($user_name,$userdata[0]);
	}
	fclose($userdatei);
	
	if (in_array($_POST['username'],$user_name)) {
		echo <b><font color=\#FF0000\>Dieser Benutzername existiert schon!</b></font><br><a href=\$anmeldeseite\>zurück</a>;
	}
	else {
		$userdatei = fopen (benutzer.txt,a);
		$string = $_POST['username'].|.crypt($_POST['password']);
		fwrite($userdatei, $string.\n);
		fclose($userdatei);
		echo Anmeldung war erfolgreich!<br><a href=\$loginseite\>zum Login</a>;
	}
}
?>
 
  • #4
@Michael,

warum haste deinen Tipp wegen dem ODER gelöscht.
Dein Einwand war schon richtig ;) ;)
 
  • #5
ich bin begeistert. scheint zu klappen!
und wie schnell! $war wohl besonders einfach;

vielen dank!
 
  • #7
Hi

Nein war er nicht, nur verschlimmbessert :eek:
Seine if Bedingung ist im Prinzip richtig, nur sind if und else vertauscht.

Gruß, Michael
 
  • #8
verschlimmbessert?

naja.., jetzt funktioniert dass hier gar nicht mehr:

Code:
<?php
session_start();
session_register(username);
?>

<?php
include (config.php);

$password=crypt($password,$schluessel);
$password .= \n;
$log=0;


$userdatei = fopen (benutzer.txt,r);

    while ($zeile = fgets($userdatei,50)) {
        $userdata = explode(|, $zeile);
        if ($userdata[0]==$username && $userdata[1]==$password)



{
$log=1;
$loginStatus = allGood;
}
}
fclose($userdatei);


if ($log==1)
{
?>

der schluessel fehlt jetzt, der in meinem script vorkam, jetzt wird §schluessel gar nicht berücksichtigt.

in dem fall ist die config.php doch nicht irrelevant weil da §schluessel definiert ist.
$schluessel = 12; .z.B.


bitte um Hilfe!

gruß

mafihl
 
  • #9
Änderung in der => anmelde.php
Code:
<?php
......
$string = $_POST['username'].|.crypt($_POST['password'],$schluessel);
......
?>

Wie sieht denn dieser Link aus => $loginseite ???
 
  • #10
$loginseite führt zu dem login, der folgt wenn man sich registriert hat.

da werden dann user und pass aus der txt abgefragt und dann kommt man zum inhalt. leider funktioniert der login jetzt nicht mehr.

wenn ich mich einloggen will wird das abgefragt:


Code:
<?php
session_start();
session_register(username);
?>

<?php
include (config.php);

$password=crypt($password,$schluessel);
$password .= \n;
$log=0;


$userdatei = fopen (benutzer.txt,r);

    while ($zeile = fgets($userdatei,50)) {
        $userdata = explode(|, $zeile);
        if ($userdata[0]==$username && $userdata[1]==$password)



{
$log=1;
$loginStatus = allGood;
}
}
fclose($userdatei);


if ($log==1)
{
?>

 Hier der Inhalt der seite


<?php
}
else
{
echo Benutzer existiert nicht oder das Passwort ist falsch!<br><a href=\$loginseite\>zurück</a>;
}
?>


aber datt funktioniert verdammt nochmal nicht.


you know why?
 
  • #11
Benutzer existiert nicht oder das Passwort ist falsch!<br><a href=\$loginseite\>zurück</a>;

ist = die fehlermeldung
 
  • #12
Der Link muss doch irgendwelche Parameter übergeben ???

z.B.

Code:
<?php
$loginlink = login.php?username=. $_POST['username'] .&password=. $_POST['password'];
?>

jedenfalls sollte er ungefähr so aussehen ;)

Hast du die Änderung in der anmelde.php gemacht ???


gruss conny
 
  • #13
ja, hab ich. hat aber noch nichts genützt.

wird vielleicht nicht die session gestartet oder so?


die daten beim login werden doch aus der benutzer.txt rausgelesen oder nicht.
(unabhängig von der anmeldung)

die oeffne ich doch, frag sie ab und wenn ok dann will ich den Inhalt meiner Seite sehen :D
 
  • #14
Sorry, aber irgendwoher muss doch das Loginscript wissen, nach welchen Daten es suchen soll.
Da du nach der Anmeldung einen Link zum Login zeigst ($loginlink) müssen doch in diesem Link der Username und das Passwort übergeben werden, sonst gibts ja nix für das Loginscript zu tun.

Füge mal in der login.php nach dem starten der Session folgendes ein:

Code:
<?php
print_r($_REQUEST);
echo <br>;
print_r($_SESSION);
?>

das Ergebis hier bitte posten.
 
  • #15
kommt das bei rum:

Code:
Array ( [username] => kkk [password] => jjj [PHPSESSID] => bqdl7r5ktkfuc4spoefs7j97p6 ) 
Array ( [username] => ) Benutzer existiert nicht oder das Passwort ist falsch!
zurück
 
  • #16
Probiers mal so

Code:
<?php
session_start();
session_register(username);
include (config.php);

$password=crypt($_REQUEST['password'],$schluessel);
$password .= \n;
$log=0;
$userdatei = fopen (benutzer.txt,r);
while ($zeile = fgets($userdatei,50)) {
	$userdata = explode(|, $zeile);
	if ($userdata[0]==$_REQUEST['username'] && $userdata[1]==$password) {
		$log=1;
		$loginStatus = allGood;
	}
}
fclose($userdatei);
if ($log==1) {
?>
 
  • #17
klappt bedingt:

Code:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /is/htdocs/wp1007051_5WCG9GUW26/www/now/login_inhalt.php:2) in /is/htdocs/wp1007051_5WCG9GUW26/www/now/login_inhalt.php on line 3

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /is/htdocs/wp1007051_5WCG9GUW26/www/now/login_inhalt.php:2) in /is/htdocs/wp1007051_5WCG9GUW26/www/now/login_inhalt.php on line 3
Array ( [username] => bbb [password] => nnn [PHPSESSID] => bqdl7r5ktkfuc4spoefs7j97p6 ) 
Array ( [username] => )

hab mal das print_r hintenrangesetzt.

so´n code hab ich auch schon mal gesehen  ???
 
  • #18
Sind da noch irgendwelche Ausgaben bevor die Session gestartet wird ???

session_start MUSS vor jeder anderen Ausgabe erfolgen !!!

Auch kein:

Code:
<HTML
 <HEAD>

usw.
 
  • #19
wow ja. eine leerzeile.

jetzt steht da immer noch
Code:
Array ( [username] => vvv [password] => bbb [PHPSESSID] => bqdl7r5ktkfuc4spoefs7j97p6 ) 
Array ( [username] => )


oder ist das jetzt richtig und ich muss nur noch print_r rausnehmen?
 
  • #20
print_r war nur zu DEBUG-Zwecken, wech damit ;)

edit:

was steht denn in deiner php.ini unter register_globals => ON oder OFF
 
Thema:

in datei schreib problem

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben