[php] Magic_quotes uitzetten in PHP

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • wustenveld
  • Registratie: Februari 2002
  • Laatst online: 07-07 13:36
Ik heb net een applicatie klaar en helemaal uitgetest op m'n eigen webserver, nu installeer ik het bij een provider en die geeft ineens allemaal errors omdat de magic_quotes aanstaan. Ik heb in al m'n scripts zelf al bepaald hoe ik omga met m'n quotes, en dat hoeft de server niet voor mij te doen.

Als ik een .htaccess bestand met "php_flag magic_quotes_gpc off" geeft de server een error, terwijl het op mijn server wel werkt.
Een ander verschil is dat ik mijn php als apache module geinstalleerd heb en de provider als CGI onderdeel. Kan dat nog veel verschil uitmaken, ik kan dat namelijk niet terugvinden in de documentatie. Zijn er mogelijkheden of kan ik beter alle scripts weer aanpassen of naar een andere provider die wel accepteert dat je met de data doet wat je zelf wilt.

Alvast bedankt voor de hulp,

Acties:
  • 0 Henk 'm!

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 16-09 10:29

Apache

amateur software devver

If it ain't broken it doesn't have enough features


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Ikzelf gebruikte voor scripts die ook gedistribueerd werden altijd een constructie als:
PHP:
1
 If (!$magic_quotes_gpc) $var=addslashes($var);

Op die manier was mijn script compleet onafhankelijk van de server instellingen.

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


Acties:
  • 0 Henk 'm!

  • wustenveld
  • Registratie: Februari 2002
  • Laatst online: 07-07 13:36
magic-quotes-runtime is iets anders als magic-quotes-gpc.
Ik probeer nu met een scriptje alles ongedaan te maken wat magic-quotes doet alleen verschijnt er nu niks meer op het scherm.

Ik heb het volgende script dat telkens wordt geladen voordat de rest van de scripts aan het werk gaan:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function verwijder_magic_quotes(&$array) {
   foreach (array_keys($array) as $key) {
       if (is_array($array[$key])) {
          verwijder_magic_quotes($array[$key]);
       } else {
          $array[$key] = stripslashes($array[$key]);
       }
  }
}

if (get_magic_quotes_gpc()) {
    verwijder_magic_quotes($_GET);
    verwijder_magic_quotes($_POST);
    verwijder_magic_quotes($_COOKIE);
    if (isset($_SESSION)) verwijder_magic_quotes($_SESSION);
}


Alleen duurt het nu een eeuwigheid voordat hij start, sterker nog er gebeurt helemaal niks meer. Als ik dit script rechtsstreek aanroep met http://host/script.php?hallo=hoi'oi en dan $_GET["hallo"] echo op het scherm doet ie het wel en is de slash verdwenen.

Wat doe ik fout? Ik zie het ff niet meer

[ Voor 3% gewijzigd door wustenveld op 23-04-2003 14:06 ]


Acties:
  • 0 Henk 'm!

  • wustenveld
  • Registratie: Februari 2002
  • Laatst online: 07-07 13:36
Ik weet het al, hij gaat nu wel snel. Toen deed ie nog raar, dus heb ik naast $_GET ook $HTTP_GET_VARS gezet en nu werkt het wel:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function verwijder_magic_quotes(&$array) { 

   foreach (array_keys($array) as $key) { 
       if (is_array($array[$key])) { 
          verwijder_magic_quotes($array[$key]); 
       } else { 
          $array[$key] = stripslashes($array[$key]); 
       } 
  } 
} 

if (get_magic_quotes_gpc()) { 
    verwijder_magic_quotes($_GET); 
    verwijder_magic_quotes($_POST); 
    verwijder_magic_quotes($_COOKIE); 
    verwijder_magic_quotes($HTTP_GET_VARS); 
    verwijder_magic_quotes($HTTP_POST_VARS); 
    if (isset($_SESSION)) verwijder_magic_quotes($_SESSION); 
}


In ieder geval bedankt voor het meedenken, met dit script kan ik de magic_quotes 'uitzetten', of in ieder geval al hetgene wat magic_quotes doet ongedaan maken. Ik vind dat magic_quotes zoiezo belachelijk, als maker van php-scripts mag je toch zeker zelf wel bepalen wat er met je post data enzo gebeurt. PHP moet niet ineens allemaal uitzichzelf dingen gaan bedenken, dat wil ik doen :)