möchtegern anfänger gästebuchproblem

Hallo,

Hinweis:

Ab PHP 4.2.0 ist der Standardwert für die PHP-Anweisung register_globals off.
Dies ist eine wesentliche Änderung in PHP. Die Anweisung register_globals off beeinflusst
den Satz von vordefinierten Variablen, die im globalen Bereich verfügbar sind.
Um zum Beispiel DOCUMENT_ROOT zu bekommen, müssen Sie $_SERVER['DOCUMENT_ROOT']
statt $DOCUMENT_ROOT verwenden oder um $id von der URL http://www.example.com/test.php?id=3
zu bekommen $_GET['id'] statt $id oder $_ENV['HOME'] statt $HOME.
Bitte auch hier weiterlesen:

http://de3.php.net/manual/de/language.variables.predefined.php
 
Mein Vorschlag:
PHP:
<?php

	ini_set('display_errors', true);
	error_reporting(E_ALL);

	function removeLinebreaks( $string )
	{
		return preg_replace('/\x0A|\x0D/s', '', $string);
	}


	$link = mysql_connect('knirsch.knacks.de', 'uga', 'aga');
	mysql_select_db('DBverspätung', $link);

	if( $_POST['action'] == 'save' ) {
		$_POST['name'] = !empty($_POST['name']) ? $_POST['name'] : 'unbekannt';
		$_POST['hp'] = preg_replace('<^http://http://>', 'http://', 'http://'.trim($_POST['hp']));
		$query = '
			INSERT INTO
			        `gbook`
			  SET
			        `name`   = "'.mysql_real_escape_string($_POST['name']).'",
			        `email`  = "'.mysql_real_escape_string($_POST['email']).'",
			        `hp`     = "'.mysql_real_escape_string($_POST['hp']).'",
			        `inhalt` = "'.mysql_real_escape_string($_POST['inhalt']).'",
			        `datum`  = UNIX_TIMESTAMP()
			';
		mysql_query($query, $link)#
			or die(mysql_error());
		$content = 'Der Benutzer '.$_POST['name'].' hat gerade einen Eintrag in Ihr Gästebuch vorgenommen.';
		@mail('user@example.net', 'Gästebucheintrag', $content, 'From: '.removeLinebreaks($_POST['email']));
	}

	if( $_GET['action'] == 'neu' ) {
		echo '<p><a href="index.php?page=Guestbook">zum Gästebuch</a></p>';
	} else {
		echo '<p><a href="'.$_SERVER['PHP_SELF'].'?action=neu&amp;page=Guestbook">Neuer Eintrag</a></p>';
	}

	if( $_GET['action'] == 'neu' ) {

?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>?action=neu&amp;page=Guestbook" method="post">
	<input type="hidden" name="action" value="save">
	<p><label>Name <input type="text" name="name"></label></p>
	<p><label>E-Mail <input type="text" name="email"></label></p>
	<p><label>Homepage <input type="text" name="hp" value="http://"></label></p>
	<p><label>Eintrag <textarea name="inhalt" rows="6" cols="25"></textarea></label></p>
	<p><input type="submit" value="Eintragen"></p>
</form>
<?php

	} else {

		$query = '
			SELECT
			        `name`,
			        `email`,
			        `hp`,
			        `inhalt`,
			        DATE_FORMAT("d.m.Y/H:i:s", `datum`) AS `datum_formatiert`
			  FROM
			        `gbook`
			  ORDER BY
			        `datum` DESC
			  LIMIT
			        50
			';
		$result = mysql_query($query, $link);
		if( mysql_num_rows($result) <= 0 ) {
			echo '<p>Bisher keine Einträge vorhanden.</p>';
		}
		while( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
			echo '<div class="entry">',
			echo '<p><a href="mailto:'.$row['email'].'">'.$row['name'].'</a>'.( $row['hp']!='' ? ' (<a href="'.$row['hp'].'" target="_blank">Website</a>)' : '' ).' schrieb am '.$row['datum_formatiert'].'</p>';
			echo '<p>'.nl2br($row['inhalt']).'</p>';
			flush();
		}
	}

	if( $_GET['action'] == 'neu' ) {
		echo '<p><a href="'.$_SERVER['PHP_SELF'].'?page=Guestbook">zum Gästebuch</a></p>';
	} else {
		echo '<p><a href="'.$_SERVER['PHP_SELF'].'?action=neu&amp;page=Guestbook">Neuer Eintrag</a></p>';
	}

?>
 
Es waren noch ein paar Fehler drin:

Hier die Korrektur:
PHP:
<?php
    
    ini_set('display_errors', true);
    error_reporting(E_ALL);

    function removeLinebreaks( $string )
    {
        return preg_replace('/\x0A|\x0D/s', '', $string);
    }


   $link = mysql_connect('knirsch.knacks.de', 'uga', 'aga');
    mysql_select_db('DBverspätung', $link);

    if( $_POST['action'] == 'save' ) {
        $_POST['name'] = !empty($_POST['name']) ? $_POST['name'] : 'unbekannt';
        $_POST['hp'] = preg_replace('<^http://http://>', 'http://', 'http://'.trim($_POST['hp']));
        $query = '
            INSERT INTO
                    `gbook`
              SET
                    `name`   = "'.mysql_real_escape_string($_POST['name']).'",
                    `email`  = "'.mysql_real_escape_string($_POST['email']).'",
                    `hp`     = "'.mysql_real_escape_string($_POST['hp']).'",
                    `inhalt` = "'.mysql_real_escape_string($_POST['inhalt']).'",
                    `datum`  = UNIX_TIMESTAMP()
            ';
        mysql_query($query, $link)#
            or die(mysql_error());
        $content = 'Der Benutzer '.$_POST['name'].' hat gerade einen Eintrag in Ihr Gästebuch vorgenommen.';
        @mail('r@e.net', 'Gästebucheintrag', $content, 'From: '.removeLinebreaks($_POST['email']));
    }

    if( $_GET['action'] == 'neu' ) {
        echo '<p><a href="index.php?page=Guestbook">zum Gästebuch</a></p>';    } else {
echo '<p><a href="'.$_SERVER['PHP_SELF'].'?action=neu&amp;page=Guestbook">Neuer Eintrag</a></p>';
    }

    if( $_GET['action'] == 'neu' ) {

?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>?action=neu&amp;page=Guestbook" method="post">
    <input type="hidden" name="action" value="save">
    <p><label>Name <input type="text" name="name"></label></p>
    <p><label>E-Mail <input type="text" name="email"></label></p>
    <p><label>Homepage <input type="text" name="hp" value="http://"></label></p>
    <p><label>Eintrag <textarea name="inhalt" rows="6" cols="25"></textarea></label></p>
    <p><input type="submit" value="Eintragen"></p>
</form>
<?php

    } else {

        $query = '
            SELECT
                    `name`,
                    `email`,
                    `hp`,
                    `inhalt`,
                    DATE_FORMAT("d.m.Y/H:i:s", `datum`) AS `datum_formatiert`
              FROM
                    `gbook`
              ORDER BY
                    `datum` DESC
              LIMIT
                    50
            ';
        $result = mysql_query($query, $link);
        if( mysql_num_rows($result) <= 0 ) {
            echo '<p>Bisher keine Einträge vorhanden.</p>';
        }
        while( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
            echo '<div class="entry">';
echo '<p><a href="mailto:'.$row['email'].'">'.$row['name'].'</a>'.( $row['hp']!='' ? '<a href="'.$row['hp'].'" target="_blank">Website</a>' : '' ).' schrieb am '.$row['datum_formatiert'].'</p>';
            echo '<p>'.nl2br($row['inhalt']).'</p>';
            flush();
        }
    
}
    if( $_GET['action'] == 'neu' ) {
        echo '<p><a href="'.$_SERVER['PHP_SELF'].'?page=Guestbook">zum Gästebuch</a></p>';
    } else {
echo '<p><a href="'.$_SERVER['PHP_SELF'].'?action=neu&amp;page=Guestbook">Neuer Eintrag</a></p>'; }
   
?>
 
Zuletzt bearbeitet:
@gumbo(1)
wie platzier ich das denn ohne iframe in dem div-container ?
ich glaube auch als ich es mal gemacht habe hat der text jegliche barriere gesprengt und sich über meine seite nach lust und laune verteilt.
aber ich mit meinem krüppelwissen war wahrscheinlich nur unfähig.

@rs9999(1)
*hust...das überfordert mich jetzt ein wenig.
muss ich die jeweilen stellen jetzt ersetzen in der art wie es gumbo in seinem folgenden post gemacht hat ?

@gumbo(2)
hab ich mal verwendet keinen code.
allerdings hab ich eine fehlermeldung für zeile 71 bekommen:
Parse error: parse error, unexpected ')' in /mnt/be1/02/808/00000018/htdocs/gbook/gbook.php on line 71

dann hab ich die klammer mal durch diese version ersetzt "}",
dann kamm das:
Parse error: parse error, unexpected T_ECHO in /mnt/be1/02/808/00000018/htdocs/gbook/gbook.php on line 74

...damit war ich dann mit meinem latein am ende.
)

@rs9999(2)
Cool ihr lest euch gegenseitig korrektur :)
Deine Version funktioniert...FAST.
Allerdings ist alles ein wenig von Fehlermeldungen durchsetzt.
Auch wenn ich damit jetzt wahrscheinlich jegliche Forengesetze breche
(ansonsten schreib ich mich hier noch tot und wahrscheinlich ist es am einfachsten,
kann ich ja gleich wieder rausnehmen den link)
hier einfach der Link zu meiner Testseite:
***ZENSUR***

danke für jeden weitern tip,
bzw für das bauen meines gästebuchs.
ihr steht jetzt schon in meinem buch für coole leute.
 
Zuletzt bearbeitet:
Ich habe die vermeintlichen Fehler korrigiert und meinen vorherigen Beitrag entsprechend angepasst.
Es wäre übrigens sehr entgegenkommend, wenn du nicht nur auf einwandfrei-funktionierende Vorschläge wartest, sondern solche kleinen Fehler selbst beseitigen würdest.
 
geb ich dir vollkommen recht,
allerdings würdet ihr dann wahrscheinlich erst in einer Woche von mir wieder hören,
weil ich solange wahrscheinlich brauchen würde um es zum laufen zu bringen.
ich war gerade dabei die beiden codes zu vergleichen um überhaupt zu verstehn was geändert wurde. ich wollte hier keinen mißbrauchen.
danke nochmal.
 
Das Zauberwort heist "isset()"

z.B.:

PHP:
           if(isset($_POST['action']) == 'save' ) {
bool isset ( mixed var [, mixed var [, ...]] )

Diese Funktion liefert TRUE, wenn die Variable oder das Array-Element var existiert, sonst FALSE
 
JUHU !
*sektkorkenknallen

Vielen Danke an mein Beraterteam.
Es funktioniert tatsächlich.
Damit habt ihr jetzt wohl auch einen Thread,
mit dem wohl auch tante herna von ihrer kaffeemaschine
endlich ein gästebuch programmieren kann.

Aber freut euch nicht zu früh,
ich komme wieder...mit noch dööferen fragen :)
 
Zurück