Es funzt einfach nicht!
Chris
- php
Hi,
mein Script funzt einfach nicht:
<html>
<head>
<title>Log-in</title>
</head>
<body>
<?
$logok = FALSE;
if (isset($_login) and isset($_pass)) {
$fp = fopen("passwd.pwd", "r");
while ($line = fgets($fp, "r")) {
$arr = explode(",", $line);
if (($arr[0] == $_login) and ($arr[1] == $_pass)) {
$logok = TRUE;
break;
} /* end if */
}
}
if (!$logok) {
?>
<form method=post action=index.php>
Namen:<input type=text size=30 name=_login><br>
Kennwort:<input type=password size=30 name=_pass><br>
<input type=submit value=Submit>
</form>
<? } ?>
<? if ($logok) { ?>
Hihi
<? } ?>
was mache ich falsch???
Und ich wollte mal fragen wie ich auf meinem Apache Server eine MySql datenbank zum laufen bring???
Und ich brauche ein Script das Daten in eine Dateischreibt: Datum, Überschrift, Infos. Und die Daten die älter als einen Monat sind wieder löscht!
Im vorraus schon mal vielen Dank!
Mfg Chris
Hi Chris!
Hi,
mein Script funzt einfach nicht:
<html>
<head>
<title>Log-in</title>
</head>
<body>
<?
$logok = FALSE;
if (isset($_login) and isset($_pass)) {
»» $fp = fopen("passwd.pwd", "r");
»» while ($line = fgets($fp, "r")) {
$arr = explode(",", $line);
if (($arr[0] == $_login) and ($arr[1] == $_pass)) {
$logok = TRUE;
break;
} /* end if */
»» }
}
if (!$logok) {
?>
Hier ist der Fehler! Du darfst nicht einfach mitten im if aus php aussteigen!
<form method=post action=index.php>
Namen:<input type=text size=30 name=_login>Kennwort:<input type=password size=30 name=_pass>
<input type=submit value=Submit>
</form>
<? } ?> -----------------Das funktioniert so nicht!
<? if ($logok) { ?>
gleicher Fehler noch mal...
Hihi
<? } ?>
was mache ich falsch???
Du mußt den HTML-Code durch das PHP-Skript ausgeben lassen (mittels echo), dann funzt das auch!
Und ich wollte mal fragen wie ich auf meinem Apache Server eine MySql datenbank zum laufen bring???
Und ich brauche ein Script das Daten in eine Dateischreibt: Datum, Überschrift, Infos. Und die Daten die älter als einen Monat sind wieder löscht!
Also unter Linux gibt es im Verzeichnis:
/usr/doc/packages/mysql/html/
eine sehr ausführliche Dokumentation zu mysql.
mfg,
Martin
Hi Martin,
if (!$logok) {
?>Hier ist der Fehler! Du darfst nicht einfach mitten im if aus php aussteigen!
^^^^^^ ^^^^^
Sorry, aber das ist Blödsinn.
Es ist legal, und es passiert das erwartete, nämlich das der HTML-Teil nur
dann in der Ausgabe auftaucht, wenn die Bedingung erfüllt ist.
An Chris:
'funzt net' funktioniert nicht.
Was passiert, bzw. was passiert nicht. Woran hast du festgestellt, dass es nicht
funktioniert. Werden Fehlermeldungen ausgegeben?
Gruss,
Carsten
Hi,
ich habe es jetzt etwas umgeschrieben:
<?
echo ("<html>\n");
echo ("<head>\n");
echo ("<title>Log-in</title>\n");
echo ("</head>\n");
echo ("<body>\n");
$logok = FALSE;
if (isset($_login) and isset($_pass)) {
$fp = fopen("passwd.pwd", "r");
while ($line = fgets($fp)) {
$arr = explode(",", $line);
if (($arr[0] == $_login) and ($arr[1] == $_pass)) {
$logok = TRUE;
break;
} /* end if */
}
}
if (!$logok) {
echo ("<form method=post action=index.php>\n");
echo ("namen:<input type=text size=30 name=_login><br>\n");
echo ("Kennwort:<input type=password size=30 name=_pass><br>\n");
echo ("<input type=submit value=Submit>\n");
echo ("</form>\n");
}
if ($logok) {
echo ("Hihi\n");
}
?>
Dann kommt die Fehlermeldung:
Warning: Wrong parameter count for fgets() in d:\apache\st-antonius\admin\test\index.php on line 10
!!!
Keine Ahung was ich machen muss!
Vielen Dank!
MFG Chris
Hi Chris,
»» while ($line = fgets($fp)) {
Dann kommt die Fehlermeldung:
Warning: Wrong parameter count for fgets() in [...] index.php on line 10
Keine Ahung was ich machen muss!
Ähm... Manual lesen?
http://www.php-center.de/de-html-manual/function.fgets.html
fgets() braucht einen zweiten Parameter, der die _maximale_ Länge der
einzulesenden Zeile angibt. Bei deinen User/Passwortkombinationen z.b.:
fgets($fp,73); // Zeile einlesen, maximal jedoch 73 Zeichen
Jetzt sollte auch klar werden warum dein erster Versuch so überhauptnicht
geklappt hat:
fgets($fp,"r"); // FALSCH: maximal NULL zeichen einlesen !
Warum?
Nun PHP hätte als zweiten Parameter gerne eine Zahl. Kein Problem für PHP:
Wird der String "r" eben in eine Zahl umgewandelt. Dabei kommt leider Null
raus, da die Umwandlung beim ersten nicht Zahlzeichen (hier also dem ersten
und einzigen Zeichen) abgebrochen wird.
Gruss,
Carsten
Danke es funzt jetzt!
Hi,
das geht schon da liegt der Fehler nicht!
Mfg Chris!
<?
$logok = FALSE;
if (isset($_login) and isset($_pass)) {
»» $fp = fopen("passwd.pwd", "r");
»» while ($line = fgets($fp, "r")) { // <------- "r" gibts hier nicht!!! weg damit
»» $arr = explode(",", $line);
»» if (($arr[0] == $_login) and ($arr[1] == $_pass)) {
»» $logok = TRUE;
»» break;
»» } /* end if */
»» }
}
if (!$logok) {
?>
<form method=post action=index.php>
Namen:<input type=text size=30 name=_login>Kennwort:<input type=password size=30 name=_pass>
<input type=submit value=Submit>
</form>
<? } ?>
<? if ($logok) { ?> <!-- schon mal was von ELSE gehört? //-->
Hihi
<? } ?>
was mache ich falsch???
Siehe Code.
cya
phpBadAss
Hi,
ich habe es jetzt etwas umgeschrieben:
<?
echo ("<html>\n");
echo ("<head>\n");
echo ("<title>Log-in</title>\n");
echo ("</head>\n");
echo ("<body>\n");
$logok = FALSE;
if (isset($_login) and isset($_pass)) {
$fp = fopen("passwd.pwd", "r");
while ($line = fgets($fp)) {
$arr = explode(",", $line);
if (($arr[0] == $_login) and ($arr[1] == $_pass)) {
$logok = TRUE;
break;
} /* end if */
}
}
if (!$logok) {
echo ("<form method=post action=index.php>\n");
echo ("namen:<input type=text size=30 name=_login><br>\n");
echo ("Kennwort:<input type=password size=30 name=_pass><br>\n");
echo ("<input type=submit value=Submit>\n");
echo ("</form>\n");
}
if ($logok) {
echo ("Hihi\n");
}
?>
Dann kommt die Fehlermeldung:
Warning: Wrong parameter count for fgets() in d:\apache\st-antonius\admin\test\index.php on line 10
!!!
Keine Ahung was ich machen muss!
Vielen Dank!
MFG Chris