automatischer refresh
bjb
- php
hallo
ich habe ein kleines billig-gästebuch programmiert allerdings erfolgt kein automatischer refresh, d.h. man sie erst nach dem aktualisieren ansehen (dabei werden die daten nochmals gesendet, was natürlich auch dumm ist)
hier hab ich mal den quelltext:
<?php
include("../db1.php");
dbconnect();
mysql_select_db("db5");
$daten = mysql_query("SELECT * FROM gaestebuch ORDER BY datum DESC");
$datum = date("Y-m-d");
$titel = $_POST['titel'] ;
$inhalt = $_POST['inhalt'] ;
$autor = $_POST['autor'] ;
if (isset($_POST['titel'])){
mysql_query("INSERT INTO gaestebuch VALUES('$titel','$inhalt','$datum','$autor')");
}
?>
<html>
<head>
<title>Gaestebuch</title>
<meta http-equiv="expires" content="0">
<meta name="author" content="hessluc">
<meta name="generator" content="Ulli Meybohms HTML EDITOR">
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
<font face="ARIAL" size="-2" >
<form action="gaestebuch.php" method="post" target="">
Autor <br>
<input type="Text" name="autor" value="" size="33" maxlength=""> <br><br>
Titel <br>
<input type="Text" name="titel" value="" size="33" maxlength=""> <br><br>
Text <br>
<textarea name="inhalt" cols="25" rows="8" scroll="no"></textarea> <br><br>
<input type="Submit" name="Senden" value="Senden">
</form>
</font>
<div align="center">
<?php
while ($zeile = mysql_fetch_array($daten)) {
echo "<table width="500">
<Tr bgcolor="#999999">
<Td width="30%" align="center">";
echo $zeile['autor'] ;
echo "</td><td width="50%" align="center">" ;
echo $zeile['titel'] ;
echo "</td><td width="20%" align="center">" ;
echo $zeile['datum'] ;
echo "</td> </tr> <tr bgcolor="#cccccc"> <td colspan="3" align="justify">";
echo $zeile['inhalt'];
echo "</td> </tr> </table> <br>";
}
?>
</div>
</body>
</html>
kann man das vielleicht in den form-tag einbauen?
Hallo!
hallo
ich habe ein kleines billig-gästebuch programmiert allerdings erfolgt kein automatischer refresh, d.h. man sie erst nach dem aktualisieren ansehen (dabei werden die daten nochmals gesendet, was natürlich auch dumm ist)
kann man das vielleicht in den form-tag einbauen?
29.17. Wie kann ich Reloads durch den User erkennen und verhindern?
http://www.dclp-faq.de/q/q-phplib-reloads.html
MfG, André Laugks
Hallo nochmal
29.17. Wie kann ich Reloads durch den User erkennen und verhindern?
http://www.dclp-faq.de/q/q-phplib-reloads.html
könntest du mir das als beispiel sagen?
irgendwie versteh ich das nicht so ganz
gruß bjb
Hallo!
könntest du mir das als beispiel sagen?
irgendwie versteh ich das nicht so ganz
<?PHP
ini_set("session.use_cookies", "off"); // keine Cookies (Geschmackssache)
ini_set("session.use_trans_sid", "off"); // Trans-session-Id aus, weil Input-Hidden schon angegeben (Geschmackssache)
session_name("sess"); // Session-Name (ohne -> PHPSESSION)
session_register("sess_ts"); // Sessionvariable registrieren
/*
/*
Bei einem Reload ist sess_ts == form_ts weil form_ts noch den alten Timestamp enthält, der vor dem Reload, als nach dem Absenden, in sess_ts abgespeichert wurde.
*/
if($_POST['senden'] AND ($_SESSION['sess_ts'] == $_POST['form_ts']))
{
$msg = "RELOAD";
}
/*
form_ts in sess_ts abspeichern. "if($_POST['senden'])" ist nicht nötig, aber irgendwie sauberer.
*/
if($_POST['senden'])
{
$_SESSION['sess_ts'] = $_POST['form_ts'];
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<?PHP
echo $msg; // Mal sehen in welchen Block man ist.
?>
<form action="<?PHP echo($_SERVER['PHP_SELF']); ?>" method="post">
<!-- Timestamp -->
<input type="Hidden" name="form_ts" value="<?PHP echo(time()); ?>">
<!-- SESSION-Daten -->
<input type="Hidden" name="<?PHP echo(session_name()); ?>" value="<?PHP echo(session_id()); ?>">
<input type="Submit" name="senden" value="absenden">
</form>
</body>
</html>
MfG, André Laugks
Ich leite den Besucher nach dem Abschicken mit header('Location: http://www.example.com'); nochmal auf das Gästebuch, dabei sendet der Browser die Daten nicht noch einmal. Funktioniert prima.