sayfa yenilendiği için kod değişir rand() ile alıyorsun cünkü.
aynı sayfada tekrar rand açmanın mantığı yok SESSION kullanman gerekli
# Adım 1: Güvenlik Kodu Dosyamız : gk.php yapalım.
<?
 $sifre = rand(0,999999);
 if ($sifre) {
  session_start();
  $_SESSION["guv"] = $sifre;
}
?>
# Adım 2: Güvenlik Kodu çalışcak bölüme include edelim ve kullanalım.
<? include('gk.php'); ?>
<form action="kontrol.php" method="post">
Güvenlik Kodu  : <?php echo $_SESSION["guv"]; ?>
<input name="gkod" type="text">
<input type="submit">
</form>
# Adım 3:Kontrol Edilmesi : kontrol.php
Not: Bu dosyaya gk.php include edilmemesi lazım yoksa yeni kod atar!
$guvenlik = strip_tags($_POST['gkod']);
if (empty($_SESSION["guv"]) || !$_SESSION["guv"] || $guvenlik != $_SESSION["guv"]) { 
//hata verdir...
} else {
//işlem yaptır...
}
Önemli Not : Bu işlemlerin hepsini yapabilmen için SESSION başlatman lazım tüm kodlarının en üstünde.
Buda şu şekilde olur.
ob_start();
session_start();
Kolay gelsin umarım anlatım işine yarar.