Hallo wieder mal ^^
Ich habe ein kleines Problemchen...
Hab mir gedacht, mach ma selber einen kleinen Captcha und brauch den für mein Newsscript...
Naja, jedoch funktioniert das nicht so ganz...
Mein Captcha ist ganz einfach aufgebaut (besteht nur aus Zahlen) und wird in die Variable $int gespeichert. Diese wird dann in $_SESSION["int"] reingeschrieben und sollte so übergeben werden und kontrollieren, ob die alles stimmt....
Nun wird jedoch meine Session bei jedem neuen aufruf der Seite, sowie blöderweise auch beim Submitten des Formulars überschrieben.
Meine Frage ist jetzt, wie ich es schaffe, dass die Session erst überschrieben wird, nachdem überprüft wurde, ob alles okay ist.
Hier mal einwenig Code für euch:
Wenn ich sage er soll $_SESSION["int"] = $int; nur machen, wenn das Formular nicht übergeben wurde (Bei else, habs in einen Kommentar geschrieben), dann geht das zwar beim ersten Versuch (beim ersten ausfüllen des Formulars), jedoch wenn man einen Fehler macht und es nochmals ausfüllen muss, stimmt die Session wieder nicht.
Das ganze könnt ihr hier ausprobieren, damit ihr mein Problem besser versteht...
Danke für die Hilfe...
Gruss Toby
Ich habe ein kleines Problemchen...
Hab mir gedacht, mach ma selber einen kleinen Captcha und brauch den für mein Newsscript...
Naja, jedoch funktioniert das nicht so ganz...
Mein Captcha ist ganz einfach aufgebaut (besteht nur aus Zahlen) und wird in die Variable $int gespeichert. Diese wird dann in $_SESSION["int"] reingeschrieben und sollte so übergeben werden und kontrollieren, ob die alles stimmt....
Nun wird jedoch meine Session bei jedem neuen aufruf der Seite, sowie blöderweise auch beim Submitten des Formulars überschrieben.
Meine Frage ist jetzt, wie ich es schaffe, dass die Session erst überschrieben wird, nachdem überprüft wurde, ob alles okay ist.
Hier mal einwenig Code für euch:
PHP-Code:
<?php
error_reporting(E_ALL); // Alle Errors anzeigen
include("config.php"); // Definierte Konstanten für MySql Connect Includen
include("vars.inc.php");
$int = rand(10000,100000);
$_SESSION["int"] = $int;
echo $_SESSION["int"]."<br />\n";
@$conn = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS); // MySql DB Connecten
if (!$conn) {
die("Fehler:". mysql_error()); // Wenn das nicht funktioniert hat; Script abbrechen und Fehler ausgeben
}
$sel_db = mysql_select_db(MYSQL_DB); // DB Auswählen
if (!$sel_db) echo "Fehler: ". mysql_error(); // Hats Gefunzt?
$table = "news"; // Tablename der DB hier angeben
if(!mysql_query("SELECT * FROM $table ")) { // Wenn $table noch nicht existiert, erstelle ihn:
$sql = "
CREATE TABLE $table
(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(60) NULL,
date DATETIME NOT NULL,
msg TEXT NULL
)
";
mysql_query($sql) or die(mysql_error()); // Mach das oder stirb...
echo $txt_edit."<pre>". $sql ."</pre>"; // Das wurde geändert.. oda eingefügt
}
else {
if(isset($_POST['submit'])) { // Wenn das Formular abgeschickt wurde mache folgendes:
$title = htmlspecialchars($_POST['title']); // Post Variabeln umschreiben
$msg = htmlspecialchars($_POST['msg']);
$spamzahl = $_POST['spamzahl'];
if($title == "" || $msg == "") { // Wenn ein Feld im Formular nicht ausgefühlt wurde (also title oder msg is leer)
$errors[] = $txt_err."<br />\n";
}
if ($_SESSION["int"] != $spamzahl) { // Geht nicht, weil die Zahl nie aktuell ist...
$errors[] = $txt_err2;
}
if (empty($errors)) {
$sql = "
INSERT INTO $table
(title, date, msg)
VALUES
('$title', now(), '$msg')
";
mysql_query($sql) or die($txt_fehler."<br />".mysql_error()); // Mach oder gib Fehler
//echo $txt_news_eingef."<pre>". $sql ."</pre>;
echo $txt_news_eingef."<br /><br />";
include("form.php");
//unset($_SESSION["int"]);
}
else {
// Errors Zeigen...
foreach ($errors as $key) {
echo $key;
}
echo "<br />\n<br />\n\n";
include("form.php");
}
//unset($_SESSION["int"]);
}
else { // Wenn das Formular nicht abgesendet wurde, zeigs an!
//$_SESSION["int"] = $int;
include("form.php");
}
// --------- News anzeigen: ------------------
if (mysql_query("SELECT * FROM $table ")) { // Überprüfen, ob etwas in den News steht.
$sql = "
SELECT * FROM $table
ORDER BY date DESC
"; // WHERE id='$id'
$result = mysql_query($sql);
echo $txt_news_anz; // Text News anzeigen
//while ($row = mysql_fetch_array($result)) {
for ($id = 0; $id < mysql_num_rows($result); $id++){
while ($row = mysql_fetch_array($result)) {
//$id = 0;
echo "
<div class='news_date'>
".@$row[date]."
</div>
<div class='news_title'>
".@$row[title]."<br />
</div>
<div class='news_anz'>
".@$row[msg]."<br /><br />
</div>
";
//$id++
}
}
// Code zum anzeigen der News..
}
} // Ende von Else (News einfügen)
?>
Das ganze könnt ihr hier ausprobieren, damit ihr mein Problem besser versteht...
Danke für die Hilfe...
Gruss Toby
Kommentar