tussen php4.0.6 en php4.2.x is een groot verschil en onder andere Superglobals (variabelen). Ze worden standaard niet meer thuisgebracht onder globals. Thuis werk ik met de nieuwe, maar de server met de oude. Hoe kan ik mijn script zo maken dat ze op beide werken? (zonder register_globals op on te zetten in de php.ini)
$HTTP_[varnama]_VARS te gebruiken?
Doet iets met Cloud (MS/IBM)
PHP:
1
| <?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?> |
Zoiets?
Programmer - an organism that turns coffee into software.
werkt dit dus voor alle vars, zowel post en get?Op donderdag 30 mei 2002 11:29 schreef LuCarD het volgende:
PHP:
1 <?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?>
Zoiets?
hoe roep ik ze dan aan binnen het script?
Nee deze is alleen voor post vars maar gemakkelijk aan te passen voor get / server /env of session vars.
$blaat=getPost('blaat');
functie haalt hem wel uit de juiste array.
$blaat=getPost('blaat');
functie haalt hem wel uit de juiste array.
Programmer - an organism that turns coffee into software.
bedoel je dit?Op donderdag 30 mei 2002 11:26 schreef D2k het volgende:
$HTTP_[varnama]_VARS te gebruiken?
PHP:
1
| <?if ($HTTP_['action']_VARS == "delete")?> |
dan krijg ik:
parse error, unexpected T_STRING
omdat 4.0.6 de variabelen kan aanroepen in het script via $test (bv als ik nieuw.php?test=ja doe, of via form)
en dit in 4.2.x niet meer lukt zal ik iets moeten bedenken.
Lees dit eens door....
http://nl.php.net/manual/nl/language.variables.external.php
PS. Dit is Basis.... !
http://nl.php.net/manual/nl/language.variables.external.php
PS. Dit is Basis.... !
Programmer - an organism that turns coffee into software.
wat je ook kan doen:
je kan die =& ook omzetten naar een foreach() met variabele variabelen als je ze graag in je global scope wil krijgen...
PHP:
1
| <?if($_SERVER['REQUEST_METHOD'] == 'POST' || $REQUEST_METHOD == 'POST'){ if(version_compare(phpversion(), '4.2.0') >= 0) { $__POST =& $_POST; } else { $__POST =& $HTTP_POST_VARS }}else{ if(version_compare(phpversion(), '4.2.0') >= 0) { $__GET =& $_GET; } else { $__GET =& $HTTP_GET_VARS }}?> |
je kan die =& ook omzetten naar een foreach() met variabele variabelen als je ze graag in je global scope wil krijgen...
Klaar voor een nieuwe uitdaging.
de if statement moet worden....Op donderdag 30 mei 2002 11:37 schreef chem het volgende:
wat je ook kan doen:
if($_SERVER['REQUEST_METHOD'] == 'POST' || $HTTP_SERVER_VARS['REQUEST_METHOD'] == 'POST')
Programmer - an organism that turns coffee into software.
dat zou goed kunnenOp donderdag 30 mei 2002 11:39 schreef LuCarD het volgende:
[..]
de if statement moet worden....
if($_SERVER['REQUEST_METHOD'] == 'POST' || $HTTP_SERVER_VARS['REQUEST_METHOD'] == 'POST')
temeer daar wij gewoon overgaan met nieuwe scripts, en we dus gewoon de oude zut laten varen. So be it.
Klaar voor een nieuwe uitdaging.
en hoe gebruik je dan de vars in je script? gewoon met $action?
wel als je een foreach gebruikt:Op donderdag 30 mei 2002 11:42 schreef Vinzzz het volgende:
en hoe gebruik je dan de vars in je script? gewoon met $action?
PHP:
1
| <?foreach($_POST as $key => $value){ $$key = $value;}?> |
Klaar voor een nieuwe uitdaging.
maar als toch bezig bent met smerig zijn... doe het dan zo....Op donderdag 30 mei 2002 11:41 schreef chem het volgende:
[..]
dat zou goed kunnen
temeer daar wij gewoon overgaan met nieuwe scripts, en we dus gewoon de oude zut laten varen. So be it.
PHP:
1
| <?if(isset($_SERVER)) { $__VAR =& ${"_".$_SERVER['REQUEST_METHOD']}; } else { $__VAR =& ${"HTTP_".$HTTP_SERVER_VARS['REQUEST_METHOD']."_VARS"};}?> |
Vinzzzz: Om dan $action te gebruiken moet je die uit $__VAR halen.
$action=$__VAR["action"];
Programmer - an organism that turns coffee into software.
Nee tuurlijk niet.Vinzzz:
en hoe gebruik je dan de vars in je script? gewoon met $action?
$_POST['action']
owh damn, dat is wel erg listigOp donderdag 30 mei 2002 11:46 schreef LuCarD het volgende:
[..]
maar als toch bezig bent met smerig zijn... doe het dan zo....
PHP:
1 <?...?>
Vinzzzz: Om dan $action te gebruiken moet je die uit $__VAR halen.
$action=$__VAR["action"];
ook iets waar je heel makkelijk overheen leest in iemands' code...
Klaar voor een nieuwe uitdaging.
ehOp donderdag 30 mei 2002 11:49 schreef chem het volgende:
[..]
owh damn, dat is wel erg listig
ook iets waar je heel makkelijk overheen leest in iemands' code...
Nix mis mee het werkt goed....Op donderdag 30 mei 2002 11:51 schreef Vinzzz het volgende:
[..]
ehwas hier dan mis mee, of juist nix?
Alleen het is niet meer leesbaar voor de andere mensen...
Programmer - an organism that turns coffee into software.
Wat ook een redelijke oplossing is, als je de globals wilt gebruiken, zonder er register_globals voor te gebruiken:
en dan kun je wel gewoon $action gebruiken. Desnoods kun je met extract ook nog prefixes voor je variabelen zet, in het geval je GET en POST methods wilt combineren...
Puzzel ze
code:
1
2
3
4
5
6
7
8
9
10
11
12
| // dit dus niet in een functie maar in een include zetten
// dat gekloot met global binnen een functie ... ;)
if ( strcasecmp ( $REQUEST_METHOD, "post" ) == 0 )
{
if ( isset ( $_POST ) ) // v 4.2 of >
extract ( $_POST );
if ( isset ( $HTTP_POST_VARS ) )
extract ( $HTTP_POST_VARS ); // v < 4.2
}
elseif ( strcasecmp ( $REQUEST_METHOD, "get" ) == 0 )
// etcetera |
en dan kun je wel gewoon $action gebruiken. Desnoods kun je met extract ook nog prefixes voor je variabelen zet, in het geval je GET en POST methods wilt combineren...
Puzzel ze
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
ik krijg btw
te zien op de oude versie...
code:
1
| Fatal error: Call to undefined function: version_compare() |
te zien op de oude versie...
zet ervoor: "function_exists('version_compare') && "Op donderdag 30 mei 2002 11:55 schreef Vinzzz het volgende:
ik krijg btw
code:
1 Fatal error: Call to undefined function: version_compare()
te zien op de oude versie...
Klaar voor een nieuwe uitdaging.
Hij doet ut nietOp donderdag 30 mei 2002 11:55 schreef drm het volgende:
Wat ook een redelijke oplossing is.Puzzel ze
kheb dus:
PHP:
1
| <?if ( strcasecmp ( $REQUEST_METHOD, "POST" ) == 0 ){ if ( isset ( $_POST ) ) // v 4.2 of > extract ( $_POST ); if ( isset ( $HTTP_POST_VARS ) ) extract ( $HTTP_POST_VARS ); // v < 4.2}elseif ( strcasecmp ( $REQUEST_METHOD, "GET" ) == 0 ){ if ( isset ( $_GET ) ) // v 4.2 of > extract ( $_GET ); if ( isset ( $HTTP_GET_VARS ) ) extract ( $HTTP_GET_VARS ); // v < 4.2}if ($action == "delete")?> |
ik krijg weliswaar nog deze foutmelding:
maar ut werkt wel , hoe krijg ik de melding verholpen?
code:
1
| Invalid argument supplied for foreach() |
maar ut werkt wel , hoe krijg ik de melding verholpen?
PHP:
1
| <?if($_SERVER['REQUEST_METHOD'] == 'POST' || $HTTP_SERVER_VARS['REQUEST_METHOD'] == 'POST'){ if(function_exists('version_compare') && (version_compare(phpversion(), '4.2.0') >= 0)) { foreach($_POST as $key => $value){ $$key = $value;} } else foreach($_HTTP_POST_VARS as $key => $value){ $$key = $value;}}else{if(function_exists('version_compare') && (version_compare(phpversion(), '4.2.0') >= 0)) { foreach($_GET as $key => $value){ $$key = $value;} } else foreach($_HTTP_GET_VARS as $key => $value){ $$key = $value;}}?> |
Eerst ff kijken of $_* wel arrays zijn met isarray() oid.Op donderdag 30 mei 2002 13:02 schreef Vinzzz het volgende:
ik krijg weliswaar nog deze foutmelding:
code:
1 Invalid argument supplied for foreach()
maar ut werkt wel , hoe krijg ik de melding verholpen?
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
als ik snel invoeg:
dan doet ie dat bij mij thuis wel (php4.2.x) maar op de server (php4.0.x) niet
krijg dus thuis hallohall2 te zien, op de server niet...
PHP:
1
| <?if (is_array($_POST)) echo "hallo";if (is_array($_GET)) echo "hallo2";?> |
dan doet ie dat bij mij thuis wel (php4.2.x) maar op de server (php4.0.x) niet
krijg dus thuis hallohall2 te zien, op de server niet...
jaaaa... ?
Klaar voor een nieuwe uitdaging.
Op donderdag 30 mei 2002 13:19 schreef chem het volgende:
jaaaa... ?
$_POST, $_GET zijn de superglobals van versie 4.1.0+ nogal logisch dat je die niet voorkomen op je server.....Op donderdag 30 mei 2002 13:21 schreef Vinzzz het volgende:
[..]
mis ik iets?
Maar ik dacht dat het nu, toch wel een beetje duidelijk was....
Programmer - an organism that turns coffee into software.
Verwijderd
logische gevolgtrekking zou dan zijn dat je op de server $HTTP_POST/GET_VARS moet gebruiken 
[edit]
verkeerde gequote
[\edit
PHP:
1
| <?if(is_array($_POST)){ print "hoera";} else { print "bah, dan maar \$HTTP_POST_VARS";}?> |
[edit]
verkeerde gequote
[\edit
ok, idd verkeerd begrepen door mij, snap dat nu, maar kun je me dan toch nog vertellen hoe dit komt? :
vanaf line 7:
code:
1
| Invalid argument supplied for foreach() in line20 |
vanaf line 7:
PHP:
1
| <?if($_SERVER['REQUEST_METHOD'] == 'POST' || $HTTP_SERVER_VARS['REQUEST_METHOD'] == 'POST'){ if(function_exists('version_compare') && (version_compare(phpversion(), '4.2.0') >= 0)) { foreach($_POST as $key => $value){ $$key = $value;} } else foreach($_HTTP_POST_VARS as $key => $value){ $$key = $value;}}else{ if(function_exists('version_compare') && (version_compare(phpversion(), '4.2.0') >= 0)) { foreach($_GET as $key => $value){ $$key = $value;} } else foreach($_HTTP_GET_VARS as $key => $value){ $$key = $value;}}?> |
omdat het $HTTP_GET_VARS is zonder eerste underscore
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
[EDIT}Op donderdag 30 mei 2002 13:34 schreef Vinzzz het volgende:
ok, idd verkeerd begrepen door mij, snap dat nu, maar kun je me dan toch nog vertellen hoe dit komt? :
code:
1 Invalid argument supplied for foreach() in line20
vanaf line 7:
ONZIN...
la ma
[/edit]
Programmer - an organism that turns coffee into software.
damn 
ok voor de volledigheid, (jullie) oplossing:
bedankt allemaal (mag niet, doe het toch)
ok voor de volledigheid, (jullie) oplossing:
PHP:
1
| <?if($_SERVER['REQUEST_METHOD'] == 'POST' || $HTTP_SERVER_VARS['REQUEST_METHOD'] == 'POST'){ if(function_exists('version_compare') && (version_compare(phpversion(), '4.2.0') >= 0)) { foreach($_POST as $key => $value){ $$key = $value;} } else foreach($HTTP_POST_VARS as $key => $value){ $$key = $value;}}else{ if(function_exists('version_compare') && (version_compare(phpversion(), '4.2.0') >= 0)) { foreach($_GET as $key => $value){ $$key = $value;} } else foreach($HTTP_GET_VARS as $key => $value){ $$key = $value;}}if ($action == "delete") echo "action, werkt nu<br>";?> |
bedankt allemaal (mag niet, doe het toch)
En wat doet hij daar niet aanVinzzz:
Hij doet ut niet
kheb dus:
PHP:
1 <?//snip?>
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
PHP:
1
| <?if ( strcasecmp ( $REQUEST_METHOD, "POST" ) == 0 ){ if ( isset ( $_POST ) ) extract ( $_POST ); if ( isset ( $HTTP_POST_VARS ) ) extract ( $HTTP_POST_VARS );}elseif ( strcasecmp ( $REQUEST_METHOD, "GET" ) == 0 ){ if ( isset ( $_GET ) ) extract ( $_GET ); if ( isset ( $HTTP_GET_VARS ) ) extract ( $HTTP_GET_VARS );}if ($action == "delete")?> |
doet ut wel op de oude maar niet op de nieuwe versie...dan gaat ie niet de if in
code:
1
2
3
4
5
6
7
8
9
| if ( !isset ( $REQUEST_METHOD ) || empty ( $REQUEST_METHOD ) )
{
if ( isset ( $_SERVER ) )
$REQUEST_METHOD = $_SERVER [ 'REQUEST_METHOD' ];
elseif ( isset ( $HTTP_SERVER_VARS ) )
$REQUEST_METHOD = $HTTP_SERVER_VARS [ 'REQUEST_METHOD' ];
else
die ( "huh? allemaal niet :?" );
} |
Zet dat er anders ff boven.
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
*SLAP*Op donderdag 30 mei 2002 14:13 schreef drm het volgende:
code:
1 2 3 4 5 6 7 8 9if ( !isset ( $REQUEST_METHOD ) || empty ( $REQUEST_METHOD ) ) { if ( isset ( $_SERVER ) ) $REQUEST_METHOD = $_SERVER [ 'REQUEST_METHOD' ]; elseif ( isset ( $HTTP_SERVER_VARS ) ) $REQUEST_METHOD = $HTTP_SERVER_VARS [ 'REQUEST_METHOD' ]; else die ( "huh? allemaal niet :?" ); }
Zet dat er anders ff boven.
Foei...
!isset($var) || empty($var) is onzinnig. Doe dan alleen empty($var). isset is in zo geval overbodig....
Programmer - an organism that turns coffee into software.
wat jij wilt
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
En als je het echt netjes wilt doen .... Dan doe je het als volgt...
code:
1
2
3
4
| if (!(isset($var) && !empty($var)) {
} |
Programmer - an organism that turns coffee into software.
Verwijderd
als ie niet bestaat zal er waarschijnlijk ook wel niks in staan 
dus !isset($var) lijkt mij voldoende...
dus !isset($var) lijkt mij voldoende...
Weet je dat wel zeker???Op donderdag 30 mei 2002 14:28 schreef jurriebur het volgende:
als ie niet bestaat zal er waarschijnlijk ook wel niks in staan
dus !isset($var) lijkt mij voldoende...
try this
PHP:
1
| <?$var="";echo "isset:" . isset($var);echo "<BR>empty:" . empty($var);?> |
Programmer - an organism that turns coffee into software.
nee da's precies verkeerd-om. Da's juist de reden dat empty () juist voldoende isjurriebur:
als ie niet bestaat zal er waarschijnlijk ook wel niks in staan
dus !isset($var) lijkt mij voldoende...
nog geen reden om mij te slappen, maar goed
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
Pagina: 1