# [OT] schreibverbot bei php-gästebuch

## Erdgeist

ich hab ein problem mit meinem gästebuch.

man kann keine einträge posten.

Das GB wurde auf einem windows-host getestet. mit erfolg.

darum glaube ich das der fehler nicht beim script zu suchen ist.

Auch die log-dateien konnten mir nicht weiterhelfen.

der link zum GB ist:

http://erdgeist.homeip.net/guest.php

bei dem script handelt es sich um 2 dateien. der guest.php und einer comment.txt in der die comments gespeichert werden.

der lokale pfad zur homepage ist standart /var/www/localhost/htdocs

ich habe auch schon ein 2tes GB versucht, das unter:

http://erdgeist.homeip.net/alt/pcp_gb_v3/index.php

zu finden ist. nur bei diesem gb sieht es noch schlimmer aus.

ich hoffe ihr könnt mir weiterhelfen.

mfg Erdgeist

mod edit: Als [OT] markiert. -- amne

----------

## _hephaistos_

hallo,

also wenn es 100%ig nicht am script liegt:

comments.txt -> schreibrechte??

HTH  :Smile: 

ciao

----------

## Erdgeist

777   :Rolling Eyes: 

----------

## pir187

huhu,

in der zeile <form action="" method="post"> steht hinter "action" normalerweise das ziel, zu dem die eingegebenen formulardaten geschickt werden. dort werden sie dann in geeigneter weise weier verarbeitet.

bei dir steht da aber nichts, also kann mit den daten auch nichts geschehen! logisch!

also check noch mal das skript, ich glaube da sollte "quest.php" stehen! poste am besten mal den inhalt des guest.php-skriptes! das hilft uns, dir zu helfen!

mfg, pir187

----------

## Erdgeist

ungern, wegen coyright  :Wink: 

aber dennoch:

<html>

<head>

      <title> Erdgeist´s Guests </title>

</head>

<body>

<h1 align="center"> Gaestebuch </h1>

<hr>

<div align="center">

<form action="<?php echo $PHP_SELF ?>" method="post">

		Ihr Beitrag :<br>

		<textarea cols="55" rows="4" wrap="soft" name="comment"></textarea><br>

		Name :<br>

		<input type="text" name="name"><br>

		Email : <br>

		<input type="text" name="email"> <input type="submit" value="Posten">

</form>

</div>

<?

		// * Dateinamen in Variable speichern * //

		$datei = "comment.txt";

		// * Validierung des Namens-/Emailfeldes

		if (isset($comment) && $name != "" && $email != "") {

						// * Dateizugriff [write & read] * //

						$zeiger = fopen($datei,"r+");

						// * alte Daten herauslesen und in $alt speichern * //

						$alt = fread($zeiger,filesize($datei));

						// * Email-Link entsteht * //

						$email = "<a href=\"$email\">$email</a>";

						// * Datum [ermitteln + formatieren] * //

						$datum=date("j.n.Y");

						// * Kill all Slashes + Zeilenumbrüche * //

						$comment=stripslashes(nl2br($comment));

						// * News zusammensetzen * //

						$news="<p><b>$name</b> ($email) schrieb am <i>$datum</i>:<br>$comment</p>\n";

						// * unsichtbarer Cursor an Anfang * //

						rewind($zeiger);

						// * neue News vor alte * //

						fputs($zeiger,"$news \n $alt");

						// * Datei schliessen * //

						fclose($zeiger);

		}

		// * Datei anzeigen * //

		readfile($datei);

?>

</body>

</html>

----------

## _hephaistos_

ja, tausch mal $PHP_SELF durch guest.php

--> das stünde dann dafür, dass $PHP_SELF nicht richtig gesetzt ist.

mach mal phpinfo() und schau, welche env's du hast.

hth,

ciao

----------

## pir187

probier mal das:

<form action="<?php echo $PHP_SELF; ?>" method="post">

falls es nicht erkennbar ist: ein semikolon hinter $PHP_SELF solltest du setzen! befehlszeilen sollte man immer mit ";" abschließen.

ändert das was?

pir187

----------

## _hephaistos_

die "neuen" PHP Parser (glaub ab 4.3) ersetzen teilweise das fehlende Semikolon...

sonst würde ja ein parse Error kommen...

ist wirklich schwer zu sagen in diesem fall, weil man nicht selbst an der maschine ist  :Smile: 

ciao

----------

## Erdgeist

hat beides nichts gebracht, wenn ich das richtig verstanden habe soll ich phpinfo() in der console ausführen?! ( nutze gentoo noch nicht all zulange) dann komm ich so ne art texteditor (wie bei tclsh nur mit anderem vorzeichen)

inen output gibt es nicht.

----------

## pir187

nee, erstelle eine neue datei info.php mit dem inhalt:

<?php

  phpinfo();

?>

wenn du beim ausführen eine sinnvolle seite angezeigt bekommst, funzt php erst einmal grundsätzlich! weiter dann später!

----------

## _hephaistos_

naja, php funktioniert ja, da wir ja auf seinem server ware (nehme ich an)

 --> es geht mir um die ENV settings oder wo halt zB PHP_SELF steht...

 :Smile: )

----------

## Robelix

 *pir187 wrote:*   

> huhu,
> 
> in der zeile <form action="" method="post"> steht hinter "action" normalerweise das ziel, zu dem die eingegebenen formulardaten geschickt werden. dort werden sie dann in geeigneter weise weier verarbeitet.
> 
> bei dir steht da aber nichts, also kann mit den daten auch nichts geschehen! logisch!
> ...

 

Irrtum,  action="" geht schon, der Browser nimmt dann die aktuelle URL. Aber schön ist es natürlich nicht.

In dem Fall _glaub_ ich eher, daß diese GB's "register_global = On" brauchen.

BTW: Hätte selber ein relativ einfaches GB-Script ohne DB rumliegen: http://www.robelix.com/pappalapapp/ - ist allerdings in Perl und schon ziemlich alt.

Robelix

----------

## _hephaistos_

guter einwand! könnte so eines von den "unschönen" scripten sein, die gleich eine variable aus get/post mit $variable übernehmen -> absolute sicherheitslücke...

aber es gibt ohnehin soooo viele scripte -> vielleicht suchst du ein anders?

ciao

----------

## x000x

Hallo,

füge folgende zeilen in dein script ein, dann funktioniert es auch  :Smile: 

```
...

$comment = $HTTP_POST_VARS{"comment"};

$name = $HTTP_POST_VARS{"name"};

$email = $HTTP_POST_VARS{"email"};

// * Validierung des Namens-/Emailfeldes

 if ($comment != "" && $name != "" && $email != "") {

...
```

----------

## pir187

$comment = $HTTP_POST_VARS{"comment"};

$name = $HTTP_POST_VARS{"name"};

$email = $HTTP_POST_VARS{"email"};

--> geschweifte klammern? ich nehme da immer eckige! kann aber auc sein, daß es mehrere möglichkeiten gibt, dann nimm es als versuchsalternative, falls o.a. nicht klappt...

gute n8, pir187

----------

## pablo_supertux

Benutze dann

$_SERVER['PHP_SELF']

ne frage, hast du auch zugriff zu einer Datenbank (ldap, sql?)

----------

## x000x

 *pir187 wrote:*   

> --> geschweifte klammern?

 

ja, hast natürlich recht... [...] Klammern   :Confused: 

----------

