Hi,
versuch seid Gestern schon zwei Scripte zu kombinieren, nur fehlt mir da wohl noch
der richtige kombinationssinn.
Also, ich hab ein Kommentar-Script, ansich auch ein recht gutes, nur hat das Script keine
Reload sperre, auf der suche nach einer Reload sperre habe ich Björn Schottes - Formular Reloads verhindern Artikel gefunden.
Ich habe Gestern Stunden damit verbracht, das Script von Björn in das Kommentar Script
einzubinden, nur will das irgendwie nicht. Es lässt sich zwar einbinden,
nur verhindert es dann keine reloads mehr.
Hier mal die Scripte, das erste nur auf form beschränkt,
wenn der gesamte Code nötig sein sollte ist hier noch das gesamte Script als Text Datei.
<form name="Form" action="<?php echo $_SERVER["PHP_SELF"] ?>" method="POST">
<input type="text" name="Kommentator" size="28" value="Name" title="Name">
<textarea rows="4" cols="21" name="Kommentar">Kommentar</textarea><br>
<?php
// Dateiname ermitteln
$titel=explode("/","$_SERVER[PHP_SELF]");
$file=explode('.',ucfirst($titel[count($titel)-1]));
echo " <input type='hidden' name='Kdateiname' value='".$file[0]."'>\r";
?>
<input type="reset" value="löschen">
<input type="submit" value="Absenden" name="absenden1">
</form>
Und Björns Script, das den Reload verhindern soll
<?php
$token = md5(uniqid('foobarmagic'));
?>
<?php
class formreload {
/**
* In welchem Array werden die Tokens in der Session gespeichert?
* @var string
* @access private
*/
var $tokenarray = '__token';
/**
* Wie soll das hidden element heißen?
* @var string
* @access public
*/
var $tokenname = '__token';
function get_formtoken() {
$tok = md5(uniqid("foobarmagic"));
return sprintf("<input type='hidden'
name='%s' value='%s'>",$this->tokenname,htmlspecialchars($tok));
}
function easycheck() {
$tok = $_POST[$this->tokenname];
if (isset($_SESSION[$this->tokenarray][$tok])) {
return false;
} else {
$_SESSION[$this->tokenarray][$tok] = true;
return true;
}
}
}
?>
Das dazu gehörige Programm sähe so aus:
<?php
session_start();
include_once 'dateimitderklasse.php';
$f =& new formreload;
if (isset($_POST['submit'])) {
/**
* Formular wurde submitted
*/
if ($f->easycheck()) {
print "Ok, Daten können gespeichert werden.";
} else {
print "Sie haben einen Reload gemacht";
}
} else {
/**
* Formular anzeigen
*/
printf("<form action='%s' method='post'>%s",$PHP_SELF,$f->get_formtoken());
print "<input type='text' name='name'>";
print "<input type='submit' name='submit' value='Klick mich!'>";
print "</form>";
}
?>
Wie kann ich diese beiden kombinieren, ich habe schon mit den input hidden und form Elementen
alles mögliche probiert, nur funktioniert irgendwie nichts davon.
Grüße,
Engin
GYRO