Den koden verkar fungera.. med lite snabb modifikation..
Dock, jag skulle byta ut
Kod:
if ($_POST['process'] == 1) {
mot
Kod:
if (isset($_POST['process'])) {
och
Kod:
$urlname = urlencode($$_POST['username']);
mot
Kod:
$urlname = urlencode($_POST['username']);
AHA!
Kom på vad som kan strula...
I början av din kod har du ett mellanslag innan <? .. har du det i filen också?
Om följande villkor är uppfyllda, så kan det kanske se ut som att sidan bara visas igen:
1. Du skickar någon text innan PHP-koden (ett mellanslag/en radmatning i början av filen t.ex.)
2. Du har inte PHP inställt på att "buffra" det den skickar
3. PHP är inställt på att inte visa några felmeddelanden
Du använder header-location för att byta sida.. den gör då det genom att skicka en header till webbläsaren som säger att den skall hämta en annan fil (thankyou)... om sidan redan skickat någon text (mellanslag) så kan inte headers ändras (om inte PHP buffrar innan den skickar), så.. då visas ett felmeddelande.. ("Warning: Cannot modify header information - headers already sent").
Sedan fortsätter koden, så den skickar den vanliga resultatsidan också..
Om din PHP inte visar felmeddelanden kan det alltså se ut som att den bara visar sidan igen..
Testa ändra till detta:
Kod:
header(
"location: thankyou.php?&username=$urlname");
exit;
Får du då en "tom" sida istället? Isåfall är det förmodligen problem med headers/redan skickad data..
Testa att lägga till följande kommando i början av koden:
Kod:
error_reporting(E_ALL);
Trött nu, så.. inlägget blev rätt rörigt.. oh well.