Permalänk
Medlem

php skicka till sida

Jag har ett skript i php som kollar det som en användare matat in i ett formulär för registrering, som action så anropar filen sig själv, för att kunna visa vilka fält som matades in fel på samma sida. Hur gör man för att kunna skicka vidare till en sida som heter registrerad.php till exempel?
Finns det alltså något sätt att kunna i php scriptet som kollar det inmatade skicka vidare till en annan sida?
Hoppas jag var tydlig.

Visa signatur

Pentium 4 2.4 Ghz, Abit IS7-E, 500gb hd, Gainward Geforce FX5900 128 mb, 1024 mb ddr 400 mhz

Permalänk
Medlem

if (<validering>) header("Location: x.php"); else echo "<formulär>";

Permalänk
Medlem

Tack. Men jag fick det inte inte riktigt att fungera.. Den anropar ändå till sig själv.
Jag får det här felmeddelandet:
Warning: Cannot modify header information - headers already sent by (output started at /home/userA/a0421500/public_html/xxxxxx.se/xxxxxx/nykund.php:11) in /home/userA/a0421500/public_html/xxxxxx.se/xxxxxx/nykund.php on line 340

Koden ser ut så här:

if($valid == true) header("Location: registrerad.php");

Visa signatur

Pentium 4 2.4 Ghz, Abit IS7-E, 500gb hd, Gainward Geforce FX5900 128 mb, 1024 mb ddr 400 mhz

Permalänk
Medlem

jag har samma problem, hoppas också på en lösning, jag har en känsla att det handlar om att man har flera headers i samma fil, men det borde inte göra nån skilnad, om dom ligger i olika if-satser eller t ex i samma if-sats, men på olika sida om else, om ni fattar alltså är även jag tacksam för hjälp

mvh Fredrik

Permalänk
Medlem

Koden som skickar headers måste vara överst i dokumentet

Permalänk
Medlem

WOT, ok, det var helt nytt för mig, men jag tackar ödmjukast för den infon, de e ganska bra att veta

mvh Ferdrik

Permalänk
Medlem

Den måste inte vara överst i dokumentet men du får inte ha skickat någon text till klienten innan. En fullösning är att använda output buffering...

Permalänk
Medlem

Jag får det inte att funka alls, var jag än lägger den kodsnutten så blir det samma felkod.. Finns det inget annat sätt att skicka vidare till ett annat script om allt är okej i valideringen? Det är ju också viktigt att det som är inskrivet ska kunna skickas vidare eftersom det ska läggas in i en databas. Måste man kanske skicka vidare till ett annat script och där ha kontrollen av det inmatade innan det läggs in i databasen? Helst vill jag inte ha det så eftersom texten som visar vad som var fel i det inmatade ska vara på samma sida som inmatningsfälten så att man kan mata in på nytt med den texten framför sig, man ska inte behöva sitta och gå fram och tillbaka..

Visa signatur

Pentium 4 2.4 Ghz, Abit IS7-E, 500gb hd, Gainward Geforce FX5900 128 mb, 1024 mb ddr 400 mhz

Permalänk
Medlem

Problemet med header()-anrop är som sagt att inget får ha skickats till klienten innan ditt header-anrop.

Fel:

<html> <head> <title>Apekatt</title></head> <body> <?php if ($carson == 'straight') { header('Location: wrong.php'); } ?> </body> </html>

// Det här är egentligen en radmatning, men jag förösker vara // lite tydligare genom att lägga en stor blaffa till kommentar här istället. <?php if ($carson == 'straight') { header('Location: wrong.php'); } ?><html> <head> <title>Apekatt</title></head> <body> Boll, tamejfan! </body> </html>

<!-- En HTML-kommentar kan ibland kännas ofarlig, ibland är den inte det --> <?php if ($carson == 'straight') { header('Location: wrong.php'); } ?><html> <head> <title>Apekatt</title></head> <body> Boll, tamejfan! </body> </html>

Rätt:

<?php if ($carson == 'straight') { header('Location: wrong.php'); } ?><html> <head> <title>Apekatt</title></head> <body> Boll, tamejfan! </body> </html>

Visa signatur

Brass knuckles and a 2x4

Permalänk
Medlem

OK, tror jag börjar fatta, men om man tex har en kod som ser ut som följande:

<?php if ($_GET['form'] == halleluja) { header ('kristen.php'); } if ($_POST['farg'] == 'gron') { header ('gron.php'); } elseif ($_POST['farg'] == 'rod') { header ('rod.php'); } ?>

Är det OK???

mvh Fredrik

Permalänk
Medlem

Ja, så länge det absolut första i filen är mindre än-tecknet i "<?php". Inga radmatnignar, inga mellanslag och se till att inte ha några anrop till echo, print, printf, osv innan du kör ett header-anrop.

Visa signatur

Brass knuckles and a 2x4

Permalänk
Medlem

Ja nu fick jag äntligen ordning på det, tack så mycket för hjälpen!

Visa signatur

Pentium 4 2.4 Ghz, Abit IS7-E, 500gb hd, Gainward Geforce FX5900 128 mb, 1024 mb ddr 400 mhz

Permalänk
Medlem

ok, det börjar ju likna något nu men nu är det så att man antagligen också har litte error-medelanden (t ex: lösenordet du skrev in är ej giltligt...). nu har jag sett någonstans om hur man kunde spara sånna här felmdelanden på nått vänster, och att man senare i koden kunde anropa dom och printa dom. någon som vet något mer, för detta måste man ju ha för att en sida ska fungera.

mvh Fredrik

Permalänk
Medlem

säkersida.php:

if (du_är_inte_inloggad) header('Location: loggain.php?message=403');

loggain.php:

if ($_GET['message'] == 403) echo 'Du är inte inloggad, det måste du vara, <a href="#">klicka här</a> för att skapa ett login' # ( ... ) Och sedan resten av sidan här som vanligt

Du kan ha siffor för att du kanske inte vill att användaren ska kunna skriva in egen tex i adressfeltet, vilket inte spelar så jätte stor roll, eller så kan du spara direkt i get-variablen.

Permalänk
Medlem

efter header() ska det alltid finnas en exit; Detta pga att om webbläsaren inte tar emot headern så ska sidan sluta laddas.

Permalänk
Medlem

Skicka headern Refresh istället, många brandväggar som filtrerar bort Location, dock brukar de låta Refresh vara kvar.

<?php header('Refresh: 0; url=sida.php'); ?>

Permalänk
Medlem

Om en brandvägg blockar en header med location-ändring så är inte den brandväggen att rekommendera. Visst om den skickar iväg till ett annat domän är det förståligt, men inte om det ligger på samma domän, då är det bara brandväggen som är fel-konfigruerad, eller har jag helt fel :/ ?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av CIC
Om en brandvägg blockar en header med location-ändring så är inte den brandväggen att rekommendera. Visst om den skickar iväg till ett annat domän är det förståligt, men inte om det ligger på samma domän, då är det bara brandväggen som är fel-konfigruerad, eller har jag helt fel :/ ?

Håller med dig, men finns väldigt många användare som inte är så duktiga på datorer som sitter där med sitt gamla Norton Internet Security 2003 (som blockerar en hel del headers som default) och för dom "ska det bara fungera".
Använder man headern Refresh kommer det fungera för många fler besökare.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av gagg
Håller med dig, men finns väldigt många användare som inte är så duktiga på datorer som sitter där med sitt gamla Norton Internet Security 2003 (som blockerar en hel del headers som default) och för dom "ska det bara fungera".
Använder man headern Refresh kommer det fungera för många fler besökare.

öhhhhh, det här e inte JS eller nåt sånt, det här e php, det är serverbaserat, klient-datorn får alldrig se susen av php-koden, det närmaste den möjligtvis kommer är kanske att den får se x.php i adressfältet, så att brandväggen kan stoppa en header är nog skitsnack....

mvh Fredrik

Permalänk
Medlem

Nu kan jag ju inte http-protokollet allt för bra.. Men ialfall, webläsaren får ju ett svar från webservern när den ska hämta sidan t.ex. säkersida.php, nämligen location-header ( eller vad det nu får för namn ) saken som säger att nu ska du gå hitochdit ( loggain.php ). Och så ska browsern följa det, om det nu inte finns någon brandvägg som stoppar det eller tar bort eller vad som nu händer med den delen av headern.

Permalänk
Medlem

wot, e de bara jag som inte hänger med??? menar du så här typ:
1: person fyller i form och klickar submit
2: servern får recest på filen checka.php
3: php läser igenom filen å ser att det e fel anv-namn å lösen
4: php ser en header --> skickar filen login.php
5: servern skickar tillbaks login.php, fast som ren html

och menar du då att brandväggen skulle kolla att man klickat på en länk som går till check.php, men att man får login.php tillbaka, och att den därmed spärrar??? fattar noll

mvh Fredrik

Permalänk
Medlem

Det stämmer som CIC säger, får webbläsaren ett anrop från servern att "nu byter vi sida", och brandväggen är felaktigt konfigurerad så kan den faktiskt stoppa redirects.

Det är ju trots allt webbläsaren som redirectas, inte på servern. Spelar ingen roll att PHP-kod körs på servern.

Visa signatur

What is your spaghetti policy around here?

Permalänk
Medlem

hmm, ok, alldrig hört om det fenomenet byt brandvägg säger jag bara

mvh Fredrik

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av kd35a
hmm, ok, alldrig hört om det fenomenet byt brandvägg säger jag bara

mvh Fredrik

Vilket du verkligen borde läsa på om du ska syssla med webprogrammering. Ju mer du förstår om HTTP, ju mindre problem kommer du få med kakor, vidareskickningar, hantering av brutna länkar och sånt. Jag personligen tycker att det är en ganska viktig grej att ha koll på, eller i alla fall tillräckligt för att veta vad man ska googla på, vilket har räckt för mig.

Visa signatur

Brass knuckles and a 2x4

Permalänk
Medlem

jo, det verkar ju så som att man får läsa lite, skulle man möjligtvis kunna få lite länk-tips på läsning??? vet inte riktigt var jag ska börja googla

mvh Fredrik