session, og måske noget mere
HejsPå min side hvor brugere kan smide en kommentar til diverse nyheder har jeg et billede med en kode i, som de skal indtaste for at kunne poste. Og det virker sådan set også. Problemet kommer så, hvis brugeren af siden poster en kommentar til en nyhed, går tilbage til forsiden og vælger en ny nyhed han vil kommentere. Så vil koden i billede nemlig være den samme som før, men i virkeligheden har koden ændret sig. For at brugeren skal kunne se den rigtige kode i billede, skal han refreshe siden, og så kan hna poste. Det samme sker igen hvis han vil kommentere en ny nyhed (eller den samme en gang til).
billedet bliver lavet her:
if($_SERVER['REQUEST_METHOD'] != 'POST' ) { /* bruger jeg ellers vil koden ændre sig så snart der bliver trykket på submit, og så vil den aldrig være korrekt.*/
$im = ImageCreate(130, 25);
$white = ImageColorAllocate($im, 234, 234, 234);
$black = ImageColorAllocate($im, 239, 34, 155);
srand((double)microtime()*1000000);
$string = md5(rand(0,9999));
$_SESSION['new_string'] = substr($string, 17, 5);
ImageFill($im, 0, 0, $black);
ImageString($im, 4, 50, 5, $_SESSION['new_string'], $white);
ImagePNG($im, "../verify/verify.png");
ImageDestroy($im);
}
Og formen + diverse er her:
<form action="?id=<?=$_GET['id']?>" method="post">
Navn:* <input type="text" name="navn" /> <br />
Kode:* <input type="text" name="kode" /> <img src="../verify/verify.png" alt="Fortæl du ik' er en bot" />
<a href="#" onclick="popup('popup.php','Koden','300','300');">?</a> <br />
Tekst:*<br /><textarea name="text" rows="15" cols="80"></textarea> <br />
<input type="hidden" name="action" value="submitted" />
<input type="submit" name="post" value="Kommenter" /> <br /><br />
</form>
<?php
if (isset($_POST['action']) && $_POST['action'] == 'submitted') {
$_POST['kode'] = trim($_POST['kode']);
if ($_SESSION['new_string'] != $_POST['kode'] || $_POST['navn'] == '' || $_POST['text'] == '') {
print "Der skete en fejl. Husk at du skal indtaste dit navn, sikkerhedskoden og skrive en tekst.<br />";
} else {
// Smid kommentaren i db med id som news_id
$insert = mysql_query("INSERT INTO comments(news_id, name, date, text) VALUES
('".$_GET['id']."', '".strip_tags(mysql_real_escape_string($_POST['navn']))."', NOW(), '".strip_tags(mysql_real_escape_string($_POST['text']))."')") or die(mysql_error());
?>
<script language="javascript" type="text/javascript">
<!--
window.location="http://techcity.dk/kommentarer/?id=<?=$_GET['id']?>";
// -->
</script>
<?php
session_unset();
session_destroy();
exit;
}
}
hvis problemet skal uddybes yderligere så sig til. Jeg kan også poste hele dokumentet (104 linier).
På forhånd tak.
