webForumDet fria alternativet

PHP Redirect

5 svar · 1 118 visningar · startad av SoulGod

SoulGodMedlem sedan aug. 20051 395 inlägg
#1

Jag försöker få min PHP sida att skicka besökaren vidare efter att ha fyllt i ett forum, men får det ej att fungera.

Det finns variablar som handlar om säkerhet ( hoho1 , hoho2 )
dessa är bytta namn på , för att inte avslöja hur det är byggt..
Koden ser ut såhär:

<?PHP 	
				$hoho1 = mysql_real_escape_string($_POST['hoho1']);
				$hoho2 = mysql_real_escape_string($_POST['hoho2']);
				if ($hoho2 == $hoho1) {
				$namn 	= mysql_real_escape_string($_POST['namn']);
				$email 	= mysql_real_escape_string($_POST['email']);
				$url	= mysql_real_escape_string($_POST['url']);
				$msg = mysql_real_escape_string($_POST['message']);
				$ort = mysql_real_escape_string($_POST['ort']);			
				$date = date("Y-m-d H:i");
				$ip=$_SERVER['REMOTE_ADDR'];

		$laggTill = "INSERT INTO gb (namn, mail, url, msg, ort, datetime, ip) VALUES ('".$namn."','".$mail."','".$url."','".$msg."','".$ort."','".$date."','".$ip."')";
		
		mysql_query($laggTill) or die("Det gick inte att lägga till information!");	
		header('Location: gastbok.php');
//		echo "<a href='gastbok.php'>Tack för ditt inlägg. Klicka här för att komma tillbaka</a>";
		} else {
		echo "<h3>Något blev fel, var god försök igen</h3>"; }
		 ?>

Det är alltså "Header" som inte fungerar .. har försökt att använda en javascript-version av en redirect också, men funkar inte heller..

Formuläret funkar utmärkt annars, och allt sparas i databasen helt korrekt.

GunnarDMedlem sedan juni 20014 250 inlägg
#2

Man får inte skriva ut någoting innan man kör header kommandot, inte ens ett litet mellanslag :)

Gör du det?

Står det något i error_loggen?

Måste du göra det så kan man köra med buffrad output: http://php.net/manual/en/book.outcontrol.php

SoulGodMedlem sedan aug. 20051 395 inlägg
#3

Men hur ska jag kunna skriva den först ( utan mellanslag eller något ) , när den ska ligga så långt ner i koden?

Och jag hittar inga fel i error loggen heller :(

MickeA.comMedlem sedan feb. 20034 528 inlägg
#4

SoulGod skrev:

Men hur ska jag kunna skriva den först ( utan mellanslag eller något ) , när den ska ligga så långt ner i koden?

Då får du tänka om och göra om, *måste* header() verkligen ligga där det ligger nu.

Du får tänka lite "tvärtom" kanske och hitta en alternativ lösning. En lösning är att bygga allt kring någon typ av mallsystem, så att man separerar php-kod och html-kod helt och hållet.

På så vi fastnar man inte på t.ex. sådana här saker, eftersom html-koden alltid skrivs ut sist av allt.

nitro2k01Medlem sedan aug. 20037 630 inlägg
#5

Prova att lägga till följande högst upp i PHP-filen.

 error_reporting(E_ALL);
 ini_set("display_errors", 1);

Det gör att alla felmeddelanden från PHP skrivs ut, inkl. varningar. Förhoppningsvis får du någon letråd på det viset.

GunnarDMedlem sedan juni 20014 250 inlägg
#6

SoulGod skrev:

Men hur ska jag kunna skriva den först ( utan mellanslag eller något ) , när den ska ligga så långt ner i koden?

Och jag hittar inga fel i error loggen heller :(

När jag menar skriva ut så menar jag att du inte får skriva ut någon html kod. PHP kod är helt ok så länge du inte kör någon echo, print ... som genererar html kod.

129 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
127 ms — hämta tråd, inlägg och bilagor (db)