Bonjour tout le monde,
Postez dans ce topic toutes vos questions concernant la programmation, le développement ou plus globalement le codage
Amis geeks bonjour !
Édit : Ico
Je me suis permis d'éditer car si on parle de codage, il faut bien entendu utiliser la balise code.
Dernière édition par ico le 08/04/2010 à 11:11
Je suis en train de créer un site générateur de site. En gros il fonctionne de façon autonome et est capable de lui même de générer la base de donnée qui elle même contient le site
Mon problème est le suivant. toute me pages sont au format HTML et on peut saisir une nouvelle page par le biais d'un formulaire. Seulement il y a un "mais". Je ne veux autoriser que le HTML sans autorisé le javascript ni les injections sql. J'ai essayer le code suivant, qui est une bonne alternative mais qui laisse dans la base du code !!!
<?php
//Retire les caractères spéciaux
$page_saisie = mysql_real_escape_string(trim($_POST['page_saisie']));
echo $page_saisie;
?>
Existe-il une meilleure solution ?
Merci
Dernière édition par Raptor le 07/04/2010 à 14:11
Bon déjà idéalement il faut enregistré le texte tel que saisie par le gus. Tu le traites en sortie.
Ne pas enlever de choses avant insertion en base, si ce n'est un trim() et un real_escape_strng ou un addslashes à la place.
Je te conseille de faire une fonction de préparation de la chaine à l'insertion en base.
Ensuite il faudra une fonction d'affichage de la chaine sortie de la base, qui elle s'assurera de ne pas afficher les choses interdites.
Il vaut mieux faire comme ça pour la simple et bonne raison que si un jour ta philosophie d'affichage change, ben tu peux l'appliquer aux nouvelles données et tu n'as rien perdu.
Ok chef.
Je vais donc faire ainsi. Mettre real_escape_strng et traiter en sortie. Par contre a tu un exemple de traitement en sortie? Ou un site proposant des indications en ce sens ?
Alors je te propose donc quelques fonctions :
Une pour préparer la chaine avant insertion.
<?php
# Préparation de la chaine pour insertion en base
function prepareChaine($chaine) {
$chaine = trim($chaine);
$chaine = mysql_real_escape_string($chaine);
return $chaine;
}
?>
Une seconde qui sert a nettoyer les tags non désirés.
<?php
# Fonction de nettoyage des tags non désirés
# http://www.php.net/manual/en/function.strip-tags.php#86964
function strip_tags_content($text, $tags = '', $invert = FALSE) {
preg_match_all('/<(.+?)[\s]*\/?[\s]*>/si', trim($tags), $tags);
$tags = array_unique($tags[1]);
if(is_array($tags) AND count($tags) > 0) {
if($invert == FALSE) {
return preg_replace('@<(?!(?:'. implode('|', $tags) .')\b)(\w+)\b.*?>.*?</\1>@si', '', $text);
}
else {
return preg_replace('@<('. implode('|', $tags) .')\b.*?>.*?</\1>@si', '', $text);
}
}
elseif($invert == FALSE) {
return preg_replace('@<(\w+)\b.*?>.*?</\1>@si', '', $text);
}
return $text;
}
?>
Et enfin ta fonction qui affiche ta chaine comme tu le souhaites.
<?php
Function affichageZaza($chaine) {
# On vire les balises scripts
$chaine = strip_tags_content($chaine, '<script>', TRUE);
return $chaine
}
?>
Vala
... ou comment me démoraliser avant que je me lance dans mon "mini site"...
Mais nan t'as pas besoin de ça
Intéressant cette langue ! ça vient d'où ???
Tribue disparue du Chili ancien
C'est pas si compliqué, je commence à tout comprendre
strip sting insertion return c'est pas compliqué votre language je connais.
Du coup on sait pas si ça lui va à ico
Strip String Insertion Return
me va très bien si elle est blonde à forte poitrine
Spoiler. Cliquez dans le cadre pour voir le message. (comme celles qu'on voie sur les circuits de F1)
Plus sérieusement ça me va très bien.
Je ne comprenais pas bien ou tu voulais en venir au départ mais la je comprends parfaitement.
Merci beaucoup Raptor.
Je reviens un peu à la charge ce matin, avec une nouvelle question.
Je suis en train de réviser mon algorithme pour le système de connexion avec authentification par cookie.
<?php
/*
Au moment de la connexion
Si le case "se souvenir de moi" est validée
VarMdp <- MD5(login)
VarCookie <- [checksum]+[%%]+[pseudo]+[%%]+[VarMdp]
Création d'un temps de 6 mois de sauvegarde du cookie
Création d'un cookie
Retour au log
Sinon, on log directement
*/
?>
Bon là où ça se corse, c'est au niveau de l'entrée du visiteur.
<?php
/*
Au moment d'entrée sur le site
Si un cookie existe
On extrait pseudo et login
On test si in compte existe
Si il existe
On log
Sinon on détruit le cookie
Et on relance la page de connexion
Sinon
On relance la page de connexion
*/
?>
Peut-on faire mieux ?
Whoa c'est vachement compliqué à ce que je vois
J'ai failli être dans l'informatique, heureusement que j'y suis pas
Boarf mais non, il a rien mis à part des phrases en commentaire là, y a pas de code
Heuresement qu'il a pas de langage java et autre