Register globals sur off & formulaires
Résolu
webmc
Messages postés
24
Statut
Membre
-
webmc Messages postés 24 Statut Membre -
webmc Messages postés 24 Statut Membre -
Bonjour,
J'essaie progressivement de sécuriser un site hébergé sur un 240 plan d'OVH. Et, dès le départ ça coince... à cause de SetEnv REGISTER_GLOBALS 0 présent sur mon fichier .htaccess : les formulaires ne fonctionnent plus
J'ai recherché sur le net et vu qu'il faut utiliser $var = $_POST[var]... mais j'ai du mal à comprendre comment il faut exactement s'y prendre ? Alors, si vous pouvez m'aider à adapter le résumé du code ci-dessous... ça serait cool :)
Merci d'avance !
J'essaie progressivement de sécuriser un site hébergé sur un 240 plan d'OVH. Et, dès le départ ça coince... à cause de SetEnv REGISTER_GLOBALS 0 présent sur mon fichier .htaccess : les formulaires ne fonctionnent plus
J'ai recherché sur le net et vu qu'il faut utiliser $var = $_POST[var]... mais j'ai du mal à comprendre comment il faut exactement s'y prendre ? Alors, si vous pouvez m'aider à adapter le résumé du code ci-dessous... ça serait cool :)
Merci d'avance !
$to = "mail@domaine.fr";
$from = "mail@domaine.fr";
$headers = "MIME-Version: 1.0 \n";
$headers .= "Content-type: text/html; charset=iso-8859-1 \n";
$headers .= "From: $from \n";
$headers .= "Reply-to: $email\n";
$headers .= "Return-Path: <$to>\n";
$sujet = "$objet \n";
$redirection = "fichier.php";
$url_redir = "$redirection";
$mailheaders = "Reply-To: $email\n\n";
$msg = " $message\r ";
mail($to,$sujet,$msg,$headers);
echo "<script language=\"javascript\">";
echo "window.location=('$url_redir');";
echo "</script>";
echo "$reponse";
echo "</BODY></HTML>";
A voir également:
- Register globals sur off & formulaires
- Logo on off - Forum Facebook
- Switch off - Télécharger - Divers Utilitaires
- On off symbole - Forum Word
- @Echo off ✓ - Forum Programmation
- Que veut dire le bouton off - Forum PC portable
5 réponses
c est incomplet il vaut mieux mettre le lien
il faut savoir si ton formulaire est en POST ou en GET
tu mets extract($_POST) ou $_GET
et tu peux utiliser tes variables telles que définies dans le formulaire
il faut savoir si ton formulaire est en POST ou en GET
tu mets extract($_POST) ou $_GET
et tu peux utiliser tes variables telles que définies dans le formulaire
extract résoud le pb mais cela veut dire que tu prend comme variable n'importe quel champ posté, comme qd REGISTER_GLOBAL est à 1
si tu veux mieux maitriser, donc sécuriser, il faut faire tous les champs un par un:
$champ1=$_POST['champ1'];
$champ2=$_POST['champ2'];
etc..
ainsi ne seront pris en compte que ceux réellement utiles à ton script
si tu veux mieux maitriser, donc sécuriser, il faut faire tous les champs un par un:
$champ1=$_POST['champ1'];
$champ2=$_POST['champ2'];
etc..
ainsi ne seront pris en compte que ceux réellement utiles à ton script
Merci alain_42 pour cette mise en garde,
Je crois avoir enfin compris ce qu'il faut faire, voici donc le code modifié qui fonctionne correctement... cela servira peut-être aux personnes aussi perspicaces que moi
Si ce n'est toujours pas optimal... merci aux pros d'intervenir
@+
Je crois avoir enfin compris ce qu'il faut faire, voici donc le code modifié qui fonctionne correctement... cela servira peut-être aux personnes aussi perspicaces que moi
Si ce n'est toujours pas optimal... merci aux pros d'intervenir
@+
$objet=$_POST['objet'];
$articles=$_POST['articles'];
$societe=$_POST['societe'];
$contact=$_POST['contact'];
$telephone=$_POST['telephone'];
$email=$_POST['email'];
$message=$_POST['message'];
$detail=$_POST['detail'];
$to = "mail@domaine.fr";
$from = "mail@domaine.fr";
$headers = "MIME-Version: 1.0 \n";
$headers .= "Content-type: text/html; charset=iso-8859-1 \n";
$headers .= "From: $from \n";
$headers .= "Reply-to: $email\n";
$sujet = "$objet \n";
$redirection = "fichier.php";
$url_redir = "$redirection";
$msg =
<table width='600'>
<tr>
<td colspan='2'><img src='fichier.jpg'></td>
</tr>
<tr>
<td colspan='2'> </td>
</tr>
<tr>
<td>Objet</td>
<td>$objet$articles</td>
</tr>
<tr>
<td width='100'>Societe</td>
<td width='400'>$societer</td>
</tr>
<tr>
<td width='100'>Contact</td>
<td width='400'>$contactr</td>
</tr>
<tr>
<td width='100'>Tel</td>
<td width='400'>$telephoner</td>
</tr>
<tr>
<td width='100'>E-Mail</td>
<td width='400'>$emailr</td>
</tr>
<tr>
<td colspan='2'> </td>
</tr>
<tr>
<td colspan='2'>$messager $detailr</td>
</tr>
<tr>
<td colspan='2'> </td>
</tr>
<tr>
<td colspan='2'><img src='fichier.jpg'></td>
</tr>
</table>
";
mail($to,$sujet,$msg,$headers);
echo "<script language="javascript\">";
echo "window.location=('$url_redir');";
echo "</script>";
echo "</BODY></HTML>";
C'est simple:
- si REGISTER_GLOBAL est à 1:
si dans ton formulaire en methode="post" tu as par exemple un champ
<input type=text" name="nom">
dans le script de traitement du formulaire tu récupères la valeur saisie par
$nom (le nom du champ précédé de $)
si REGISTER_GLOBAL est à 0
dans le script de traitement du formulaire tu récupères la valeur saisie par
$_POST['nom']
la deuxième solution est sécurisée, tu peux mieux controler ce que tu dois récupérer
- si REGISTER_GLOBAL est à 1:
si dans ton formulaire en methode="post" tu as par exemple un champ
<input type=text" name="nom">
dans le script de traitement du formulaire tu récupères la valeur saisie par
$nom (le nom du champ précédé de $)
si REGISTER_GLOBAL est à 0
dans le script de traitement du formulaire tu récupères la valeur saisie par
$_POST['nom']
la deuxième solution est sécurisée, tu peux mieux controler ce que tu dois récupérer
Merci alain-42 pour tes précisions et jmg78 pour ta solution que je viens d'adopter... Car, je viens d'ajouter en première ligne de mon fichier php : extract($_POST); avec REGISTER_GLOBALS sur OFF et tout fonctionne bien à nouveau ... J'espère que cette méthode ne change en rien les règles de sécurité. @+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
et si on veut aller plus loin on peut protéger les saisies par htmlentities
et si dans une des saisies tu as une apostrophe (ex: l'avion) , dans le mail tu vas avoir l\'avion
pour éviter ça tu passe en plus par la fonction stripslashes
$message=stripslashes(htmlentities($_POST['message']));
idem pour tous les champs susceptibles d'en comporter
$objet=htmlentities($_POST['objet']); $articles=htmlentities($_POST['articles']); $societe=htmlentities($_POST['societe']); $contact=htmlentities($_POST['contact']); $telephone=htmlentities($_POST['telephone']); $email=htmlentities($_POST['email']); $message=htmlentities($_POST['message']); $detail=htmlentities($_POST['detail']);
et si dans une des saisies tu as une apostrophe (ex: l'avion) , dans le mail tu vas avoir l\'avion
pour éviter ça tu passe en plus par la fonction stripslashes
$message=stripslashes(htmlentities($_POST['message']));
idem pour tous les champs susceptibles d'en comporter