[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • Script-Problem (PHP ->Gästebuch)
Seite 1 von 1

Script-Problem (PHP ->Gästebuch)

Verfasst: 26. Jun 2017, 16:13
von NorbertK
Hallo allerseits,

ich bekommen einen Error 500 (und leider kein aussagekräftiges Logfile = der Fehler taucht darin gar nicht auf) bei der Ausführung dieses Scripts:

Code: Alles auswählen

<?php
// Mit MYSQL-Datenbank verbinden
require_once ('/resorces/inc/dbconfig.php');
$db_link = mysqli_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT, MYSQL_DATENBANK);
// mysqli_set_charset($db_link, 'utf8');
// Zeitzone festlegen
$now = new DateTime();
$mins = $now->getOffset() / 60;
$sgn = ($mins < 0 ? -1 : 1);
$mins = abs($mins);
$hrs = floor($mins / 60);
$mins -= $hrs * 60;
$offset = sprintf('%+d:%02d', $hrs*$sgn, $mins);
$badwords = array("***", "porn", "ringtone", "generic", "pharmacy", "prescription", "tamiflu", "valium", "vicodin", "skipper", "hitler", "nazi", "dating", "drugs", "download", "downloadable");
foreach ($badwords as $word) {
if(eregi($word, $_POST['user_text'])) {
$errormsg = 'Es wurden nicht erlaubte W&ouml;rter verwendet.';
}
}
?>
<h1 align="center">Nobby's G&auml;stebuch</h1>
<form>
<p style="display: none;"><input type="hidden" name="SessionID" value="<?php echo $_SESSION['SessionID']?>"/></p>
</form>
<table cellspacing='0' border='0' cellpadding='1' width='600' align='center'>
<tr>
<td>
<table cellspacing='0' border='0' cellpadding='0' width='100%'>
<tr>
<td colspan="2" align="center">Neuer G&auml;stebucheintrag</td>
</tr>
<tr>
<td colspan="2">&nbsp;</td>
</tr>
<?php
// die Daten aus dem Formular stehen im Skript unter Variablen-
// Namen bereit, die den Namen der Eingabefelder entsprechen.
// Daten aus Formular im Browser ausgeben:
$dbSessionID = $_POST['user_sessionid'];
$dbDatum = $_POST['user_datum'];
$dbDate = $_POST['user_date'];
$dbName = $_POST['user_name'];
$dbEmail = $_POST['user_email'];
$dbTitel = $_POST['user_titel'];
$dbText = $_POST['user_text'];
$dbHomepage = $_POST['user_homepage'];
if($errormsg == ""){
echo "<tr><td align='right'>SessionID:&nbsp;</td><td>".$dbSessionID."</td></tr>\n";
echo "<tr><td align='right'>Datum:&nbsp;</td><td>".$dbDatum."</td></tr>\n";
echo "<tr><td align='right'>Eintrag vom:&nbsp;</td><td>".$dbDate."</td></tr>\n";
echo "<tr><td align='right'>Name:&nbsp;</td><td>".$dbName."</td></tr>\n";
echo "<tr><td align='right'>E-Mail:&nbsp;</td><td>".$dbEmail."</td></tr>\n";
echo "<tr><td colspan='2'>&nbsp;</td></tr>\n";
echo "<tr><td align='right'>Titel:&nbsp;</td><td>".$dbTitel."</td></tr>\n";
echo "<tr><td colspan='2'>&nbsp;</td></tr>\n";
echo "<tr><td align='right'>Text:&nbsp;</td><td>".$dbText."</td></tr>\n";
echo "<tr><td colspan='2'>&nbsp;</td></tr>\n";
echo "<tr><td align='right'>Homepage:&nbsp;</td><td>".$dbHomepage."</td></tr>\n";
echo "<tr><td colspan='2'>&nbsp;</td></tr>\n";
// Werte in Datenbank schreiben
// Definition des SQL-Queries
$sql = "INSERT INTO rex_guestbook (sessionid, datum, date, name, email, titel, text, homepage) VALUES ('".$dbSessionID."', '".$dbDatum."', '".$dbDate."', '".$dbName."', '".$dbEmail."', '".$dbTitel."', '".$dbText."', '".$dbHomepage."');";
// Datensatz existiert noch nicht: Anlegen
$success = mysqli_query($db_link, $sql);
// wenn erfolgreich...
if ($success) {
// dann einfache Bestaetigung ausgeben:
echo "<tr><td align='center' colspan='2'>
Dein Eintrag wurde ins G&auml;stebuch geschrieben.</td></tr>\n";
// ... sonst ...
}
else {
// Hinweis auf Scheitern ausgeben:
echo "<tr><td align='center' colspan='2'>
Fehler beim Schreiben in die Datenbank. Dein Eintrag wurde nicht aufgenommen!<br /> 
Fehler:".mysql_error()."
</td></tr>\n";
}
}
else {
echo "<tr><td align='center' colspan='2'>
".$errormsg."
</td></tr>\n";
}
?>
<tr>
<td colspan='2'>&nbsp;</td>
</tr>
<tr>
<td align='center' colspan='2'><a href="nobbys-gaestebuch.html">zum G&auml;stebuch</a>
</td>
</tr>
<tr>
<td colspan='2'>&nbsp;</td>
</tr>
</table>
</td>
</tr>
</table>
Der Aufbau sieht so aus:
Gästebuch (übergeordnete Kategorie offline und ohne Startartikel)
Nobby's Gästebuch (http://sanlutions.net/nobbys-gaestebuch.html) zur Anzeige (als untergeordnete Kategorie online mit Startartikel)
Nobby's Gästebuch Formular (http://sanlutions.net/nobbys-gastebuch-formular) zur Eingabe (als untergeordnete Kategorie online mit Startartikel)
das bei Submit das oben genannte Script, gespeichert als PHP-Code in Nobby's Gästebuch Eintrag (http://sanlutions.net/nobbys-gaestebuch-eintrag.html) aufruft (ebenfalls untergeordnete Kategorie online mit Startartikel).

Die Session-ID übergebe ich im Template "Gästebuch":

Code: Alles auswählen

<?php
//Debugging
//error_reporting(E_ALL);
//ini_set('display_errors', 1);
ini_set('session.gc_maxlifetime',1800);
ini_set('session.cookie_lifetime',1800);
session_name('formdata');
session_start();
$meldungen = array();
if (!empty($_POST['Name'])) {
if(isset($_SESSION['SessionID']) && $_SESSION['SessionID'] === $_POST['SessionID']) {
$meldungen[] = 'Formulardaten verarbeitet!';
}
else $meldungen[] = 'Es ist ein Fehler aufgetreten!';
}
else $meldungen[] = 'Keine Formulardaten!';
$_SESSION['SessionID'] = md5('Salz und '.rand());
?>
Kann von Euch mal kurz jemand drüberschauen, wo ich mich vertippt habe oder ein Syntax-Fehler ist? Ich bin gerade "betriebsblind" und finde nichts.

Danke!

Re: Script-Problem (PHP ->Gästebuch)

Verfasst: 26. Jun 2017, 16:52
von anita
hallo,

Syntaxfehler werden bei den else-Anweisungen angezeigt

POST-Vars solltest Du nicht ungefiltert übernehmen.

hast Du error-reporting angestellt?

Re: Script-Problem (PHP ->Gästebuch)

Verfasst: 26. Jun 2017, 18:07
von NorbertK
Hallo Anita,

danke!

Ja, ich hab serverseitig Error-Reporting eingeschaltet; aber das Log bekommt keinen Fehler.

Update:
Ich habe das Script jetzt als include-Datei ausgelagert; jetzt klappt's mit dem Eintragen in die Tabelle (und auch das Error-Log wird befüllt.