/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
ny post ved refresh
Fra : Thomas gade


Dato : 03-11-05 23:08

Jeg har en gæstebog lavet i mysql og php.

Den har det problem at hvis man opdaterer siden efter man har skrevet et
indlæg duplikeres indlægget hver gang.

Hvad kan jeg gøre for at stoppe det?
koden er:

<?
include ("../connect.php");

if (isset($_POST["skriv"])){
$navn = $_POST["navn"];
$brev = $_POST["brev"];
$link = $_POST["link"];
$besked = $_POST["besked"];
if(!get_magic_quotes_gpc()){
$navn = addslashes($navn) ;
$brev = addslashes($brev);
$link = addslashes($link);
$besked = addslashes($besked);
}
$dato_array = getdate();
$dato = $dato_array["mday"] . "/" . $dato_array["mon"] . "-" .
$dato_array["year"];
mysql_query("INSERT INTO bog (navn, brev, dato, link, besked) VALUES
('$navn', '$brev', '$dato', '$link', '$besked')");
}
?>

<?
$foresp = mysql_query("SELECT navn, brev, dato, link, besked FROM bog
ORDER BY nr DESC LIMIT 30") or die(mysql_error());
while($data = mysql_fetch_array($foresp)){
echo "<tr><td class=top1 valign=top>";
echo "<p class=left1>Fra: <a href=\"mailto:";
echo $data["brev"];
echo "\">";
echo $data["navn"];
echo "</a>" ."&nbsp;"."</p>";
echo "<p class=right1>Dato: ". $data["dato"] ."</p>";
echo "</td> </tr><tr>";
echo "<td class=besked valign=top>";
echo "<p>".nl2br($data["besked"])."</p>";
echo "</td> </tr><tr><td class=bottom>";
echo "<p class=right1>Link: &nbsp; <a href=http://$data[link]>".
$data["link"]."</a></p>";
echo "</td> </tr> ";
echo "<tr><td class=spacer><p>&nbsp;</p></td></tr>";
}
?>

Mvh
Thomas

 
 
Geert Lund (06-11-2005)
Kommentar
Fra : Geert Lund


Dato : 06-11-05 19:08

Thomas gade wrote:

> Jeg har en gæstebog lavet i mysql og php.
>
> Den har det problem at hvis man opdaterer siden efter man har skrevet et
> indlæg duplikeres indlægget hver gang.
>
> Hvad kan jeg gøre for at stoppe det?

1) Tjek fx at der ikke eksisterer et identisk indlæg - og afvis derefter
at oprette indlægget igen.

2) En anden metode - som i øvrigt virker fint med førnævnte - er via en
header refresh - at sende brugeren videre til en ny side - således at de
postede data "tabes" og ikke kan gensendes via et tryk på RELOAD/F5.

Fx

<?php

function dispHTMLRedirect( ) {
header( "Location: http://din.server.her/dit.script.php" );
die();
}

?>

Når noget er korrekt oprettet i databasen kalder du derefter (før du
udlæser noget til browseren) ovenstående funktion - udbyg den selv efter
behov - og sender brugeren videre til en ny side (eller den samme side
igen) og dermed vil et tryk på F5 ikke længere indeholde nogen data der
bliver submittet igen.

--
Med venlig hilsen
Geert Lund,
www.GLD.dk

Thomas gade (06-11-2005)
Kommentar
Fra : Thomas gade


Dato : 06-11-05 23:42


> 1) Tjek fx at der ikke eksisterer et identisk indlæg - og afvis
> derefter at oprette indlægget igen.
>
Jeg er stadig ret grøn i php. Har du et konkret eksempel?

> 2) En anden metode - som i øvrigt virker fint med førnævnte - er via
> en header refresh - at sende brugeren videre til en ny side - således
> at de postede data "tabes" og ikke kan gensendes via et tryk på
> RELOAD/F5.

snip

> Når noget er korrekt oprettet i databasen kalder du derefter (før du
> udlæser noget til browseren) ovenstående funktion - udbyg den selv
> efter behov - og sender brugeren videre til en ny side (eller den
> samme side igen) og dermed vil et tryk på F5 ikke længere indeholde
> nogen data der bliver submittet igen.
>
Har forsøgt mig uden held med denne metode. Har gjort som beskrevet men
kan ikke få den til at videresende. Det er som om browseren fuldstændig
ignorer koden.

Mvh Thomas

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste