"We are back" « oc.at

PHP: wert einer leeren variable - syntax?

syphiliz 28.10.2005 - 23:13 1155 18
Posts

syphiliz

blubb.banane
Avatar
Registered: Mar 2001
Location: AT
Posts: 1323
ich möchte beim aufrufen der datei "index.php" gerne die variable $cont übergeben. diese bestimmt dann den inhalt der angezeigt wird. wird kein wert für $cont übergeben, so möchte ich, dass $cont="home"...jetzt meine frage:

wie sieht $cont aus, wenn nix drinnen ist. zur erklärung:


index.php?cont=news -> $cont= news

index.php -> $cont= "nix"

meine index.php sollte dann etwa so aussehen:

<?php
if ($cont=?) {
$cont="home";
}

include ("$cont.php");
?>

was muss statt dem ? hin, damit, wenn index.php ohne parameter aufgerufen wird, $cont gleich home ist?

tia und sry für die blöde newbie frage
syph
Bearbeitet von syphiliz am 29.10.2005, 00:42

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25538
Code: PHP
if (!isset($cont))
   $cont = "home";
für deine frage gibts btw mehrere lösungen.. auch empty() wäre hier möglich.

syphiliz

blubb.banane
Avatar
Registered: Mar 2001
Location: AT
Posts: 1323
thx!

moidaschl

Vollzeit-Hackler
Avatar
Registered: Aug 2002
Location: 1210, ABK-D/L
Posts: 4029
alternativ kannst du natürlich auch emtpy() verwenden, hat hald ein bissl andere eigenschaften

"" -> leer
1 -> nicht leer
0 -> nicht leer

bei isset wäre 0 auch nicht gesetzt

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25538
nein.. bei NULL wäre isset() false.. find ich zwar nicht praktikabel, muss man aber hinnehmen :(

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
inwiefern ist das nicht praktikabel? Was möchtest du sonst mit isset() erreichen?

semteX

begehrt die rostschaufel
Avatar
Registered: Oct 2002
Location: Pre
Posts: 14715
Zitat von syphiliz
ich möchte beim aufrufen der datei "index.php" gerne die variable $cont übergeben. diese bestimmt dann den inhalt der angezeigt wird. wird kein wert für $cont übergeben, so möchte ich, dass $cont="home"...jetzt meine frage:

wie sieht $cont aus, wenn nix drinnen ist. zur erklärung:


index.php?cont=news -> $cont= news

index.php -> $cont= "nix"

meine index.php sollte dann etwa so aussehen:

<?php
if ($cont=?) {
$cont="home";
}

include ("$cont.php");
?>

was muss statt dem ? hin, damit, wenn index.php ohne parameter aufgerufen wird, $cont gleich home ist?

tia und sry für die blöde newbie frage
syph
ich möchte dich darauf hinweisen, dass du bei SO ner (nicht) überprüfung die tür ganz ganz weit auf machst...

oder was hindert mich das zu tun?:

http://www.blahr.at/index.php?cont=...h4x0r/h4xscript

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11343
PHP Include erlaubt HTTP? :eek:

jives

And the science gets done
Avatar
Registered: Sep 2001
Location: Baden
Posts: 3548
Bearbeitet von jives am 06.11.2005, 12:09

syphiliz

blubb.banane
Avatar
Registered: Mar 2001
Location: AT
Posts: 1323
Zitat von semteX
ich möchte dich darauf hinweisen, dass du bei SO ner (nicht) überprüfung die tür ganz ganz weit auf machst...

oder was hindert mich das zu tun?:

http://www.blahr.at/index.php?cont=...h4x0r/h4xscript

thx, gut zu wissen.

Code:
include ("./$cont.php");

löst aber das problem, oder?

semteX

begehrt die rostschaufel
Avatar
Registered: Oct 2002
Location: Pre
Posts: 14715
jo.. wesentlich besser. Noch gscheiter wär du würdest den ganzen Pfad angeben (schau dir mal die $_SERVER variablen an, da sollt was für dich dabei sein).. und anschließend noch ne überprüfung machn ob eh keine .. , . , /, .. vorkommen (verhindert, dass er lustig alles includet was bei dir irgendwo am webserver liegt...

Edit: beste idee: 1 post unter mir (nicht drauf gedacht)

Wennst natürlich ganz sicher gehen willst dann musst dein $cont durch nen check (mit regexp) schicken, ob der string keine /, kein www, kein ., kein .. etc enthält.... aber bei den regular expressions bin ich auf jedenfall der falsche Ansprechpartner :)



@that: php ist da wenig anspruchsvoll... das includet alles was irgendwie lesbar ist...
Bearbeitet von semteX am 06.11.2005, 12:47 (vervollständigung.)

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4303
damit kann er noch immer alles im dir bzw. in den subdirs includen. am besten ein array machen, indem die möglichen werte drinnen sind und dann überprüfen, ob es im array ist. oder gleich dann nur den jeweiligen index des arrays verwenden (?cont=3)

hth

MIK

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11343
Zitat von syphiliz
thx, gut zu wissen.

Code:
include ("./$cont.php");

löst aber das problem, oder?

Vorsicht ist geboten auch bei Vorkommen von "..", oder $cont == "index" :)

syphiliz

blubb.banane
Avatar
Registered: Mar 2001
Location: AT
Posts: 1323
thx @ all

wie wahrscheinlich aus der art der fragestellung ersichtlich wird, tümpel ich mit meinem php skills noch sehr am anfang rum. deshalb hab ich momentan noch mehr probleme mit dem synthax als mit der denke :)

sollte ich mal eine site öffentlich zugägnlich machen sind absolute pfadangaben wahscheinlich für den anfang die einfachste alternative...

edit:
Zitat
$cont == "index"

bevor ichs jetzt ausprobier :) :
geh ich richtig in der annahme, dass ich damit den server in eine fatale endlosschleife schieß?
Bearbeitet von syphiliz am 06.11.2005, 12:51

semteX

begehrt die rostschaufel
Avatar
Registered: Oct 2002
Location: Pre
Posts: 14715
Zitat von syphiliz
thx @ all

wie wahrscheinlich aus der art der fragestellung ersichtlich wird, tümpel ich mit meinem php skills noch sehr am anfang rum. deshalb hab ich momentan noch mehr probleme mit dem synthax als mit der denke :)

sollte ich mal eine site öffentlich zugägnlich machen sind absolute pfadangaben wahscheinlich für den anfang die einfachste alternative...
jo... variablen in "include" pfadangaben etc sind oft ein ziemliches risiko... darum entweder vermeiden oder wirklich ordentlich und komplett durchchecken. (da gabs ja vor ned allzu langer zeit nen wurm der fehlende valid - checks bei includes ausgenützt hat und php server geowned hat..)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz