[php] versie conflict

Pagina: 1
Acties:

  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
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)

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

$HTTP_[varnama]_VARS te gebruiken?

Doet iets met Cloud (MS/IBM)


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

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.


  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
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?
werkt dit dus voor alle vars, zowel post en get?
hoe roep ik ze dan aan binnen het script?

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

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.

Programmer - an organism that turns coffee into software.


  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
Op donderdag 30 mei 2002 11:26 schreef D2k het volgende:
$HTTP_[varnama]_VARS te gebruiken?
bedoel je dit?
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.

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Lees dit eens door....

http://nl.php.net/manual/nl/language.variables.external.php


PS. Dit is Basis.... !

Programmer - an organism that turns coffee into software.


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

wat je ook kan doen:
PHP:
1
<?if($_SERVER['REQUEST_METHOD'] == 'POST' || $REQUEST_METHOD == 'POST'){    if(version_compare(phpversion(), '4.2.0') >= 0)    {        $__POST =&amp; $_POST;    }    else    {        $__POST =&amp; $HTTP_POST_VARS    }}else{    if(version_compare(phpversion(), '4.2.0') >= 0)    {        $__GET =&amp; $_GET;    }    else    {        $__GET =&amp; $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.


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op donderdag 30 mei 2002 11:37 schreef chem het volgende:
wat je ook kan doen:
de if statement moet worden....

if($_SERVER['REQUEST_METHOD'] == 'POST' || $HTTP_SERVER_VARS['REQUEST_METHOD'] == 'POST')

Programmer - an organism that turns coffee into software.


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

Op 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')
dat zou goed kunnen :)

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.


  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
en hoe gebruik je dan de vars in je script? gewoon met $action?

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

Op donderdag 30 mei 2002 11:42 schreef Vinzzz het volgende:
en hoe gebruik je dan de vars in je script? gewoon met $action?
wel als je een foreach gebruikt:
PHP:
1
<?foreach($_POST as $key => $value){    $$key = $value;}?>

Klaar voor een nieuwe uitdaging.


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

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.
maar als toch bezig bent met smerig zijn... doe het dan zo....
PHP:
1
<?if(isset($_SERVER))    {        $__VAR =&amp; ${"_".$_SERVER['REQUEST_METHOD']};   } else    {            $__VAR =&amp; ${"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.


  • Dennis
  • Registratie: Februari 2001
  • Nu online
Vinzzz:
en hoe gebruik je dan de vars in je script? gewoon met $action?
Nee tuurlijk niet.

$_POST['action']

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

Op 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"];
owh damn, dat is wel erg listig ;)

ook iets waar je heel makkelijk overheen leest in iemands' code...

Klaar voor een nieuwe uitdaging.


  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
Op 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...
eh :? was hier dan mis mee, of juist nix?

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op donderdag 30 mei 2002 11:51 schreef Vinzzz het volgende:

[..]

eh :? was hier dan mis mee, of juist nix?
Nix mis mee het werkt goed....

Alleen het is niet meer leesbaar voor de andere mensen...

Programmer - an organism that turns coffee into software.


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Wat ook een redelijke oplossing is, als je de globals wilt gebruiken, zonder er register_globals voor te gebruiken:
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


  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
ik krijg btw
code:
1
Fatal error: Call to undefined function: version_compare()

te zien op de oude versie...

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

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...
zet ervoor: "function_exists('version_compare') && "

Klaar voor een nieuwe uitdaging.


  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
Op donderdag 30 mei 2002 11:55 schreef drm het volgende:
Wat ook een redelijke oplossing is.Puzzel ze ;)
Hij doet ut niet :?
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")?>

  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
ik krijg weliswaar nog deze foutmelding:
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') &amp;&amp; (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') &amp;&amp; (version_compare(phpversion(), '4.2.0') >= 0))      {            foreach($_GET as $key => $value){    $$key = $value;}      }      else foreach($_HTTP_GET_VARS as $key => $value){    $$key = $value;}}?>

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

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?
Eerst ff kijken of $_* wel arrays zijn met isarray() oid.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
als ik snel invoeg:
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...

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

jaaaa... ?

Klaar voor een nieuwe uitdaging.


  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
Op donderdag 30 mei 2002 13:19 schreef chem het volgende:
jaaaa... ?
:? mis ik iets? :?

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op donderdag 30 mei 2002 13:21 schreef Vinzzz het volgende:

[..]

:? mis ik iets? :?
$_POST, $_GET zijn de superglobals van versie 4.1.0+ nogal logisch dat je die niet voorkomen op je server..... |:(

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 :P
PHP:
1
<?if(is_array($_POST)){    print "hoera";} else {    print "bah, dan maar \$HTTP_POST_VARS";}?>

[edit]
verkeerde gequote }:O
[\edit

  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
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:
PHP:
1
<?if($_SERVER['REQUEST_METHOD'] == 'POST' || $HTTP_SERVER_VARS['REQUEST_METHOD'] == 'POST'){      if(function_exists('version_compare') &amp;&amp; (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') &amp;&amp; (version_compare(phpversion(), '4.2.0') >= 0))      {            foreach($_GET as $key => $value){    $$key = $value;}      }      else foreach($_HTTP_GET_VARS as $key => $value){    $$key = $value;}}?>

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

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


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

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:
[EDIT}
ONZIN...

la ma

[/edit]

Programmer - an organism that turns coffee into software.


  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
damn |:(
ok voor de volledigheid, (jullie) oplossing:
PHP:
1
<?if($_SERVER['REQUEST_METHOD'] == 'POST' || $HTTP_SERVER_VARS['REQUEST_METHOD'] == 'POST'){      if(function_exists('version_compare') &amp;&amp; (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') &amp;&amp; (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)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Vinzzz:
Hij doet ut niet :?
kheb dus:
PHP:
1
<?//snip?>
En wat doet hij daar niet aan :?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
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

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

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


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op donderdag 30 mei 2002 14:13 schreef drm het volgende:
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.
*SLAP*

Foei...
!isset($var) || empty($var) is onzinnig. Doe dan alleen empty($var). isset is in zo geval overbodig....

:Y)

Programmer - an organism that turns coffee into software.


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

wat jij wilt :*

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

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...

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

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...
Weet je dat wel zeker???

try this
PHP:
1
<?$var="";echo "isset:" . isset($var);echo "<BR>empty:" . empty($var);?>

Programmer - an organism that turns coffee into software.


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

jurriebur:
als ie niet bestaat zal er waarschijnlijk ook wel niks in staan ;)
dus !isset($var) lijkt mij voldoende...
nee da's precies verkeerd-om. Da's juist de reden dat empty () juist voldoende is :) LuCarD heeft wel gelijk.

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