[php] Waarom is $GLOBALS[var] niet veilig?

Pagina: 1
Acties:

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Hey,

eerder maakte ik wel 's functies waarin ik een aantal variabelen globaal naar buiten bracht dmv $GLOBALS[varnaam], op die manier kon ik makkelijk meerdere vars binnen een functie aanmaken en ergens gebruiken door gewoon die functie aan te roepen met functie();.
Ik heb toen ook 's gelezen dat het niet echt veilig was, maar ik weet nog steeds niet waarom nou eigenlijk...zit daar nog vaak aan te denken, kan iemand me dat uitleggen?

Verwijderd

Bedoel je zoiets als:
PHP:
1
<?functie arraymaken($variabele1, $variabele2){$tmp[0] = $variabele1 + $variabele2;$tmp[1] = $variabele1 - $variabele2;$tmp[2] = $variabele1 * $variabele2;return $tmp;}?>

Dat is volgens mij gewoon veilig namelijk.

  • Grum
  • Registratie: Juni 2001
  • Niet online
daniel_hoenderdos: Lees jij uberhaubt de post wel waar je op replied ??

Hij heeftet over
1/ globals
2/ functies die zonder args worden aangeroepen

TangLeFuzZ: Het is niet zo zeer onveilig, maar alleen ranzig. Je kan niet zien wat een functie wel of niet nodig heeft om te werken. Dit kan je wel zien als jij gewoon een argumentlist hebt.

Der zou misschien een kleine onveligheid in kunnen zitten en dat is met 'register_globals'/'track_vars', dat je van de GET/POST/COOKIE een variabele kan overschrijven welke eigelijk niet overschreven zou mogen worden, maar in de praktijk heb je hier alleen maar last van in enorm slechte code :).

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Ok Grum!

als voorbeeld van wat ik precies bedoelde:
PHP:
1
<?functie blaat();  $GLOBALS[var1] = "boe";  $GLOBALS[var2 = "arf";}blaat();echo "$var1 - $var2";?>

  • Grum
  • Registratie: Juni 2001
  • Niet online
zo-iets mag je NOOIT doen op 1 uitzondering na .. dat is in classes .. maar dan assign je het niet aan $GLOBALS maar aan $this

btw je mist een ] en 4x ' of "

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 20:51
Op woensdag 06 maart 2002 14:00 schreef Grum het volgende:
Der zou misschien een kleine onveligheid in kunnen zitten en dat is met 'register_globals'/'track_vars', dat je van de GET/POST/COOKIE een variabele kan overschrijven welke eigelijk niet overschreven zou mogen worden, maar in de praktijk heb je hier alleen maar last van in enorm slechte code :).
Zoals je zelf al aangeeft is dit een voorbeeld van enorm slechte code. Het is niet voor niets dat sinds een de nieuwste php-versies gebruik kan worden gemaakt van $_session, $_cookie, $_get en $_post. Op deze manier kun je sessiedata nooit in de knoop raken met bijvoorbeeld de gesubmitte data van je form.

Als iedereen gewoon vasthoudt aan deze nieuwe variabelen (als dat tenminste door de webserver waarop de site moet gaan draaien wordt ondersteund) zou alles een stuk netter worden. Trouwens, het werkt met OO based programming nog een stuk simpeler ook, dwz de variabelen kunnen in 1 (of hooguit 4) keer worden meegegeven aan een bepaalde functie, dus zo omzeil je het probleem van de topicstarter ook. :)
code:
1
$output = functienaam ($_post, $_session, $_cookie);

  • Grum
  • Registratie: Juni 2001
  • Niet online
Ik ben persoonlijk tegenwoordig meer fan van:
code:
1
2
3
4
5
6
function doRuig (&$outData, $inVar, $inVar2)
{
   return $outCode;
}

$outCode = doRuig ($outData, $inVar, $inVar2);

en < 0 == error rest is ok :)

  • Cipri
  • Registratie: Januari 2001
  • Laatst online: 29-07-2024

Cipri

Of niet natuurlijk...

Op woensdag 06 maart 2002 14:41 schreef ddc het volgende:

Trouwens, het werkt met OO based programming nog een stuk simpeler ook, dwz de variabelen kunnen in 1 (of hooguit 4) keer worden meegegeven aan een bepaalde functie, dus zo omzeil je het probleem van de topicstarter ook. :)
code:
1
$output = functienaam ($_post, $_session, $_cookie);
Even goed de Changelog lezen. $_POST, $_GET, etc zijn al global variables. Die hoef je dus ook niet mee te geven.
Zie de ChangeLog op php.net

Edit: URL.

-=[ Murlocs Ate My Boots]=- Sylvanas Alliance - EU - Orosei lvl 100 Paladin


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op woensdag 06 maart 2002 14:50 schreef Cipri het volgende:

[..]

Even goed de Changelog lezen. $_POST, $_GET, etc zijn al global variables. Die hoef je dus ook niet mee te geven.
Zie de ChangeLog op php.net

Edit: URL.
Alleen zijn veel hosters nog niet over op 4.1+ en gebruiken nog 4.x of zelfs nog 3.x

zelf gebruik ik altijd een functie om een get of post variable uit te lezen
zoiets:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function getPost($index='')
{
if (isset($_POST))
  {
    $__POST=$_POST;
  } 
else
  {
    global $HTTP_POST_VARS;
    $__POST=$HTTP_POST_VARS;
  }
if ($index=='')
    return ($__POST);
if (isset($__POST[$index]))
    return ($__POST[$index]);
else
    return NULL;
} // END getPost

Programmer - an organism that turns coffee into software.


  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Op woensdag 06 maart 2002 14:40 schreef Grum het volgende:
zo-iets mag je NOOIT doen op 1 uitzondering na .. dat is in classes .. maar dan assign je het niet aan $GLOBALS maar aan $this
Ok, daar was ik al een hele tijd achter ja, maar kun je dan ook precies uitleggen waarom niet?
Dat was m'n hoofdvraag namelijk :)

Btw, $_session, $_cookie, $_get en $_post hebben op zich weinig te maken met m'n eigen variabelen die ik binnen m'n functie globaal maak naar buiten toe...

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op woensdag 06 maart 2002 16:31 schreef TangLeFuzZ het volgende:

[..]

Ok, daar was ik al een hele tijd achter ja, maar kun je dan ook precies uitleggen waarom niet?
Dat was m'n hoofdvraag namelijk :)

Btw, $_session, $_cookie, $_get en $_post hebben op zich weinig te maken met m'n eigen variabelen die ik binnen m'n functie globaal maak naar buiten toe...
bad practice.

Maakt spaghetti code.Dat is de enige reden die ik kan verzinnen.

Net zoals programmeren met error_reporting uit.

Programmer - an organism that turns coffee into software.


  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Op woensdag 06 maart 2002 16:35 schreef LuCarD het volgende:

[..]

bad practice.

Maakt spaghetti code.Dat is de enige reden die ik kan verzinnen.

Net zoals programmeren met error_reporting uit.
Hmm ok.
Even snel offtopic: waar heb jij je error_reporting op staan dan, op 63?

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op woensdag 06 maart 2002 16:39 schreef TangLeFuzZ het volgende:

[..]

Hmm ok.
Even snel offtopic: waar heb jij je error_reporting op staan dan, op 63?
Ben nu bezig aan een INTRANET en mijn computer zijn ip is: 10.104.2.128

Ik zie alle foutjes, gebruikers alleen de parse errors en sommige fatal errors (?).
code:
1
2
3
4
5
6
7
//
// STAAT IN EEN DEFAULT INCLUDE
//
if ($REMOTE_ADDR == "10.104.2.128")
    error_reporting(E_ALL);
else
    error_reporting(0);

Programmer - an organism that turns coffee into software.


  • Grum
  • Registratie: Juni 2001
  • Niet online
Op woensdag 06 maart 2002 16:39 schreef TangLeFuzZ het volgende:
Even snel offtopic: waar heb jij je error_reporting op staan dan, op 63?
zie sig

[edit]

Lucard: dus op je productie pc zet jij error_reporting(E_ALL); niet aan ? .. das zwak :+ dan ben je dus niet zeker van je zaak dat het goed zit :+

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op woensdag 06 maart 2002 16:54 schreef Grum het volgende:

[..]

zie sig

[edit]

Lucard: dus op je productie pc zet jij error_reporting(E_ALL); niet aan ? .. das zwak :+ dan ben je dus niet zeker van je zaak dat het goed zit :+
Ik ben ook maar mens....

En bugs worden gemaakt terwijl je wacht. :o

Programmer - an organism that turns coffee into software.


  • Michael
  • Registratie: Maart 2000
  • Laatst online: 20-07 17:52
Op woensdag 06 maart 2002 16:54 schreef Grum het volgende:

[..]

zie sig

[edit]

Lucard: dus op je productie pc zet jij error_reporting(E_ALL); niet aan ? .. das zwak :+ dan ben je dus niet zeker van je zaak dat het goed zit :+
Zwak grum :-)

Beste is IMO om in te stellen in bijvoorbeeld een .htaccess dat errors naar een file worden gelogged, en dat je deze elke minuut laat mailen oid. (op een productie server dan)

De kans dat bezoekers errors krijgen (al is die kans 1%) is lame.

  • Grum
  • Registratie: Juni 2001
  • Niet online
PHP 4.1.X laat by default je errors niet op je scherm zien (wat wel raar is als je dat niet weet :P)

Maar de gebruikers zouden sowieso geen errors moeten kunnen zien .. dus die kans is al 0% :)

en anders ... LEER CODEN! (of testen voor je et online zet >:) )

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op woensdag 06 maart 2002 17:13 schreef Michael het volgende:

[..]

Zwak grum :-)

Beste is IMO om in te stellen in bijvoorbeeld een .htaccess dat errors naar een file worden gelogged, en dat je deze elke minuut laat mailen oid. (op een productie server dan)

De kans dat bezoekers errors krijgen (al is die kans 1%) is lame.
Dat doe ik dus op functie niveau. Mijn functie testen en loggen alles wat er mogelijk fout kan gaan in een database... :) Die is nu ook best wel groot aan het worden. :(
Ik mis nog een hoop plaatjes...
Op woensdag 06 maart 2002 17:17 schreef Grum het volgende:
PHP 4.1.X laat by default je errors niet op je scherm zien (wat wel raar is als je dat niet weet :P)

Maar de gebruikers zouden sowieso geen errors moeten kunnen zien .. dus die kans is al 0% :)

en anders ... LEER CODEN! (of testen voor je et online zet >:) )
Ik prefereer beide :9

Programmer - an organism that turns coffee into software.


  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

En dit dan:
PHP:
1
<?function bla($bla) {bla}bla ($GLOBALS['bla']); of bla($_POST['bla']);?>

niet dat ik dat zelf doe, maar dat is wat ik begrijp uit Grums verhaal, dat je globals moet laten omdat je precies weten wilt welke variabelen een functie gebruikt?

/edit

De vraag is dus: mag dat (bla ($_POST['bla']); ) volgens de estetisch verantwoorde heren hier?

Sundown Circus


  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Trouwens, Grum: die signature van jou klopt imho ook niet helemaal.
Je zegt: "Note: Je kan alleen PHP als je code clean werkt met error_reporting(E_ALL);" , en daar ben ik het niet echt mee eens, je kunt alleen PHP als je zonder error_reporting(E_ALL); werkt, en op het laatst error_reporting wel op E_ALL zet en ziet dat er niks aan de hand is :)
error_reporting is gewoon een handige bugtrack tool die verteld wat je moet gaan verbeteren...

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Nog even een vraag; ik heb een wat ouder script van me eens bekeken met error_reporting op E_ALL, en daar krijg ik nogal veel 'Undefined variable,Undefined constant en Undefined offset' errors, zijn die echt zo boeiend?

Edit: dat zijn eigenlijk de enige errors die ik krijg, verder is er weinig aan de hand...
Maar het zijn er wel veel :)
(als ik bijv binnen een query while loopje een var aanmaak en hem daarbuiten gebruik geeft ie al aan dat ie undefined is! terwijl hij toch echt wel goed werkt :?)

Verwijderd

Ik gebruik wel global. En als ik Alle errors en notices heb aan staan krijg ik wel altijd errors dan variabelen die door formulieren worden gedefinieerd niet gedefinieerd zijn, Logisch.

Als ik een functie heb gebruik ik wel altijd dit.
code:
1
2
3
4
5
6
7
8
9
10
function UploadPlaatje() {
global $plaatjenaam, $plaatjepad, $toevoegen, $upload;

if ($toevoegen == "") {
echo "Formlier for upload <input type='hidden' name='toevoegen' value'upload'/>"
}

if ($toevoegen == "upload") {
Upload plaatje
}

Ik noem maar iets, is dit nou zo onveilig. Zo ja hoe verbeter ik dit dan?

Thx

  • Grum
  • Registratie: Juni 2001
  • Niet online
Op donderdag 07 maart 2002 00:51 schreef RedRose een goede vraag
Als je weet dat het een _POST var is dan natuurlijk $_POST['var'] gebruiken, voor de rest heb je $GLOBALS niet nodig behalve binnen in een functie en juist DAT moet je voorkomen mijn eerder genoemde reden.

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Op donderdag 07 maart 2002 08:40 schreef Mannekino het volgende:
code:
1
2
3
4
5
6
7
8
9
10
function UploadPlaatje() {
global $plaatjenaam, $plaatjepad, $toevoegen, $upload;

if ($toevoegen == "") {
echo "Formlier for upload <input type='hidden' name='toevoegen' value'upload'/>"
}

if ($toevoegen == "upload") {
Upload plaatje
}

Zo ja hoe verbeter ik dit dan?
if ($toevoegen)=="" heeft zowiezo niet echt veel zin, als je dat gebruikt, doe het dan op deze manier:

if (trim($toevoegen)=="") , als iemand in jouw voorbeeld namelijk een spatie gebruikt is het ook goed.

(natuurlijk voor het geval je checked of er bijvoorbeeld wel een berichtje of titel is ingevuld op een forum)

Verwijderd

Was ook maar ff een kort voorbeeldje, ik heb het in het echt nog weer anders, ging alleen even om te illustreren hoe ik die global gebruik?

Als dat fout is wou ik graag weten hoe ik dat kan verbeter, just trying to learn.

  • Grum
  • Registratie: Juni 2001
  • Niet online
godver :) ... had dus een leuke lekkere reply getikt (groot ook ;( ) en dan kijk ik nog es .. en dan issie weg :(

nog maar es .. komt zo iig ;)

[edit]

TangLeFuzZ: Trouwens, Grum: die signature van jou klopt imho ook niet helemaal.
Je zegt: "Note: Je kan alleen PHP als je code clean werkt met error_reporting(E_ALL);" , en daar ben ik het niet echt mee eens, je kunt alleen PHP als je zonder error_reporting(E_ALL); werkt, en op het laatst error_reporting wel op E_ALL zet en ziet dat er niks aan de hand is :) error_reporting is gewoon een handige bugtrack tool die verteld wat je moet gaan verbeteren...


Je kan beter error_reporting(E_ALL) aanzetten als je aan het coden bent, op die manier word je nl elke keer als je ranzig code met je neus op je fouten gedrukt.

EN die tekst paste niet echt in me sig he :P

TangLeFuzZ: ik heb een wat ouder script van me eens bekeken met error_reporting op E_ALL, en daar krijg ik nogal veel 'Undefined variable,Undefined constant en Undefined offset' errors, zijn die echt zo boeiend?

Je gaat toch ook niet met een lekke band fietsen ? of je remsporen in de pot laten staan :+ :D

JA dus ... gewoon netjes coden :)

Mannekino: Ik gebruik wel global. En als ik Alle errors en notices heb aan staan krijg ik wel altijd errors dan variabelen die door formulieren worden gedefinieerd niet gedefinieerd zijn, Logisch.

Tja waarom ik vind waarom je global niet zou moeten gebruiken staat al een stuk eerder.

Waarom nou niet je variabelen controleren voor je ze gebruikt. Je gaat toch ook niet naar de winkel en als je je buideltje euros bent vergeten neem je toch ook niet gewoon alles maar mee onder et motto 'zolang niemand het ziet is het goed' ?

En waarom zou je niet de functies (isset)gebruiken die deze errors voorkomen ? Dat is toch pure luiheid ?

Dat zijn 6 eurocent :)

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Op donderdag 07 maart 2002 09:09 schreef Grum het volgende:
Je gaat toch ook niet met een lekke band fietsen ? of je remsporen in de pot laten staan :+ :D

JA dus ... gewoon netjes coden :)
Daar heb je op zich wel gelijk in ja, maar het is toch zinloos, wat is er nou mis met het volgende:
PHP:
1
<?querywhile loopje {  $var = "$record->var";}echo "$var";?>

Helemaal niks toch?
Je gaat me toch niet vertellen dat dit zo slordig is, of wel dan?

  • Grum
  • Registratie: Juni 2001
  • Niet online
wat jij daar neerzet geeft (zoals je et zo hebt neergezet) ook geen error

maar bv bij dit:
code:
1
2
3
4
5
6
$theResult = mysql_query( ... );
while($theRow = mysql_fetch_assoc($theResult))
{
   doStuff($theRow);
}
print $theRow; <=== daar is $theRow FALSE .. hoe denk je anders dattie uit de while komt ?

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op donderdag 07 maart 2002 09:33 schreef TangLeFuzZ het volgende:

[..]

Daar heb je op zich wel gelijk in ja, maar het is toch zinloos, wat is er nou mis met het volgende:
PHP:
1
<?querywhile loopje {  $var = "$record->var";}echo "$var";?>

Helemaal niks toch?
Je gaat me toch niet vertellen dat dit zo slordig is, of wel dan?
Bah... vieze code

wat wil je doen?
Wil jij $var vullen met de string "$record->var" of
Wil jij $var vullen met de inhoud van variable $record->var

Programmer - an organism that turns coffee into software.


Verwijderd

Op donderdag 07 maart 2002 09:09 schreef Grum het volgende:

Waarom nou niet je variabelen controleren voor je ze gebruikt. Je gaat toch ook niet naar de winkel en als je je buideltje euros bent vergeten neem je toch ook niet gewoon alles maar mee onder et motto 'zolang niemand het ziet is het goed' ?

En waarom zou je niet de functies (isset)gebruiken die deze errors voorkomen ? Dat is toch pure luiheid ?
Wat een onzin zeg, jezus man ik probeer gewoon wat te leren. Ik weet toch niet hoe ik het anders kan doen. Nu ga ik het wel uitzoeken. Pfff

  • Grum
  • Registratie: Juni 2001
  • Niet online
Op donderdag 07 maart 2002 09:40 schreef Mannekino het volgende:
Wat een onzin zeg, jezus man ik probeer gewoon wat te leren. Ik weet toch niet hoe ik het anders kan doen. Nu ga ik het wel uitzoeken. Pfff
Voel je es niet zo aangevallen man. Lighten up .. tis nog vroeg :+

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Op donderdag 07 maart 2002 09:37 schreef Grum het volgende:
wat jij daar neerzet geeft (zoals je et zo hebt neergezet) ook geen error
Ik krijg toch echt een 'undefined variable' error.
LuCarD: ik wil 'm vullen met de inhoud van $record->var die ik uit de DB haal.

  • Grum
  • Registratie: Juni 2001
  • Niet online
Op donderdag 07 maart 2002 09:38 schreef LuCarD het volgende:
Bah... vieze code

wat wil je doen?
Wil jij $var vullen met de string "$record->var" of
Wil jij $var vullen met de inhoud van variable $record->var
Dat is toch wel heel duidelijk ofniet ?

Tuurlijk zijn de ""'s om $record->var overbodig. Al kan ik wel wat redenen verzinnen dat je ze wel wilt gebruiken, al zijn de motieven ervoor dan nog al twijfelachtig (op z'n minst).

Als $record->var een non-array/struct/resource-id is dan is het gewoon een doodnormale assigment en anders .. tja zoals ik hierboven al zeg .. twijfelachtig ;)

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Op donderdag 07 maart 2002 09:51 schreef Grum het volgende:
Tuurlijk zijn de ""'s om $record->var overbodig. Al kan ik wel wat redenen verzinnen dat je ze wel wilt gebruiken, al zijn de motieven ervoor dan nog al twijfelachtig (op z'n minst).
Als ik heel eerlijk ben weet ik eigenlijk nooit helemaal zeker waarom je nou ""'s moet gebruiken, ik doe het gewoon altijd (behalve in sommige gevallen, als je bijv. met arrays werkt oid).

  • Grum
  • Registratie: Juni 2001
  • Niet online
Op donderdag 07 maart 2002 09:43 schreef TangLeFuzZ het volgende:
Ik krijg toch echt een 'undefined variable' error.
LuCarD: ik wil 'm vullen met de inhoud van $record->var die ik uit de DB haal.
zoals jij het daar neerzette krijg je dat niet - alleen maar omdat je de mysql_fetch_... niet had :)
PHP:
1
<?error_reporting(E_ALL);$a = 10;while($b = $a--)        print ".";print "\nb: $b\n";?>

geeft geen errors

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Op donderdag 07 maart 2002 10:01 schreef Grum het volgende:

[..]

zoals jij het daar neerzette krijg je dat niet - alleen maar omdat je de mysql_fetch_... niet had :)
PHP:
1
<?error_reporting(E_ALL);$a = 10;while($b = $a--)        print ".";print "\nb: $b\n";?>

geeft geen errors
Ja gaan we bijdehand doen? ;)
Ik had ff geen zin om m'n voorbeeld compleet te maken, dacht dat jullie dat zelf wel in konden beelden.

Bij deze dan:
PHP:
1
<?$sql = "SELECT naam FROM items ORDER by naam";$resultaat = mysql_query($sql);while ($record = mysql_fetch_object($resultaat)) {  $naam = stripslashes ($record->naam);}echo "$naam";?>

Geeft een undefined variable error.

  • Grum
  • Registratie: Juni 2001
  • Niet online
Op donderdag 07 maart 2002 09:54 schreef TangLeFuzZ het volgende:
Als ik heel eerlijk ben weet ik eigenlijk nooit helemaal zeker waarom je nou ""'s moet gebruiken, ik doe het gewoon altijd (behalve in sommige gevallen, als je bijv. met arrays werkt oid).
Nou .. het is nergens nodig behalve als je echt wil dat je een string assigned ipv een resource/array|struct-waarde


bv (en waag het es om deze code te gebruiken :P ):
code:
1
2
3
$theFH = fopen('....', 'r');

print "$theFH";

die print iets als 'Resource id #X'

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Op donderdag 07 maart 2002 10:10 schreef Grum het volgende:

[..]

Nou .. het is nergens nodig behalve als je echt wil dat je een string assigned ipv een resource/array|struct-waarde


bv (en waag het es om deze code te gebruiken :P ):
code:
1
2
3
$theFH = fopen('....', 'r');

print "$theFH";

die print iets als 'Resource id #X'
Ok duidelijk, dat laatste wist ik al wel, alleen dat het nergens nodig is wist ik niet, ik dacht dat het altijd juist wel moest :)

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op donderdag 07 maart 2002 09:51 schreef Grum het volgende:

[..]

Dat is toch wel heel duidelijk ofniet ?
Tuurlijk in dit voorbeeld wel.
Maar wat nou als je het in een string wilt plaatsen?

echo "ik heb hier een string$record->var blaat blaat";

Dit werkt wel maar is het duidelijk? NEE
Tuurlijk zijn de ""'s om $record->var overbodig. Al kan ik wel wat redenen verzinnen dat je ze wel wilt gebruiken, al zijn de motieven ervoor dan nog al twijfelachtig (op z'n minst).

Als $record->var een non-array/struct/resource-id is dan is het gewoon een doodnormale assigment en anders .. tja zoals ik hierboven al zeg .. twijfelachtig ;)
Twijfel achtig is een understatement.
Persoonlijk ben ik verliefd op printf en sprintf maar er zijn natuurlijk ook andere goede oplossingen

echo "dit is een string", $record->var, " blaat blaat";

ofzo

Programmer - an organism that turns coffee into software.


  • Grum
  • Registratie: Juni 2001
  • Niet online
men heeft:
code:
1
2
3
4
5
6
7
8
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
+----+

men doet:
PHP:
1
<?error_reporting(E_ALL); $theCon = mysql_connect(':/tmp/mysql.sock', 'root', '');mysql_select_db('erik', $theCon);$theResult = mysql_query("select id from test"); while($theRow = mysql_fetch_assoc($theResult)){        $a = $theRow['id'];        print "$a .";} print $a;?>

dit geeft netjes:
code:
1
1 .2 .3 .4 .4

zoals verwacht.

dus ik zie het probleem niet :)
Pagina: 1