Page 1 of 1

PHP

Posted: Wed 12. Nov 2003, 11:09
by Xdream
wie kann ich denn Variablen an ein externes PHP sript weitergeben?
Ich habe eine kleine Shoutbox gebastelt welche auf der rechten seite angezeigt wird!

Ich habe das script mittels {PHP:scripts/shout.php} eingebunden.
Das formular und die einträge werden angezeigt. Nur wenn ich was in
das formular schreibe werden die values nicht weitergegeben, also an das
includierte script!

Somit wird auch nix in die Datenbank geschrieben!

DANKE!

Hier noch der Code

Code: Select all

<?php

( require ( "config.inc.php" ) ) or die ( "Bitte config.php ¸berpr¸fen!" );
function template ( $template ) {
	$template = implode ( "", file ( "templates/" . $template . ".html" ) );
	return str_replace ( "\"", "\\\"", $template );
}
$serverid  = @mysql_connect  ( $sqlhost, $sqluser, $sqlpass ) 
	or die ( "Keine Verbindung zum MySQL-Server: ". @mysql_error ( $serverid ) );
@mysql_select_db ( $database )
	or die ( "Konnte Datenbank nicht ausw‰hlen: ". @mysql_error( $serverid ) );
eval ( "echo \"".template ( "header" )."\";" );
$ip = $_SERVER['REMOTE_ADDR'];
$zeit = time();
$abgelaufen = $zeit - $dauer;
@mysql_query ( "DELETE FROM ".$table."_ip WHERE timefeld <= '$abgelaufen'" );
if ( $action != "" && $action != "none" ) {
	if ( ( $_POST['name'] != "" && $_POST['name'] != "name" ) && ( $_POST['text'] != "" && $_POST['text'] != "message" ) ) {
		$sperre = @mysql_query ( "SELECT * FROM ".$table."_ip WHERE ip = '$ip'" );
		$rows = @mysql_num_rows ( $sperre );
		if ( $rows >= 1 ) {
			eval ( "echo \"".template ( "fehler_ip" )."\";" );
		} else {
			@mysql_query ( "INSERT INTO ".$table."_ip ( ip, timefeld ) VALUES ( '$ip', '$zeit' )" );
			$result = @mysql_query ( "INSERT INTO $table (time, ip, name, text) VALUES ('".date('d.m.y - H:i')."', '".$_SERVER['REMOTE_ADDR']."', '".$_POST['name']."', '".$_POST['text']."')", $serverid );
			if ( $mailb == 1 ) {
				@mail ( $empfaenger, "Neuer Eintrag in deiner Shoutbox", "Es wurde ein neuer Eintrag in deine Shoutbox eingef¸gt.\n\nName: ".$_POST['name']."\nEintrag: ".$_POST['text']."", "From: $empfaenger" );
			}
		}
	} else {
		eval ( "echo \"".template ( "fehler_form" )."\";" );
	}
}
$count = @mysql_query ( "SELECT * FROM $table", $serverid );
$count = @mysql_num_rows ( $count );
if ( $_GET['history'] ) {
	$result = @mysql_query ( "SELECT * FROM $table ORDER BY id DESC LIMIT $limit, 10000", $serverid );
	$menu = "<a href=\"".$PHP_SELF."\">back</a>";
} else {
	eval ( "echo \"".template ( "form" )."\";" );
	$result = @mysql_query ( "SELECT * FROM $table ORDER BY id DESC LIMIT $limit", $serverid );
	if ( $count > $limit ) $menu = "<a href=\"".$PHP_SELF."?history=1\">archiv</a>";
}
while ( $daten = @mysql_fetch_array( $result ) ) {
	$text = nl2br ( $daten[text] );
	$name = htmlspecialchars ( $daten[name] );
	$datum = $daten[time];
	$text = str_replace ( "<noscript>", "", $text );
	$text = preg_replace ( "/((http(s?):\/\/)|(www\.))([\S\.]+)\b/i", "<a href=\"http$3://$4$5\" target=\"_blank\">$4$5</a>", $text );
	$text = preg_replace ( "/([\w\.]+)(@)([\S\.]+)\b/i", "<a href=\"mailto:$0\">$0</a>", $text );
	$text = str_replace ("/n", "<br>", $text );
	if ( $smilies == 1 ) {
		$text = smilies ( $text );
	}
	eval ( "echo \"".template ( "eintrag" )."\";" );
}
eval ( "echo \"".template ( "footer" )."\";" );
?>

Posted: Wed 12. Nov 2003, 11:41
by Oliver Georgi
Beim Einbetten zusätzlicher Datenbankabfragen solltest Du vorsichtiger sein - die Datenbank wird sowieso bei jedem Seitenaufruf geöffnet - solltest Du also genau darin auch die Tabelle liegen haben, die Du ansprechen möchtest, dann ist das nicht nötig - kann sogar kontraproduktiv sein.

Zeig mal ein Beispiel für Deine Anwendung - Codewüsten nützen nichts!

Außerdem scheint der relevante Code zu fehlen - nämlich der zum Formularerstellen.

Oliver

Posted: Wed 12. Nov 2003, 12:20
by Xdream

Code: Select all

<form name="form1" method="post" action="index.php" autocomplete="off">
<table border="0" width="96" cellpadding="0" cellspacing="0">
<tr>
	<td><input type="text" size="18" onblur="if (value == '') {value='name'}" onfocus="if (value == 'name') {value =''}" name="name" value="name" id="name" class="input" ></td>
</tr>
<tr>
	<td><input type="text" size="18" onblur="if (value == '') {value='message'}" onfocus="if (value == 'message') {value =''}" name="text" value="message" id="shout" class="input" maxlength="500"></td>
</tr>
<tr>
	<td align="right">
				<div align="left">
					<input type="submit" name="action" value="submit" class="button"></div>
			</td>
</tr>
</table>
</form>
nein das ding ist, die tabelle habe ich in einer
anderen Datenbank. Is ja denke ich auch nicht weiter tragisch.
Aber die variablen werden ja wie gesagt auch nicht weitergegeben, welches das script bearbeiten sollte!

hier noch nen link zu meiner Page: http://cms.scralle.de

Posted: Wed 12. Nov 2003, 12:34
by Oliver Georgi
Du musst Deinem Post natürlich auch die aktuellen id-Werte mitgeben - also

Code: Select all

$_SERVER["PHP_SELF"]."?".$_SERVER["QUERY_STRING"]
oder

Code: Select all

"index.php?".$_SERVER["QUERY_STRING"]
Oliver

Posted: Wed 12. Nov 2003, 12:37
by Oliver Georgi
Noch was - wenn Du die Daten an die shoutbox.php lieferst - mach nachdem diese eingetragen worden sind einfach ein

Code: Select all

header("Location: ".$_SERVER["HTTP_REFFERER"]);

Posted: Wed 12. Nov 2003, 12:57
by Xdream
irgendwie passiert da nix....
ich habe das in die shoutbox.php eingesetz, genau nachdem die daten
in die mysql tabelle geschrieben wurde.
Also das Formular sendet die daten an die shoutbox.php.

hoffentlich geh ich dir nich aufn kecks :?