Insertion sauvage de slash dans ma base de données

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 : Insertion sauvage de slash dans ma base de données

Re: Insertion sauvage de slash dans ma base de données

par stealth35 » 02 mars 2011, 22:07

pourquoi faire mysql_real_escape_string, c'est avec l'extension mysql, pas PDO, et en requete préparer pas besoin d'échapper les valeurs, je te conseil de mettre ton niveau d'erreur au maximum

Re: Insertion sauvage de slash dans ma base de données

par equiibriste » 02 mars 2011, 21:58

Bon, je m'y remet .... au niveau du php j'ai ça :


magic_quotes_gpc On On
magic_quotes_runtime Off Off
magic_quotes_sybase Off Off off

et au niveau du code j'ai ça :

<?php
global $current_user;

function stripslashes_r($var)
{
if(is_array($var))
{
return array_map('stripslashes_r', $var);
}
else
{
return stripslashes($var);
}
}

if(get_magic_quotes_gpc())
{
$_GET = stripslashes_r($_GET);
$_POST = stripslashes_r($_POST);
$_COOKIE = stripslashes_r($_COOKIE);
}



set_magic_quotes_runtime(false);

echo get_magic_quotes_gpc();

if ( isset($current_user))
	{
		if(isset($_POST['carte']))
		{
		$dsn="mysql:host=xxxxxxxx;dbname=xxxxxx";
		$login = "xxxxxxx"; $pass="xxxxxxxxxx";
		$bdd= new PDO($dsn, $login , $pass);
		$bdd->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
		
		$sql = "INSERT INTO wp_haut_lud_posts(ID, post_author, post_date, post_date_gmt, post_content, post_title, post_excerpt, post_status, comment_status, ping_status, post_password, post_name, to_ping, pinged, post_modified, post_modified_gmt, post_content_filtered, post_parent, guid, menu_order, post_type, post_mime_type, comment_count)
				VALUES ('', ?, NOW(), '', ?, ?, '', 'pending', 'open', 'open', '', '', '', '', NOW(), NOW(), '', 85, 'http://hauteursludiques.com/auteurs/', 0, 'page', '', 0)";
				$stmt= $bdd->prepare($sql);
				get_currentuserinfo();
				

				$carte_decod = htmlspecialchars_decode($_POST['carte']);

				$tmp=array(
							$user_ID,
							mysql_real_escape_string($carte_decod),
							mysql_real_escape_string($_POST['nom2']));
				$stmt->execute($tmp);
							
		}
		Else
		{
			if(isset($_POST['nom']))
			{
				?>
				<h1><?php echo $_POST['nom'];?></h1>
				<div class="carte">
				<div class="carteb1">
				<div class="carte-bordure">
				<p><img class="aligncenter size-thumbnail wp-image-103" style="border-top-width: 2px; border-top-style: solid; border-top-color: #000000; border-bottom-width: 2px; border-bottom-style: solid; border-bottom-color: black;" title="<?php echo $_POST['nom'];?>" src="<?php if($_POST['img'] !==''){echo $_POST['img'];} else { echo 'http://hauteursludiques.com/wp-content/uploads/2011/02/attente-dimage2.png';$_POST['img']='http://hauteursludiques.com/wp-content/uploads/2011/02/attente-dimage2.png';} ?>" alt="" width="214" height="150" /></p>
				<div class="hcart">
				<p>Métier : <strong><?php echo $_POST['metier'];?></strong></p>
				<p>Département : <strong><?php echo $_POST['departement'];?></strong></p>
				</div>
				<h1>Ludographie :</h1>
				<div class="edit">
				<p><strong>Jeux édités :</strong></p>
				<ul>
				<?php
				for($i=1;$i<9;$i++)
					{
					if($_POST["jeu-edite-".$i]!=='')
						{
						echo'<li><span style="font-size: 10px;">'.$_POST["jeu-edite-".$i].'</span></li>';
						}
					}

				?>
				</ul>
				</div>
				<div class="edit">
				<p><strong>Prototypes :</strong></p>
				<ul>
				<?php
				for($i=1;$i<9;$i++)
					{
					if($_POST["proto-".$i]!=='')
						{
						echo'<li><span style="font-size: 10px;">'.$_POST["proto-".$i].'</span></li>';
						}
					}

				?>
				</ul>
				</div>
				<p style="clear: both; height: 1px;"> </p>
				</div>
				</div>
				</div>

				
				<?php 
			
				
				$carte_site1 ="<div class='carte'><div class='carteb1'><div class='carte-bordure'><p><img class='aligncenter size-thumbnail wp-image-103' style='border-top-width: 2px; border-top-style: solid; border-top-color: #000000; border-bottom-width: 2px; border-bottom-style: solid; border-bottom-color: black;' title='".$_POST['nom']."' src='".$_POST['img']."' alt='' width='214' height='150'/></p><div class='hcart'><p>Métier : <strong>".$_POST['metier']."</strong></p><p>Département : <strong>".$_POST['departement']."</strong></p></div><h1>Ludographie :</h1><div class='edit'><p>Jeux édités :</p><ul>";
									

									for($i=1;$i<9;$i++)
										{
										if($_POST["jeu-edite-".$i]!=='')
											{
											$carte_site2=$cartesite2."<li><span style='font-size: 10px;'>".$_POST['jeu-edite-'.$i]."</span></li>";
											}
										}
									$carte_site2= $carte_site2."</ul></div><div class='edit'><p>Prototypes :</p><ul>";
									for($i=1;$i<9;$i++)
										{
										if($_POST["proto-".$i]!=='')
											{
											$carte_site2=$carte_site2."<li><span style='font-size: 10px;'>".$_POST["proto-".$i]."</span></li>";
											}
										}
									$carte_site2 = $carte_site2."</ul></div><p style='clear: both; height: 1px;'></p></div></div></div>";?>
					
						<?php echo $carte_site1.$carte_site2;?>
				<form action="http://hauteursludiques.com/debuter/nouvel_auteur/" method="post" enctype="multipart/form-data">	
				<input type="hidden" name="nom2" value="<?php $_POST['nom'];?>">	
				<input type="hidden" name="carte" value="<?php echo $carte_site1.$carte_site2; ?>">
				<input type="submit" value="valider ma carte">	
		
				






















				<?php
			}
			Else
			{
				?>
				<form action="http://hauteursludiques.com/debuter/nouvel_auteur/" method="post" enctype="multipart/form-data">
				Vos nom et prénom : <input type="text" value="" name="nom"><br/>
				url de votre image (largeur:212px) : <input type="text" name="img"><br/><br/>
				<div class="carte" style="width:400px; margin-right:50px;">
				<div class="carteb1">
				<div class="carte-bordure"><p><img class="aligncenter size-thumbnail wp-image-103" style="border-top-width: 2px; border-top-style: solid; border-top-color: #000000; border-bottom-width: 2px; border-bottom-style: solid; border-bottom-color: black;" title="Baby-Boom-sourd" src="http://hauteursludiques.com/wp-content/uploads/2011/01/Baby-Boom-sourd1-214x150.jpg" alt="" width="214" height="150" /></p>

				<div class="hcart"><p>Métier : <input type="text" name="metier"></p>

				<p>Département : <input type="text" name="departement"></p></div>
				<h1>Ludographie :</h1>
				<div class="edit" style="width:160px;"><p><strong>Jeux édités :</strong></p>
				
				<ul>
				<li><input type="text" name="jeu-edite-1"></li>
				<li><input type="text" name="jeu-edite-2"></li>
				<li><input type="text" name="jeu-edite-3"></li>
				<li><input type="text" name="jeu-edite-4"></li>
				<li><input type="text" name="jeu-edite-5"></li>
				<li><input type="text" name="jeu-edite-6"></li>
				<li><input type="text" name="jeu-edite-7"></li>
				<li><input type="text" name="jeu-edite-8"></li>
				</ul>
				</div>
				<div class="edit"><p><strong>Prototypes :</strong></p>

				<ul>
				<li><input type="text" name="proto-1"></li>
				<li><input type="text" name="proto-2"></li>
				<li><input type="text" name="proto-3"></li>
				<li><input type="text" name="proto-4"></li>
				<li><input type="text" name="proto-5"></li>
				<li><input type="text" name="proto-6"></li>
				<li><input type="text" name="proto-7"></li>
				<li><input type="text" name="proto-8"></li>
				</ul>
				</div>

				<p style="clear: both; height: 1px;"> </p></div>
				</div>



				</div>
				<input type="submit" value="créer ma carte"></form>
				<?php 
			}
		}
	}
	else
	{
	echo 'Merci de vous connecter';
	}
?>

bien sûr, tout celà ne fonctionne pas parfaitement, j'ai toujours quand je soumet le formulaire pour la seconde fois et que ca l'envoie à la bdd des antislashes qui s'ajoutent avant les guillemmets...

sionon, pour tout le reste, ca marche nickel (y compris l'affichage une fois que j'ai enlever les antislash manuellement.....)


avez vous une idée pour me débloquer???

Merci d'avance...

Max

Re: Insertion sauvage de slash dans ma base de données

par moogli » 17 févr. 2011, 00:43

la fonction de base http://www.php.net/ini_set qui mène vers l'annexe de la doc et donc à
magic_quotes_gpc "1" PHP_INI_PERDIR PHP_INI_ALL en PHP <= 4.2.3. Obsolète en PHP 5.3.0. Cette fonctionnalité obsolète sera certainement supprimée dans le futur.
magic_quotes_runtime "0" PHP_INI_ALL Cette fonctionnalité obsolète sera certainement supprimée dans le futur.
magic_quotes_sybase "0" PHP_INI_ALL Cette fonctionnalité obsolète sera certainement supprimée dans le futur.
magic_quote_gpc :
Fixe le mode magic_quotes pour les opérations GPC (Get/Post/Cookie). Lorsque magic_quotes est activé, tous les caractères ' (guillemets simples), " (guillemets doubles), \ (antislash) et NUL sont échappés avec un antislash.

magic_quote_runtime
Si magic_quotes_runtime est activé, toutes les fonctions qui obtiennent des données auprès d'une source externe, y compris les bases de données et les fichiers texte, verront leur guillemets échappés avec un antislash. Si magic_quotes_sybase est aussi activé, les guillemets simples seront échappés avec un autre guillemet simple, plutôt qu'un antislash.

magic_quote_sysbase
Si magic_quotes_sybase est aussi activé, un guillemets simple est échappé avec un guillemet simple au lieu d'un antislash, si magic_quotes_gpc ou magic_quotes_runtime est activé. Cette directive est aussi respectée par les fonctions addslashes() et stripslashes().


Toute ces options de configuration sont obsolètes depuis php5.3.
- a tu supprimer les \ dans la base de donnée ? c'est la 1ère chose à faire une fois fait cela va régler ton soucis d'affichage. lorsque toute les directive magic_quote seront à OFF !

si les directives ne peuvent être mise à off il faut gérer ce comportement à l'avance.

@+

Re: Insertion sauvage de slash dans ma base de données

par equiibriste » 16 févr. 2011, 10:56

Rien a faire, je trouve de la doc sur comment mettre à off les différentes directives magic_quote. D'ailleurs, je ne trouve même pas de liste de ces directives :s.....


si jamais vous avez une piste à me donner sur comment faire, je suis preneur

Merci d'avance...

Max, un peu décu de pas avoir trouvé tout seul .....

Re: Insertion sauvage de slash dans ma base de données

par equiibriste » 13 févr. 2011, 21:14

Je vais tenter de mettre à off toutes les directives magic quotes sans toucher au php.ini ni au .htdocs , mais je sais pas trop comment faire, je vais essayer de trouver....

:) si jamais je trouve, je vous tiens au courrant, sinon, je vous appellerai au secours !

merci de vos réponses.

Max

Re: Insertion sauvage de slash dans ma base de données

par moogli » 13 févr. 2011, 14:03

Salut,

Pour les supprimer soit tu le fait a la main avec, par exemple, phpmyadmin si y en a pas trop. Sinon un script bourrin qui recupere tous les tuples dans le while de traitement un preg_replace() avec l'expression reguliere qui va bien pour supprimer tous les n \ qui sont devant ' ou " dans chaque champs et derriere un simple update.

Tu peut masquer ce comportement en ne le faisant qu'a l'affichage mai ce vraimenr pas une solution ;)

Avant toute chose il faut mettre a off toutes les directives magic_quote (et pas que gpc ;) ).


@+

Re: Insertion sauvage de slash dans ma base de données

par stealth35 » 13 févr. 2011, 05:34

Le problème c'est que les antislashs persistent à apparaitre dans les nouvelles entrées....
je ne comprends vraiment pas pourquoi...

si quelqu'un peu m'aider...ça me sauverai ^^

@ modo : je m'ocuppe de changer de titre désolé. EDIT : Ah mais c'est déjà fait !!!! merci ^^
je t'ai dis faut les supprimer dans ta base

Re: Insertion sauvage de slash dans ma base de données

par equiibriste » 12 févr. 2011, 22:55

Le problème c'est que les antislashs persistent à apparaitre dans les nouvelles entrées....
je ne comprends vraiment pas pourquoi...

si quelqu'un peu m'aider...ça me sauverai ^^

@ modo : je m'ocuppe de changer de titre désolé. EDIT : Ah mais c'est déjà fait !!!! merci ^^

Re: Insertion sauvage de slash dans ma base de données

par zeus » 12 févr. 2011, 10:35

Modération :
Merci d'utiliser un titre clair et qui correspond bien à ta demande.
Les titres contenant "HELP !", "Aidez-moi", "J'ai un problème", "Ça marche pas",...
n'apportent rien à la compréhension de ta demande.

Par ailleurs, nous savons déjà par ton message que tu as besoin d'aide. ;)

Merci de prendre le temps de lire les règlements.

Re: de l'aide ..... s'il vous plais !

par stealth35 » 12 févr. 2011, 03:51

Personne n'a de pistes ? ?? :(
il va falloir prendre tout les anciens enregistrement, faire un stripslashe dessus et ensuite les re importer

Re: de l'aide ..... s'il vous plais !

par equiibriste » 12 févr. 2011, 00:12

Personne n'a de pistes ? ?? :(

Re: de l'aide ..... s'il vous plais !

par equiibriste » 11 févr. 2011, 23:47

Pour info, j'ai utilisé ce code pour viré les deux premières paires d'antislash :

Code : Tout sélectionner

if (get_magic_quotes_gpc()) { $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST); while (list($key, $val) = each($process)) { foreach ($val as $k => $v) { unset($process[$key][$k]); if (is_array($v)) { $process[$key][stripslashes($k)] = $v; $process[] = &$process[$key][stripslashes($k)]; } else { $process[$key][stripslashes($k)] = stripslashes($v); } } } unset($process); }
il reste un antislash avant chaque apostrophe....

Re: de l'aide ..... s'il vous plais !

par equiibriste » 11 févr. 2011, 23:41

j'ai modifier le code de mon formulaire :

Code : Tout sélectionner

<form action="http://hauteursludiques.com/debuter/nouvel_auteur/" method="post" enctype="multipart/form-data"> <input type="hidden" name="nom2" value="<?php echo $_POST['nom'];?>"> <input type="hidden" name="carte" value="<?php echo stripslashes($carte_site1.$carte_site2) ?>"> <input type="submit" value="valider ma carte">
Mais ce ne change rien, les antislashes sont toujours là :(

Re: de l'aide ..... s'il vous plais !

par xTG » 11 févr. 2011, 23:36

Voir la fonction stripslashes(). :)

Re: de l'aide ..... s'il vous plais !

par equiibriste » 11 févr. 2011, 23:14

oui, mais comment ? :)