php anfänger problem

vekTorbln

Mitglied
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:
<?php
if ($action == "add"){
if ($name == "" || $mail == "" || $text == ""){
echo "<b>Du hast nicht alle Felder ausgef&uuml;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&uuml;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:
<?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
 
danke

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..
 
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:
<?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&uuml;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

	}

?>
 
vielen dank für deine zeit

vielen dank für deine zeit gumbo, es funktioniert. beeindruckend wie du die <li>stentags benutzt hast, das gefällt mir.
 
Zurück