Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
16.12.2002, 20:57
Rayk



Der Gästebuch-code aus diesem Tutorial funktioniert bei mir nicht.

Der Fehler muss bei der Datenübergabe vom Formular an den Script liegen, da der Script ohne die If-Abfrage "funktioniert" d.h. er erstellt die Tabllen ohne die Inhalte.

Wo liegt denn der Fehler ?

Vielen Dank

--

ICQ : 293840958


Dieser Beitrag wurde am 16.12.2002 um 20:59 von Rayk bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
17.12.2002, 09:21
the_viking



Zitat:

Als erstes sollten sie einen Plan erstellen nach dem sie ein Gästebuch erstellen wollen. Sie brauchen 3 Dateien. darstellen.php, schreiben.php und posts.txt, eine Datei zum darstellen von Einträgen, eine andere zum schreiben von Einträgen. In der Datei posts.txt werden die Einträge abgespeichert. So ein Gästebuch hat keinen grossen Umfang, aber es hat den Vorteil das sie es erstellt haben. Sie können die Einträge darstellen lassen wie sie es wollen! Ich werde kein Aussehen schreiben, ich werde nur aufzeigen wie es können. Inhalt von darstellen.php:
<h2>Gästebuch</h2>
<a href=schreiben.php>Eintragen</a><br><br><br>
<?php
include("posts.txt");
?>
Mit dem include() Befehl wird die Datei mit den Einträgen eingebunden und ausgegeben. Vergessen sie nicht die Datei posts.txt zu erstellen, sonst gibt der include() Befehl eine Fehlermeldung aus. Die Datei schreiben.php ist da etwas umfangreicher:
<?php
if(isset($name) && isset($text))
{
$datei_lesen = fopen("posts.txt", "r");
$inhalt = fread($datei_lesen, 99999);
fclose($datei_lesen);
$eintrag = "<table border=1><tr><td>Name: $name</td></tr><tr><td<$text</td></tr></table><br>";
$neuer_inhalt = $eintrag.$inhalt;
$datei_schreiben = fopen("posts.txt", "w");
fwrite($datei_schreiben, $neuer_inhalt);
fclose($datei_schreiben);
die("Eintrag erstellt. <a href=darstellen.php>Zu den Einträgen</a>.");
}
?>
<form action=schreiben.php method=post>
Name: <input type=text name="name" size=20><br>
Text: <textarea cols=30 rows=7 name="text"></textarea><br>
<input type=submit value=senden></form>
Das Formular sendet die Eingaben direkt an die selbe Datei schreiben.php. Wenn die Variablen $name und $text, also die beiden Felder ausgefüllt wurden, gesetzt worden sind, wird die Datei posts.txt erst gelesen. Das Aussehen eines Eintrags bestimmen wird durch den Inhalt der Variablen $eintrag. Wir hängen an die Variable $eintrag den Inhalt des Datei an, und speichern dieses in der Variablen $neuer_inhalt. Der Inhalt von $neuer_inhalt wird über den bestehenden Inhalt der Datei posts.txt geschrieben. Am Ende der if-Anweisung wird noch die() ausgeführt, um die Datei zu beenden und auszugeben das der Eintrag erstellt wurde. Ausserdem gibt die() auch noch den Link zum Gästebuch aus. Rechts sehen sie eine Beispielsausgabe von darstellen.php und schreiben.php.

<tr><td<$text</td></tr>
=>
<tr><td>$text</td></tr>
wem es nicht aufgefallen ist und man sollte sowieso besser:
<tr><td>{$text}</td></tr>
oder
'<tr><td>' . $text . '</td></tr>';
verwenden

und bei
$inhalt = fread($datei_lesen, 99999);
sollte man lieber
$inhalt = fread($datei_lesen, filesize("posts.txt"));
verwenden
und die datei im immer (bei fread) im binärmodus öffnen, damit es keine probs mit windows gibt:
$datei_lesen = fopen("posts.txt","rb");

und bei html-tags sollte man grundsätzlich die gänsefüsschen nicht vergessen:
<a href="darstellen.htm">Link</a>
<form action="schreiben.php" method="></form>
die gänsefüsschen wegzulassen ist zwar möglich könnte aber probleme mit bestimmten browsern machen

Wenn es an der if(isset($text) && isset($name)) liegen sollte, kann man bei method="Post"-formularen auch die variablen:
$HTTP_POST_VARS["text"] und $HTTP_POST_VARS["name"] benutzen, denn manchmal ist die variablenerzeugung für Post-Vars in der php.ini abgestellt
(wo ist denn deine site gehostet? localhost webserver oder INet?)

--

thx, cu, MfG the_viking

(( My =]=H=O=M=E=> Page! ))
Coder bei Brainshock-Interactive und bei Z-Software
My ICQ: #160959446

zum Seitenanfang zum Seitenende Profil || Suche
002
17.12.2002, 11:55
CN



wenn dann gleich $_POST[]

und variablen die per post von einem formular übergeben werden gelten immer als set also würd ich lieber checken ob die nicht empty sind (!empty() statt isset())

--


Dieser Beitrag wurde am 17.12.2002 um 11:56 von CN bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
003
17.12.2002, 13:07
Megge



oder folgendes zuoberst in die datei schreiben:
Quellcode:
$PHP_SELF = $_SERVER['PHP_SELF'];
$_GP = array_merge($_GET, $_POST, $_COOKIE, $_SERVER, $_FILES, $_SESSION);
extract($_GP);

somit kannst du normal die variablen benützen, die über get, post, cookie usw. versendet wurden...

--

zum Seitenanfang zum Seitenende Profil || Suche
004
17.12.2002, 13:43
CN



Zitat:
$PHP_SELF = $_SERVER['PHP_SELF'];
wo ist der sinn?
$PHP_SELF gilt immer o_O

--

zum Seitenanfang zum Seitenende Profil || Suche
005
17.12.2002, 14:04
Rayk



@the-viking:
Hab den script aufm localhost gehostet

--

ICQ : 293840958

zum Seitenanfang zum Seitenende Profil || Suche
006
17.12.2002, 14:31
CN



das tut kannst du eh in die ecke treten
vielzuviele fehler

zbQuellcode:<td<$text</td>

--


Dieser Beitrag wurde am 17.12.2002 um 14:32 von CN bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
007
17.12.2002, 14:44
Megge



cn: nur, wenn du die $_SERVER variablen extractest, stimmt, kanns rausnehmen. is wohl ein überbleibsel aus nem alten script..

--

zum Seitenanfang zum Seitenende Profil || Suche
008
17.12.2002, 15:56
Rayk



und wie funktioniert das mit diesen $HTTP_POST_VARS["name"] ?

--

ICQ : 293840958

zum Seitenanfang zum Seitenende Profil || Suche
009
17.12.2002, 16:07
CorDharel



Quellcode:
$datei_schreiben = fopen("posts.txt", "w");
Warning: fopen("posts.txt", "w") - Permission denied

Permission denied? Ich würde den Grund jetzt darauf schieben, dass ich im Büro arbeite, doch generell kann ich auf alle PHP-Scripts zugreifen. Gibt es noch andere Parameter als "w" ? Etwa "append" ?

--

Greetz CorDharel

Leader der HolyShitBastards


Dieser Beitrag wurde am 17.12.2002 um 16:24 von CorDharel bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
010
17.12.2002, 16:17
Ornest



Öhm, afaik weil der/die/das CHMOD nicht auf 0777 gesetzt ist.
Auf Deutsch: Du hast kein Schreibzugriff.

Bin mir da allerdings nicht sicher.

Falls dies der Fall ist, musst du mit einem FTP Programm ála CuteFTP den CHMOD setzen.

--

zum Seitenanfang zum Seitenende Profil || Suche
011
17.12.2002, 16:31
CorDharel



Und wo finde ich den CHMOD? (löl das Gästebuch ist mein erstes PHP-Script, wollte nur mal schauen ob es geht ;] )

Aber ich habe im CuteFTP noch nie gesehen, dass man einen CHMOD auf 0777 setzen kann...

Bitte um Aufklärung :)

Hier die ganze Fehlermeldung:
Quellcode:
Warning: fopen("posts.txt", "a") - Permission denied in /schreiben.php on line 9

Warning: fwrite(): supplied argument is not a valid File-Handle resource in /schreiben.php on line 10

Warning: fclose(): supplied argument is not a valid File-Handle resource in /schreiben.php on line 11

--

Greetz CorDharel

Leader der HolyShitBastards


Dieser Beitrag wurde am 17.12.2002 um 16:32 von CorDharel bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
012
17.12.2002, 16:34
Ornest



Hmm, Moment. Nur wenn du das Skript im Internet hast, musst du CHMOD setzen. Auf deinem Homerechner (auch localhost genannt ;)) brauchst du diese Berechtigungen nicht.

Internet: Bei CuteFTP musst du einfach mit der rechten Maustaste auf die gewünschte Datei klicken und dann auf CHMOD (wer hätte das gedacht) klicken. Der Rest sollte selbsterklärend sein.

Zum Skript an sich würde ich erstmal auf die Profs warten, ich bin mir da wirklich nicht sicher ;)

--

zum Seitenanfang zum Seitenende Profil || Suche
013
17.12.2002, 17:33
CN



bei chmod reicht 6 zum schreiben (rw-) wenn mans ausführen will muss execute (x) noch mit dazu

rayk
du hast zb ein input feld: <input name="bla" .......>
dann greift man darauf per $_POST[bla] zu (neue variante von $HTTP_POST_VARS[bla])
das hat den vorteil das "bla" nun über POST übergeben werden muss
man kann es nicht über GET (zb index.php?bla=wert_von_bla) übergeben

ornest
man braucht die berechtigung immer
nur das es unter windows ein andres rechtesystem ist

ausserdem gibs auch ne phpfunktion chmod()

[ot]"ála" schreibt man so: "à la" :P[/ot]

--


Dieser Beitrag wurde am 17.12.2002 um 17:38 von CN bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
014
17.12.2002, 17:58
Rayk



Jo jetzt funktionierts

Vielen Dank an alle

[edit]

kennt jemand ne Seite mit guten Tuts?

[/edit]

--

ICQ : 293840958


Dieser Beitrag wurde am 17.12.2002 um 18:01 von Rayk bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
015
17.12.2002, 18:07
Fraghunter



wie CN schon gesagt hat, kannst du dieses tut total vergessen.
hat zum einen viele Fehler und zum anderen ist es unglaublich schlect geschrieben (den php-Code mein ich). Das scheint ein Anfänger gewesen zu sein.

Die ganzen Anleitungen auf der Seite sind etwas seltsam
"und inkrementiert den enthaltenen Zahlenwert. Um sicherzustellen das ein Integerwert enthalten ist verwenden wir die Funktion settype()[...]"
ist z.B. unnötig - wenn du versuchst mit einem String zu rechnen, wird dieser automatisch in eine Zahl unmgewandelt.

--

Nihil timeo, nulla re opprimor, nulli periculo cedo.
www.TheDoenerKing.de

zum Seitenanfang zum Seitenende Profil || Suche
016
17.12.2002, 18:14
Megge



@Rayk:
http://www.php4-forum.de

--

zum Seitenanfang zum Seitenende Profil || Suche
017
17.12.2002, 18:25
CN



zum prüfen würd ich gettype() oder is_int() nehmen o_O
aber doch nich settype()

--

zum Seitenanfang zum Seitenende Profil || Suche