Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: http://redaxo.org/slack/
NorbertK
Beiträge: 85
Registriert: 24. Mai 2017, 12:41

Script-Problem (PHP ->Gästebuch)

26. Jun 2017, 16:13

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!
Freundliche Grüße aus Bagband

Norbert

Benutzeravatar
anita
Beiträge: 711
Registriert: 25. Jan 2007, 10:25
Wohnort: Finsterwalde

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

26. Jun 2017, 16:52

hallo,

Syntaxfehler werden bei den else-Anweisungen angezeigt

POST-Vars solltest Du nicht ungefiltert übernehmen.

hast Du error-reporting angestellt?
Gruß Anita

javanita engineering, immer eine zündende Idee
http://www.javanita.com

NorbertK
Beiträge: 85
Registriert: 24. Mai 2017, 12:41

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

26. Jun 2017, 18:07

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.
Freundliche Grüße aus Bagband

Norbert

Zurück zu „Allgemeines [R5]“