PHP, header() finns det nåt liknande?

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Okt 2004

PHP, header() finns det nåt liknande?

Har ett litet php-problem här igen.
Jag har en liten kodsnutt som ser ut så här:

if(mssql_num_rows($res)==1)
{
session_start();
$_SESSION['logged_in'] = true;
header("Location: blaha.php");
}
else
{
echo "thou hath failed";
}

Problemet är, att den inte alls ligger i längst upp i min php-fil, vilket är kravet för "header()-funktionen". Så det jag undrar är helt enkelt, finns det nån annan liknande funktion som man kan ha var man vill? Det jag vill åstadkomma är alltså att man ska flyttas från min index.php till blaha.php ifall man har lyckats logga in.

Nöken - A Pet Dragon for Bold Princesses

Trädvy Permalänk
Medlem
Registrerad
Okt 2003

varför kan du inte lägga det högst upp i filen då? tror header ska ligga innan något, men minns inte vad, var flera år sen jg höll på med php

Laptop - MacBook 2.0GHz, 4GB ram, Intel GMA 950
Stationär - i5 3570k @ 4ghz, 8gb ram, 120gb ssd + 2tb hdd, Windows 8 64bit, fractal design arc
Citera så jag hittar tillbaka :)

Trädvy Permalänk
Medlem
Registrerad
Mar 2007

header("Location: blaha.php");

Kommer fungera där den ligger nu. Jag har liknade filer där jag använder header(Location) i if-satser och det fungerar utmärkt

Trädvy Permalänk
Medlem
Plats
Rimbo
Registrerad
Jun 2006

Du ska inte ha något annat som skriver något i källkoden till sidan som visas bara, annars kan man ju alltid köra @header och hoppas på det bästa

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Feb 2003

Användning av header() ställer krav på att du inte skriver något till output innan du göra detta anrop.

Citat:

Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP.

Det finns dock en annan lösning, användning av ob_start(). Åsikterna för om man bör eller inte bör använda ob_start() går dock isär.

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Feb 2005

Vad är egentligen det bästa sättet att kolla ett värde och beroende av värdet gå till en viss sida? Jag använder själv ofta header() i if-satser och ibland JavaScript om sidan ska hållas kvar om värdet tar lite längre tid att sättas.

i7 920 | 12GB DDR3 | GTX 480 | GA-X58A-UD7 | 160GB SSD X25-M G2 | 1TB F3 HD103SJ | W7 64-bit | Mac Mini
Webb: bluekitestudios.com

Trädvy Permalänk
Medlem
Registrerad
Jun 2006

Jag brukar också använda header, men först:
1. finns det ett värde?
2. är värdet av rätt typ?
3. har det rätt värde?
4. och sist header

citera!

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Okt 2004

@Garret: Tack, det var ob_start() jag sökte efter. Bryr mig inte så starkt om det rekommenderas eller inte Det ska inte va nån supersida. Dock märkte jag att den klagade lika mkt på att session_start() inte låg i headern. Så jag tror att jag får fixa om sidan så att allt bli en enda fet php-fläck
@civ1: Nej, det kommer inte att funka eftersom den lilla kodsnutten låg längst ner i php-filen

Nöken - A Pet Dragon for Bold Princesses

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Nov 2003

session-start skickar väl en header vilket gör att den inte kan ligga före? Om det inte är en supersida kan du väl bara skicka ut en meta-redirect om användaren ska dirigeras om?

Mvh Stefan -
Hamburgare är kärlek!
Receptologi är livet!

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Okt 2004

Jo, jag antar att det är en header, annars borde det väl inte klagat Men, vad är en meta-redirect och hur använder man det..? Länk till tutorial? Eller förklaring här å nu funkar ju också

Nöken - A Pet Dragon for Bold Princesses

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Nov 2003

Google är din vän

http://webdesign.about.com/od/metataglibraries/a/aa080300a.ht...

Du lägger metatagen i head-elementet på sidan:

Redirecting to a New Page with the Meta Refresh Tag

To redirect to a new page, the syntax is nearly the same:

<meta http-equiv="refresh" content="2;url=http://webdesign.about.com">

content="2;url=http://webdesign.about.com/" - The number is the time, in seconds, until the page should be redirected. Then, separated by a semi-colon (;) is the URL that should be loaded.

Mvh Stefan -
Hamburgare är kärlek!
Receptologi är livet!

Trädvy Permalänk
Medlem
Plats
Falun
Registrerad
Dec 2003
Citat:

Ursprungligen inskrivet av Guru Meditation
Google är din vän

http://webdesign.about.com/od/metataglibraries/a/aa080300a.ht...

Du lägger metatagen i head-elementet på sidan:

Redirecting to a New Page with the Meta Refresh Tag

To redirect to a new page, the syntax is nearly the same:

<meta http-equiv="refresh" content="2;url=http://webdesign.about.com">

content="2;url=http://webdesign.about.com/" - The number is the time, in seconds, until the page should be redirected. Then, separated by a semi-colon (;) is the URL that should be loaded.

Japp, bästa lösningen enligt mig. Nackdelen är att det inte valideras mot xhtml (då man skriver ut det i body) så se till att det är 0 sekunders fördröjning innan redirection så inte användare börjar klaga på validering.

ηλί, ηλί, λαμά σαβαχθανί!?

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jan 2007
Citat:

Ursprungligen inskrivet av Leedow
användare börjar klaga på validering.

Användare bryr sig inte om validering – det är i princip bara andra webbutvecklare som tycker om att sätta dit folk som klagar på det.
Sen bör man ju givetvis skriva validerande kod, men valideringen är ett verktyg, ingen kvalitetskontroll.

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Okt 2004

Google och Guru Meditation är mina vänner Tack! Men jag har fortf. lite problem.
Session_start() klagar fortfarande på att den inte är i headern, och jag börjar fundera, vad räknas som headern? Den liggar nämligen i det absolut första php-blocket (och det första blocket i hela filen). Det enda jag gör innan är att koppla upp mig till en databas för att hämta lite info.
Och har ni nåt förslag på nåt som kan va bättre att använda än session_start()?
Vill om möjligt gärna ha kvar login-kontrollen.

Nöken - A Pet Dragon for Bold Princesses

Trädvy Permalänk
Medlem
Plats
Falun
Registrerad
Dec 2003
Citat:

Ursprungligen inskrivet av You
Användare bryr sig inte om validering – det är i princip bara andra webbutvecklare som tycker om att sätta dit folk som klagar på det.
Sen bör man ju givetvis skriva validerande kod, men valideringen är ett verktyg, ingen kvalitetskontroll.

Stämmer bra det, jag generaliserade lite för hårt.

ηλί, ηλί, λαμά σαβαχθανί!?

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Nov 2003

Du skriver inte ut något mellanslag eller så. Ligger <?-taggen absolut först i textfilen? Använder du utf-8 utan BOM eller med BOM? Det sistnämnda brukar ge skräptecken i början av filen.

Mvh Stefan -
Hamburgare är kärlek!
Receptologi är livet!

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Okt 2004

<?php
$userid = intval($_GET['UserID']);
$pincode = intval($_GET['Pincode']);

if(!empty($userid))
{

$conn = mssql_connect(FUNGERANDE SÖKVÄG)
or die("Could not connect !");
echo "<p>Connected successfully</p>";

$query = "SELECT * FROM PROJ_Account_Holder WHERE UserID = '{$userid}' AND PinCode = '{$pincode}'";

$res = mssql_query($query)
or die("Could not query database");

mssql_close($conn);

if(mssql_num_rows($res)==1)
{
session_start();
$_SESSION['logged_in'] = true;
header("Location: blaha.php");
}
else
{
echo "Thou hath failed thyne login good sir.";
}

}
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
<p>
UserID:
<input type="int" name="UserID"/>
<br />
Pincode:
<input type="password" name="Pincode"/>
<br />
<button type="submit" name="Login">Login</button>
</p>

</form>

Så ser min kod ut för tillfället, har hoppat fram å tillbaka mellan massa olika.

EDIT: Och jag vet förresten inte vad utf-8 med eller utan BOM är Sitter å skriver i SciTe om det nu är nån info.

Nöken - A Pet Dragon for Bold Princesses

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Nov 2003

UTF-8 är encodingen på textfilen som du jobbar med. Kör man encoding UTF-8 Med BOM (Byte Order Mark) kan man få lite lustiga skräptecken som hamnar överst i filen, bra då att byta till UTF-8 utan BOM. Brukar finnas något fint val i någon meny nånstans.

Mvh Stefan -
Hamburgare är kärlek!
Receptologi är livet!

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Okt 2004

Hittade UTF:en nu. Standard var tydligen "Code Page Property", men det gjorde ingen skillnad när jag bytte till UTF-8 (utan BOM). Men som sagt, kanske finns nåt enklare sätt att lösa det..?
Det jag vill ha är alltså:
a) Formulär där man fyller i ID och pinkod.
b) Connection till databas där det kontrolleras om den kombinationen av ID å kod finns.
c) Redirect till en ny sida
d) Nånting som "$_SESSION['logged_in']" som kollar om man loggat in ordentligt.

Är tacksam för alla förslag!

Nöken - A Pet Dragon for Bold Princesses

Trädvy Permalänk
Bosmang 🤷
Emil Åkered
Plats
Stockholm
Registrerad
Jan 2003

session_start ska ligga allra, allra överst om jag minns rätt.. Alltså över din $userid-tilldelning.

För övrigt anser jag att Karthago bör förstöras.
▪ Nöje #1 -> i5-8400 - Z370M-ITX/ac - GTX 1070 - 16 GB DDR4
▪ Nöje #2 -> R5 2600X - MSI X370 - GTX 1070 Ti - 16 GB DDR4
▪ Mobilt -> Surface Pro 4 - m3-6Y30 - 4 GB DDR3
▪ Konsol -> Playstation 4 Pro - Playstation Vita

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Okt 2004

<?php
session_start();
$userid = intval($_GET['UserID']);
$pincode = intval($_GET['Pincode']);

(...)

if(mssql_num_rows($res)==1)
{
//session_start();
$_SESSION['logged_in'] = true;
ob_start("Location: blaha.php");
}

(...)

Har nu prövat att ändra till det här. session_start() klagar den inte på längre, men header_start() var ju fortf. ett problem, så jag prövade att byta till ob_start() som tydligen ska funka. Men då händer istället ingenting. Why oh why..?

Nöken - A Pet Dragon for Bold Princesses

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Nov 2003

Du skulle ju hoppa över at sätta location i en header och skriv ut en meta redirect i head-element istället kom vi väl överens om?

Mvh Stefan -
Hamburgare är kärlek!
Receptologi är livet!

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Okt 2004

Haha, just ja, glömde, men då kom ju ett nytt problem istället. Jag vill ju ha det i en if-sats, men if-satsen är ju php och meta-taggen verkar ju va html. Eller den funkar inte i php:et iaf.
Jag kan ju inte heller bara avbryta php:et så här:

<?php
blablablabl

if(balsfasfa)
{
?>
META REDIRECT
<?php
}
abtaelta
?>

Då körs ju redirecten hela tiden oberoende av min if-sats.

Nöken - A Pet Dragon for Bold Princesses

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Nov 2003

Jodå, du kan avbryta den precis så. PHP håller sig till if-satsen ändå. En annan variant är att köra:

<?php if(blabla) { echo '<META BLABLA>'; }

Mvh Stefan -
Hamburgare är kärlek!
Receptologi är livet!

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Feb 2005
Citat:

Ursprungligen inskrivet av PigPillow
Haha, just ja, glömde, men då kom ju ett nytt problem istället. Jag vill ju ha det i en if-sats, men if-satsen är ju php och meta-taggen verkar ju va html. Eller den funkar inte i php:et iaf.
Jag kan ju inte heller bara avbryta php:et så här:

<?php
blablablabl

if(balsfasfa)
{
?>
META REDIRECT
<?php
}
abtaelta
?>

Då körs ju redirecten hela tiden oberoende av min if-sats.

Kör: echo 'din metadata här';

i7 920 | 12GB DDR3 | GTX 480 | GA-X58A-UD7 | 160GB SSD X25-M G2 | 1TB F3 HD103SJ | W7 64-bit | Mac Mini
Webb: bluekitestudios.com

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Okt 2004

Haha, ok, det här är ju nästan pinsamt. Jag som tyckte att jag hade prövat just det. Ajja, hade väl nåt annat fel som spökade samtidigt då antar jag.

Tack så jättemkt för hjälpen! Jag lär väl återkomma om jag fastnar med nåt nytt mystiskt problem

Nöken - A Pet Dragon for Bold Princesses

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Feb 2005
Citat:

Ursprungligen inskrivet av PigPillow
Haha, ok, det här är ju nästan pinsamt. Jag som tyckte att jag hade prövat just det. Ajja, hade väl nåt annat fel som spökade samtidigt då antar jag.

Tack så jättemkt för hjälpen! Jag lär väl återkomma om jag fastnar med nåt nytt mystiskt problem

Pinsamt är det inte på långa vägar, är ju en hel del att hålla koll på med php -> sessioner -> html.

i7 920 | 12GB DDR3 | GTX 480 | GA-X58A-UD7 | 160GB SSD X25-M G2 | 1TB F3 HD103SJ | W7 64-bit | Mac Mini
Webb: bluekitestudios.com