Page 1 sur 1

Probleme magic_quotes_gpc

Posté : 14 oct. 2015, 21:22
par benou
Mr/dme bjr.
je developpe un site par pure plaisir je suis loin d'etre monsieur l'expert en PHP/MYQL et je ne suis pas trop nul non plus.
Tous ce passe bien lorsque je travaill en mode LOCALHOST avec magic_quotes_gpc d'activée.
Ce matin je décide de faire un test du site en ligne pour voir comment ca vas ce passer et tout. Et la ca ce passe pas comme je veux bien. Puisque magic_quotes_gpc est inactif et pas moyen de l'activée chez l'hebergeur quoi qu'il soit la methode exemple httaccess, php.ini etc.
Je vous explique un peut plus:
j'ai une page 'model.php' dans la quelle j'ai sauvegarder mes fonction et j'appelle cette page via include pratiquement sur tout mes autres pages.

dans cette page j'ai ces 2 Fonctions qui genrent mes $_POST an $_GET :

Code : Tout sélectionner

function parse_params() { $params = array(); if (ini_get('magic_quotes_gpc') == 1) { if (!empty($_POST)) { $params = array_merge($params, stripslashes_deep($_POST)); } else { $params = array_merge($params, $_POST); } } if (ini_get('magic_quotes_gpc') == 1) { if (!empty($_GET)) { $params = array_merge($params, stripslashes_deep($_GET)); } else { $params = array_merge($params, $_GET); } } if (ini_get('magic_quotes_gpc') == 1) { if (!empty($_FILES)) { $params = array_merge($params, stripslashes_deep($_FILES)); } else { $params = array_merge($params, $_FILES); } } return $params; } function stripslashes_deep($value) { $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value); return $value; }
Je l'appelle sur toutes les pages via

Code : Tout sélectionner

$params = parse_params();
le probleme c'est que lorsque magic_quotes_gpc est désactivée j'ai plus rien comme parametres et frachement je suis un peut coincé la.
La question que j'en ai est comment je peut faire pour garder cette fonction et l'optimiser pour que ca fonctionne avec le 2 parametres Probleme magic_quotes_gpc on ou off. Tout en gardant le contenue de $_POST et $_GET safe avant de les sauvgarder dans la base de donner ou autre chose.
Je vous remerci d'avance pour toutes vos réponse et je vous souhaite une bonne soirée.

Re: Probleme magic_quotes_gpc

Posté : 14 oct. 2015, 21:36
par or 1
un seul if (ini_get('magic_quotes_gpc') == 1) { au lieu de 3, et un else, pour gérer l'autre cas de figure.

Re: Probleme magic_quotes_gpc

Posté : 14 oct. 2015, 21:45
par benou
ca c vrais que le sytaxe est mal fait mais ce n'est pas la question justement le else comment je dois traiter l'autre cas figure :)

Re: Probleme magic_quotes_gpc

Posté : 15 oct. 2015, 12:23
par Ryle
Bonjour,

Il te suffit d'inverser ton test :)
if (!empty($_POST)) {
    if (ini_get('magic_quotes_gpc') == 1) {
            $params = array_merge($params, stripslashes_deep($_POST));
    } else {
            $params = array_merge($params, $_POST);
    }
}

Re: Probleme magic_quotes_gpc

Posté : 15 oct. 2015, 14:30
par benou
Une bonne idée mais ça resoud toujours pas mon problème puisque lorsque magic_quotes_gpc ==0 donc cette fonction ne fais rien du tout et ne me rend pas de resultat et c la ou j'ai un probleme puisque sur toute mes pages de script j'ai un truc comme ca.

Code : Tout sélectionner

include ($_SERVER['DOCUMENT_ROOT'].'/path/hidden/model.php'); $params = parse_params();
et admettant que j’accède a une page genre http://monsite.com/page-dynamique/$view=x&id=y
lorsque magique_quote_gpc =1 j'ai $params=array( [view] => x [id] => y ))
lorsque magique_quote_gpc =0 j'ai $params=array() avec rien du tout la dedans.

Re: Probleme magic_quotes_gpc

Posté : 15 oct. 2015, 14:40
par benou
Principalement c par mesure de sécurité que je veut un fonction qui marche dans les 2 cas. et que cette meme fonction me permet de sécurisé les donnée $_GET,$_POST etc avant de les utilser dans mon script je ne veut pas que quelqu'un penetre mon site facilement avec des donnée malveillante genre cross site script etc.
donc si jamais y a quelqu'un qui peut me fournir une bonne reformulation de cette fonction qui vas faire capter tous qui est input $_GET,$_POST,$_FILES,$_COOKIES etc.
Je lui serais reconnaissant.

Re: Probleme magic_quotes_gpc

Posté : 15 oct. 2015, 15:03
par Ryle
Logiquement dans le code donné plus haut (à répercuter en get, request, ...), tu récupéreras ta variable $params que les magic quotes soient activées ou non. Son contenu dépendra de ce que tu as envoyé en post, get etc.
function parse_params()
{
    $params = array();

if (!empty($_POST)) { // si des données sont envoyées en post
    if (ini_get('magic_quotes_gpc') == 1) { // si les magic quotes sont activées
            // on vire tous les slashs ajoutés par php des données envoyées en post
            // on enregistre les valeurs modifiées dans le tableau $params
            $params = array_merge($params, stripslashes_deep($_POST)); 
    } else { // si les magic quotes ne sont pas activées
            // on ne touche pas au données envoyées en post
            // on enregistre les valeurs non modifiées dans le tableau $params
            $params = array_merge($params, $_POST);
    }
} // si aucune donnée n'est envoyée en post, $params ne change pas et reste vide

... // gérer $_GET etc.

    return $params; // retourne le tableau avec des valeurs sans les antislash superflux de php
}

Re: Probleme magic_quotes_gpc

Posté : 15 oct. 2015, 15:29
par benou
Merci énormément pour la réponse j'essaye ça immédiatement. et je vous dis ce que ca vas donner.

Re: Probleme magic_quotes_gpc

Posté : 15 oct. 2015, 15:49
par benou
j'ai réutiliser ta logique et ça remarche !!!!!
Mec tu est mon sauveur merci beaucoup !!!!!!