addslashes

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : addslashes

par cerber » 16 juin 2005, 11:37

et bien je crois que t'as mis le doigt dessus CERBER.
lol on a quand meme mis 5 pages x 15 messages/page = 75 messages

Content de t'avoir aidé ;) mais je persiste et signe, avant de rentrer un truc dans la BDD il faudrais toujours faire ca :
$service =$_POST['nom_service'];
if(get_magic_quotes_gpc())
    $service=stripslashes($service);
}
$service=mysql_real_escape_string($service);
@++

par renatane » 16 juin 2005, 10:38

bonjour,

et bien je crois que t'as mis le doigt dessus CERBER.

avec mon form:
echo "<option value=\"".str_replace('"', '""', $nom_service)."\" ".$selected.">".htmlentities($nom_service)."</option>\n";
mon enregistrement:
$service =$_POST['nom_service'];
$s= "SELECT DISTINCT  id_service FROM phpgw_workf_services WHERE nom_service='".$service."'";
// Envoi de la requête à MySQL
$results= mysql_query($s);
$seris=mysql_fetch_array($results, MYSQL_ASSOC);
$idservice=$seris['id_service'];
Ca fonctionne bien. Le seul hic, c'est que quand j'affiche des fois j'ai le \, des fois je l'ai pas, Mais je pense pouvoir regler ce problème moi même.

Merci beaucoup.

par cerber » 15 juin 2005, 17:21

oui, bon d'accord moi aussi je suis fatigué, je fait deux choses en même temps et je me trompe ....
addslashes protege les '
pour proteger les " il faut utiliser str_replace('"', '""', $nom_service) ou htmlentities($nom_service) mais je suis pas sur que htmlentities($nom_service) soit correctement récuperé de l'autre coté
echo "<option value=\"".str_replace('"', '""', $nom_service)."\" ".$selected.">".htmlentities($nom_service)."</option>\n";
Bonne soirée

par renatane » 15 juin 2005, 17:07

CONCESSION de DISTRIBUTION PUBLIQUE d\\\'ELECTRICITE
CONCESSION de DISTRIBUTION PUBLIQUE d\\\'ELECTRICITE
CONCESSION de DISTRIBUTION PUBLIQUE d\'ELECTRICITE
CONCESSION de DISTRIBUTION PUBLIQUE d'ELECTRICITE
les longueurs diffèrent => c'est déjà pas bon
ca bloque au caractère 37 : '\' contre '''y'a une couil** dans le paté ! Sad

Oula, y'a de l'avancement, waouww

Je doit y alé, je reverrai ca demain,
en tous cas déjà merci pour votre aide.

par cerber » 15 juin 2005, 16:57

J'ai trouvé !!! tes derniers messages m'avaient mis sur la voie, la source de ton formulaire m'a donné raison !
Le probleme est pas sur la page d'arrivée mais sur la page de formulaire, ici pour être précis :
echo "<option value='".$nom_service."' ".$selected.">".$nom_service."</option>\n";
si $nom_service contient un ' php va rien dire mais le code HTML généré va être faux et ca se verra pas dans le navigateur (a moins d'avoir firefox et un plugin html validator)

essaye de remplacer cette ligne par ca :
echo "<option value=\"".addslashes($nom_service)."\" ".$selected.">".htmlentities($nom_service)."</option>\n";

par renatane » 15 juin 2005, 16:49

ben ca fait 2 fois que je le note, c'est ce qui est au dessus guy.

par guy » 15 juin 2005, 16:47

j'ai pas dit cela mais que repond le bout de code que je t'ai pondu ?
Guy

par renatane » 15 juin 2005, 16:46

Guy:

service est egal à
et la requete est egale à SELECT DISTINCT id_service FROM phpgw_workf_services WHERE nom_service=''
voilà ce que ca m'affiche.

par renatane » 15 juin 2005, 16:43

Je ne melange rien du tout.:?
qd j'utilise l'une, je met l'autre en /* */
Je sais je suis pas fut fut mais qd mê :wink:

par guy » 15 juin 2005, 16:40

$servic =$_POST['nom_service']; 
$service= htmlentities($service, ENT_QUOTES);
$s= "SELECT DISTINCT  id_service FROM phpgw_workf_services WHERE nom_service='".$service."'";
// Envoi de la requête à MySQL
$results= mysql_query($s);
$seris=mysql_fetch_array($results, MYSQL_ASSOC);
$idservice=$seris['id_service'];
echo"service est egal à $service<br>";
echo"et la requete est egale à $s<br>;"

juste cela dans ton script melange pas les deux methodes stp
Guy

par renatane » 15 juin 2005, 16:40

La valeur viens de ma base de donnée!

voici le code de mon select pour ce champs service:
<form name='nom' action='enregistrer.php' method='post'>

Service :
            <select name='nom_service'><br>

<?php

$rq = "SELECT DISTINCT nom_service FROM phpgw_workf_services ORDER BY nom_service";
$result = mysql_query($rq)
or die ("Exécution de la requête service impossible".mysql_error());
//DISTINCT permet d'afficher qu'une fois les données
//on liste tous les servicesde la table service.
while ($liste=mysql_fetch_array($result))
{
    extract($liste);
    //pour chaque ligne on teste si elle correspond à la ligne a afficher :
        //si var1 = "" aucune ligne ne sera sélectionnée
        // sinon la ligne qui a été enregistrée sera sélectionnée
    $selected = ($nom_service == $var1) ? "selected" : ""; // Cette ligne permet de sélectionner la ligne dont la valeur est stocké ds la bdd
    echo "<option value='".$nom_service."' ".$selected.">".$nom_service."</option>\n";
}
?>

<INPUT TYPE='submit' name ='enregistrer' VALUE='Enregistrer'>
</form>

par cerber » 15 juin 2005, 16:39

ok => c au niveau du formulaire que se situe le probleme : il te retourne pas la bonne valeur, il la tronque ....
elle viens d'où cette valeur ? c'est l'utilisateur qui la saisie ?
Peux tu nous passer le code source (html, pas besoin du php pour l'intant) du formulaire

par renatane » 15 juin 2005, 16:35

CERBER:

CONCESSION de DISTRIBUTION PUBLIQUE d
CONCESSION de DISTRIBUTION PUBLIQUE d
CONCESSION de DISTRIBUTION PUBLIQUE d
CONCESSION de DISTRIBUTION PUBLIQUE d'argent
les longueurs diffèrent => c'est déjà pas bon
y'a une couil** dans le paté ! Sad

GUY:
service est egal à
et la requete est egale à SELECT DISTINCT id_service FROM phpgw_workf_services WHERE nom_service=''

par guy » 15 juin 2005, 16:34

$service= htmlentities($service, ENT_QUOTES);
$s= "SELECT DISTINCT  id_service FROM phpgw_workf_services WHERE nom_service='".$service."'";
// Envoi de la requête à MySQL
$results= mysql_query($s);
$seris=mysql_fetch_array($results, MYSQL_ASSOC);
$idservice=$seris['id_service'];
quel est le resultat de
echo"service est egal à $service<br>";
echo"et la requete est egale à $s<br>;"
si tu les place à la fin de ton script ?
Guy

par cerber » 15 juin 2005, 16:33

on est reparti : cette fois on affiche la valeur recue :
<?
echo $_POST['nom_service'].'<br>'.htmlentities($_POST['nom_service']).'<br>';
$service =trim($_POST['nom_service']);
if(get_magic_quotes_gpc())
    $service=stripslashes($service);
}
$serviceForce = "CONCESSION de DISTRIBUTION PUBLIQUE d'argent";
echo "$service<br>$serviceForce<br>";

$lenS  = strlen($service);
$lenSF = strlen($serviceForce);
if($lenS!=$lenSF){
	echo "les longueurs diffèrent => c'est déjà pas bon<br>";
}
$max = min($lenS,$lenSF);

for($i=0;$i<$max;$i++){
	if($service{$i}!=$serviceForce{$i}){
		echo "ca bloque au caractère $i : '"
			.$service{$i}."' contre '"
			.$serviceForce{$i}."'";
		break;
	}	
}

if(strcmp($service,$serviceForce)==0){
    echo "c'est egal ! COOL Smile <br>";
}
else{
    echo "y'a une couil** dans le paté ! :( <br>";
}
?>