ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
445
445
EMPFEHLEN
-
hallo,
ich möchte auf einer webseite ein ganz simples gästebuch einrichten. den php code habe ich mir dazu aus dem internet geholt. auf einem 1&1 account funktioniert das script auf einem anderen account von 8ung funktioniert er nicht? woran kann das liegen?
so sieht meine datei eintragen.php aus
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
<?php if ($action == "add"){ if ($name == "" || $mail == "" || $text == ""){ echo "<b>Du hast nicht alle Felder ausgefüllt !</b></br>"; echo "Klicke auf den Backbutton deines Browsers"; } else{ $fp = fopen("gaestebuch.txt","r+"); $inhalt= fread($fp,filesize("gaestebuch.txt")); fclose($fp); if ($www == ""){ $eintrag = "$inhalt<a href=\"mailto:$mail\">$name</a><br>$text"; } else{ $eintrag = "$inhalt<a href=\"mailto:$mail\">$name</a><br><a href=\"$www\">$www</a>$text<hr><br><br>"; } $datei = fopen("gaestebuch.txt","w+"); fputs($datei,$eintrag); fclose($datei); echo "Danke <i>$name</i> für deinen Eintrag"; } } else{ ?> <form action="eintragen.php?action=add" method="post" name="add"> Dein Name: <input type="text" name="name" size="24"><br> E-Mail: <input type="text" name="mail" size="24"><br> Homepage: <input type="text" name="www" size="24"><br> <br> Dein Eintrag:<br> <textarea name="text" cols="35" rows="5"></textarea><br> <input type="submit" value="Abschicken"> </form> <?php } ?>
mit diesem befehl..füge ich die gästebuch(txt) datei auf einer seite ein
Code :1 2 3
<?php include("gaestebuch.txt"); ?>
und das ist die baustelle:
http://www.8ung.at/bastiyxc/brian2006/h/eintragen.php
die datei rechte habe ich auf 777 eingestellt, ich muss gestehen daß ich mich damit aber nicht so gut auskenne.
wenn ich nun auf "abschicken" klicke wird nur die seite eintragen.php neugeladen und es passiert nichts. ich habe schon überlegt das es vielleicht doch am php-server liegt, denn auf einen anderen eines freundes funktioniert diese einfache gästebuch-idee einwandfrei.
kann mir jemand helfen, meinen fehler den ich anscheinend mache, zu finden?
vielen dank
-
Wahrscheinlich ist der 8ung-Webserver anders eingestellt als der 1&1-Webserver. Prüfe mal beide Servereinstellungen, indem du ein Skript mit der phpinfo()-Funktion aufrufst. Mein Tipp: Auf dem 8ung-Server wird ohne die so genannten Register Globals gearbeitet.
Markus Wulftange
-
vielen dank gumbo für die schnelle antwort.
ich habe herrausgefunden das beide server mit php 4.4.1 arbeiten..
irgendwie denke ich das du aber mit deinem tip richtig liegst. es hat was mit den
register globals zu tun.. leider versteh ich nur bahnhof.. die php.de seite ist echt nur etwas
für fortgeschrittene.. ich kann mir nicht erklären was super_globals sind
in meinem php5 buch steht auch noch nichts darüber, das gaestebuch-script aus diesem buch funktioniert übrigens auch nicht. das buch ist schon ein halbes jahr alt.
sehr merkwürdig..
-
Es gibt ein leben vor dem Tod
-
ja danke frau rieger.. nun weiß ich was globale variablen sind..
aber wie ich mein script logisch umschreibe auch nicht. dafür versteh ich noch zu wenig.
und ich weiß auch nicht ob ich es mit Post oder als link übergebe..
hat jemand eine ahnung was ich am script ändern muss damit das php-script?
danke
-
Obiges Skript könnte umgeschrieben und etwas optimiert etwa wie folgt aussehen:
PHP-Code:<?php
$_errors = array();
$_requiredFields = array(
'name' => 'Bitte geben Sie Ihren Namen an.',
'mail' => 'Bitte geben Sie Ihre E-Mail-Adresse an.',
'text' => 'Bitte geben Sie einen Text ein.'
);
if( isset($_GET['action']) && $_GET['action'] == 'add' ) {
// alle als erforderlich eingestuften Argumente werden geprüft
foreach( $_requiredFields as $key => $value ) {
if( !isset($_POST[$key]) || trim($_POST[$key])=='' ) {
$_errors[] = $value;
} else {
$_POST[$key] = trim($_POST[$key]);
}
}
if( !empty($_errors) ) {
echo '<div class="note error"><ul>';
foreach( $_errors as $error ) {
echo '<li>'.$error.'</li>';
}
echo '</ul></div>';
} else {
$fp = fopen('gaestebuch.txt', 'a');
if( !isset($_POST['www']) || trim($_POST['www'])=='' ) {
$newEntry = '<div class="entry"><div class="meta"><a href="mailto:'.htmlspecialchars($_POST['mail']).'">'.htmlspecialchars($_POST['name']).'</a></div><div class="content"><p>'.nl2br(htmlspecialchars($_POST['text'])).'</p></div>';
} else {
$newEntry = '<div class="entry"><div class="meta"><a href="mailto:'.htmlspecialchars($_POST['mail']).'">'.htmlspecialchars($_POST['name']).'</a><br><a href="'.htmlspecialchars($_POST['www']).'">'.htmlspecialchars($_POST['www']).'</a></div><div class="content"><p>'.nl2br(htmlspecialchars($_POST['text'])).'</p></div>';
}
fputs($fp, $newEntra);
fclose($fp);
echo 'Danke <i>'.htmlspecialchars($_POST['name']).'</i> für deinen Eintrag.';
}
} else {
?>
<form action="eintragen.php?action=add" method="post">
Dein Name: <input type="text" name="name" size="24"><br>
E-Mail: <input type="text" name="mail" size="24"><br>
Homepage: <input type="text" name="www" size="24"><br>
<br>
Dein Eintrag:<br>
<textarea name="text" cols="35" rows="5"></textarea><br>
<input type="submit" value="Abschicken">
</form>
<?php
}
?>Markus Wulftange
-
vielen dank für deine zeit gumbo, es funktioniert. beeindruckend wie du die <li>stentags benutzt hast, das gefällt mir.
Ähnliche Themen
-
Anfänger-Problem
Von IFIllusion im Forum C/C++Antworten: 13Letzter Beitrag: 13.05.07, 20:01 -
Anfänger I/O-problem
Von zwob im Forum C/C++Antworten: 8Letzter Beitrag: 05.04.05, 08:49 -
anfänger problem mit if
Von Germanterminaotr im Forum PHPAntworten: 17Letzter Beitrag: 12.01.05, 09:51 -
Anfänger Problem
Von igfas im Forum C/C++Antworten: 5Letzter Beitrag: 07.09.03, 19:40 -
Anfänger Problem!
Von Dark Dämon im Forum Cinema 4DAntworten: 2Letzter Beitrag: 09.06.03, 10:22





Zitieren
->
Login






[PHP][Snippet] Array zu XML konvertieren