EstevanTH
Messages postés7Date d'inscriptionlundi 12 avril 2010StatutMembreDernière intervention26 juillet 2010 13 févr. 2008 à 22:39
Bon, quelqu'un vient de me solutionner le souci : la donnée 'files_up' en question n'était pas correctement référencée dans le admin.php ! Je propose donc aux auteurs de ce blog de mettre à jour. J'ai un lien pour vous vers le fichier modifié :
http://blog.thouvest.dyndns.info/fichiers_modifies/admin.rar Merci à Jérémy A. pour sa solution.
EstevanTH
Messages postés7Date d'inscriptionlundi 12 avril 2010StatutMembreDernière intervention26 juillet 2010 13 févr. 2008 à 19:10
Je vais alors devoir faire mon blog en HTML et me dispenser de commentaires avec une base MySQL, sauf avec un script externe...
Pourtant, le script fonctionne sur le site de démonstration puisqu'il y a des articles ! Peut-être un souci avec Windows...
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 13 févr. 2008 à 11:14
c'est super drole le commentaire precedent...
la source ne foncitonne pas donc c'est php qui merde ?
en l'occurence, c'est du sql, mais bon...
et c'est plus la creation de la table sql que mysql qui a un probleme, ca vient donc de ce script
EstevanTH
Messages postés7Date d'inscriptionlundi 12 avril 2010StatutMembreDernière intervention26 juillet 2010 13 févr. 2008 à 00:14
Je suppose que c'est PHP qui ne fonctionne pas parfaitement, mais quand j'ajoute un article, avec ou sans image, avec ou sans fichier joint, j'obtiens toujours le message d'erreur suivant et l'article n'est pas ajouté :
Field 'files_up' doesn't have a default value
Savez-vous d'où ce problème peut venir ? Merci.
cs_almux
Messages postés8Date d'inscriptionjeudi 13 octobre 2005StatutMembreDernière intervention18 février 2011 12 nov. 2007 à 09:51
Bonjour,
Pour le cas où l'on voudrait donner des leçons de langue avec ton shéma de blog (en l'occurance de l'intergalacte standard!), avec plusieurs degrés d'apprentissage, est-il possible de donner plusieurs "niveaux" d'autorisation à un élève pour qu'il accède aux cours par étapes?
Merci, almux
tridardp
Messages postés1Date d'inscriptionlundi 19 juin 2006StatutMembreDernière intervention13 juillet 2007 13 juil. 2007 à 10:39
Bonjour
Etant sous-doué en informatique, enfin surtout quand il s'agit de programmation PHP Java ou autre, j'aurais aimé que vous puissiez nous dire à FDIEDLER2000 comment faire (ou un lien vers un tuto) pour installer ce joli blog. Bien sur je me doute que cette question puisse paraitre idiote, il y a des ingénieurs électronique qui n'ont pas trop le temps de se pencher sur le PHP...
Alors dans Votre Grande Clémence je vous implore, pourriez vous nous indiquer la marche a suivre :) ?
Merci d'avance à tous.
fdiedler2000
Messages postés383Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention 1 décembre 2008 1 mai 2007 à 20:06
Comment on installe ce blog ? Merci
toptanco
Messages postés3Date d'inscriptiondimanche 22 mai 2005StatutMembreDernière intervention21 janvier 2007 25 avril 2007 à 06:01
est-il possible d'avoir le script du lecteur mp3 qoe vous avez sur le site de demo
thnx
cs_Sylvian1
Messages postés5Date d'inscriptionjeudi 2 mars 2006StatutMembreDernière intervention 7 avril 2010 7 mars 2006 à 12:23
Bonjour,
J'aimerai utiliser ce code mais j'ai un problème.. j'aimerai ajouter un prefixe aux tables... mais niveau php je suis pas au top (je suis designer) quelqu'un pourrait m'aider ? (ou le faire pour moi... un eventuel echange de procédé serait envisageable)
Contact via MSN si possible: sylvainmeunier@msn.com
Merci d'avance.
NaeiKinDus
Messages postés51Date d'inscriptionmercredi 12 octobre 2005StatutMembreDernière intervention 3 août 2007 14 nov. 2005 à 20:59
Mise à jour :)
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 31 oct. 2005 à 09:38
if ( is_int($id) && $id!== 0 )
renvoi toujours false car ici, $id est une chaine de caractère, pas un int....
on peut à la limite faire des benchs entre :
$id=(int)$id;
et
$id=intval($id);
mais ça n'est pas super important...
J'utilises souvent ces conversions moi aussi, ça permet de ne mettre que des nombres dans une requette SQL, c'est très pratique, et je ne vois pas en quoi c'est crade...
Naixn
Messages postés455Date d'inscriptionmardi 17 septembre 2002StatutMembreDernière intervention22 juillet 2007 31 oct. 2005 à 07:56
Si dans une URL, quelqu'un rentre ?id=46ABC, le cast renvera 46, ce qui permet de ne pas avoir d'erreur, d'où l'avantage ?
NaeiKinDus
Messages postés51Date d'inscriptionmercredi 12 octobre 2005StatutMembreDernière intervention 3 août 2007 31 oct. 2005 à 01:50
Si je me souviens bien, c'est un cast pour forcer le type int, car le script reçois un string... ce n'est pas moi qui ai codé ca, mais mon collège a voulu, je crois, uniquement tester le $id !== 0, pas si $id est un int... d'où le cast !
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 30 oct. 2005 à 22:38
"$id=(int)$id;
if ($id!==0){
//requette
}else{
echo 'ERREUR !!!';
}"
Ou
if ( is_int($id) && $id!== 0 ) {
//
} else {
//
}
A voir ce qui est plus rapide.
NaeiKinDus
Messages postés51Date d'inscriptionmercredi 12 octobre 2005StatutMembreDernière intervention 3 août 2007 26 oct. 2005 à 11:29
Mis à jour :)
NaeiKinDus
Messages postés51Date d'inscriptionmercredi 12 octobre 2005StatutMembreDernière intervention 3 août 2007 19 oct. 2005 à 10:30
Je vais faire un petit truc sympathique : j'affiche un formulaire avec un seul champs upload, et si l'admin clique sur un bouton "un de plus", j'envoie le formulaire avec un champs caché que j'incrémenterai ! Enfin c'est bon, je devrais y arriver :)
Et oui, en théorie, l'admin est responsable, donc les injections sql, defacages, ou autres, quand seul l'admin peut le faire, n'est pas trop grave... (ca relève juste d'une structure de code pas top)
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 18 oct. 2005 à 19:02
j'en ai fait un pour autre chose... C'est pas hyper compliqué, renseignes soit sur innerHTML...
Mais t'es pas obligé de les uploader sur le même formulaire (pour mon blog, j'ai pas fait comme ça, et ça marche très bien...)
Bon, sinon, t'es pas obligé de vérifier le type comme tu le rentre dans une base SQL, le fichier le sera pas exécutable... De plus, l'admin est cencé être qqn de responsable...
NaeiKinDus
Messages postés51Date d'inscriptionmercredi 12 octobre 2005StatutMembreDernière intervention 3 août 2007 18 oct. 2005 à 14:40
Oui, là tu as bien saisi ma question :)
J'ai cherché, et apparement, seul JS permet de faire un joli truc... je vais voir si je peux m'en dépatouiller !
monoceros01
Messages postés420Date d'inscriptionvendredi 28 novembre 2003StatutMembreDernière intervention20 mars 2006 18 oct. 2005 à 13:00
ooh! oki autant pour moi =)
Mais personnellement j'aime pas devoir remplir une liste de champs file... c'est... prise de tête!
Pour ta question (que j'ai mieux comprise je l'espère) phpbb utilise bien évidemment du javascript pour ajouter les champs un par un et cela me semble la meilleure solution face au problème que tu exposes.
Une autre solution serait de mettre un champ où tu demanderais combien de fichier tu veux uploader, et php génèrerait la page avec le nombre voulu de champs files. Mais des fois on se trompe, et si on a remplis 14 champs files et qu'on se rend compte qu'il nous en faut un 15°, on a plus qu'a tout recommencer car recharger la page efface les champs files (du moins sur firefox et internet explorer si je ne m'abuse)
Même si je n'aime pas le javascript (allergie congénitale) il me semble que c'est la meilleure solution. Tu n'as plus qu'a décortiquer le javascript de phpbb pour piger comment ça marche :p
(En espérant avoir été plus utile <_<)
NaeiKinDus
Messages postés51Date d'inscriptionmercredi 12 octobre 2005StatutMembreDernière intervention 3 août 2007 18 oct. 2005 à 12:48
Ce n'est pas ce que je demandais monoceros :)
Je sais comment gérer l'upload de plusieurs fichiers, je me posais juste la question de pouvoir ajouter x champs pour uploader les fichiers ;)
monoceros01
Messages postés420Date d'inscriptionvendredi 28 novembre 2003StatutMembreDernière intervention20 mars 2006 18 oct. 2005 à 12:03
Pour mettre plusieurs fichiers en fichier joint (je comprends par là "pour envoyer plusieurs fichiers en même temps sur le serveur via un forumlaire html"), il y a la possibilité (si le serveur le permet) de pouvoir uploader un fichier compressé contenant les fichiers que tu veux envoyer. C'est la méthode la plus efficace que je connaisse.
Pour la vérification du type d'un fichier, il y a la possibilité d'utiliser la variable $_FILES['userfile']['type'] (voir http://www.nexen.net/docs/php/annotee/features.file-upload.post-method.php) Sinon, après avoir cherché un peu, il me semble qu'on ne puisse contrôler que le type MIME des fichiers images.
Mais le plus important est, il me semble, de vérifier si le client mal intentionné (ou le vilain!) n'envoie pas un fichier pouvant être executé côté serveur. Donc interdire l'upload de fichiers dont l'extensione est .php ou .php3
NaeiKinDus
Messages postés51Date d'inscriptionmercredi 12 octobre 2005StatutMembreDernière intervention 3 août 2007 18 oct. 2005 à 10:10
Je suis en train de regarder comment mettre en fichier joint plus fichiers, mais je ne sais pas trop comment faire.. j'avais pensé au principe de phpbb avec les sondes, en ajoutant un bouton pour ajouter un champs, mais je ne sais pas trop comment faire... et sinon comment savoir à coup sûr le type d'un fichier?
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 17 oct. 2005 à 18:50
plutôt que le BBcode, tu peux penser à un éditeur WYSIWYG...
pour ce que j'ai dit des uploads : vas voir sur mon blog : http://coucou747.hopto.org, j'ai autorisé l'upload de fichiers autres que les fichiers images, et mieux : je leurs mets une icone corespondant... J'ai bientôt finit le colorateur synthaxique... j'ajouterais peut-être un éditeur d'expressions mathématiques (prochain projet), une newsmletter, un formulaire pour conseiller le site à un amis ... Bref, on peut uploader autre chose que des images, et ces fichiers sont traités comme tels...
NaeiKinDus
Messages postés51Date d'inscriptionmercredi 12 octobre 2005StatutMembreDernière intervention 3 août 2007 17 oct. 2005 à 11:41
Oups, errata, j'ai oublié de finir ma phrase :
"Les mots clefs en majuscules/minuscules, ainsi que la réécriture de certaines requêtes (élimination des "SELECT *" et des doubles quotes).." ... seront pour plus tard car on devra revérifier toutes nos sources avant la version finale :)
NaeiKinDus
Messages postés51Date d'inscriptionmercredi 12 octobre 2005StatutMembreDernière intervention 3 août 2007 17 oct. 2005 à 10:47
Merci encore pour vos avis :)
Concernant la qualité différente du code que tu as noté, Coucou, c'est parceque nous sommes deux à travailler ! Moi principalement sur la partie Administration, mon collègue, Jypees, sur la partie Visite (mais chacun a un peu touché le code de l'autre).
Alors, pour le mkdir tout moche, c'est réglé.
Pour la regex, j'ai corrigé, je ne savais pas que ces caractères étaient disponibles dans les adresses email Ô_o
Pour ton problème, coucou, qui te fais revenir sur le formulaire automatiquement, si tu as bien rempli en premiers lieux le formulaire, un install.lock aurait dû se créer, empêchant le réaffichage du formulaire d'installation...
Les mots clefs en majuscules/minuscules, ainsi que la réécriture de certaines requêtes (élimination des "SELECT *" et des doubles quotes)..
Sinon, je ne comprends pas trop ton histoire d'extension pour les fichiers image... comme me l'avait conseillé Immortalpc, j'ai basé le reconaissance d'un fichier image sur le type mime...
Finalement, pour tes remarques sur le peu de possibilités, sache que nous travaillons dessus :)On avait voulu mettre le projet en cours de construction ici avant sa sortie officielle pour avoir des critiques pertinentes sur notre travail durant sa mise en oeuvre pour éviter d'avoir une grosse part de code à retravailler, et avoir des idées... Le moteur de recherche est prévu, on va essayer de faire une sorte de bbCode personnel (un peu archaïque, mais bon, ca sera "Made by Nous" ^_^), éventuellement, je dis bien éventuellement, la gestion de plusieurs images pour un article, l'ajout de fichiers à downloader par un admin esra aussi mise au point, un systeme de messagerie pour prendre contact avec l'admin est à l'étude aussi (plus pratique que d'envoyer un mail)...
monoceros01
Messages postés420Date d'inscriptionvendredi 28 novembre 2003StatutMembreDernière intervention20 mars 2006 17 oct. 2005 à 04:17
Et pis... bon... j'ai pas lu la source du tout mais il semblerait que
mysql_query("DELETE FROM `coms` WHERE `id_coms` = $id");
Soit la requète d'un administrateur pour supprimer un... commentaire je dirais...
Enfin quoiqu'il en soit, je connais pas beaucoup de blog qui permette à un visiteur de supprimer quoique ce soit dans la base. Donc mis à part si l'administrateur s'amuse à se faire lui-même des injection SQL par délire schyzophrène (oui protégeons-nous contre notre follie :p), je ne vois pas trop l'intérêt de protéger ce qui se trouve dans cette clause WHERE.
Là le problème se trouverait d'abord dans la sécurité de la zone d'administration.
De plus, il ne me viendrais jamais a l'esprit de metre un htmlentities dans une clause WHERE à moins d'avoir appliqué cette fonction avant d'insérer/updater des données dans la base. Ce qui est pas génial, parce que ça peut augmenter la taille de la chaîne de caractère pour la même information. Faut économiser sa pov' base =)
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 16 oct. 2005 à 11:36
je trouves cette solution assez simpathique... on peut aussi remplacer le (int)$id par intval($id), je ne sais pas ce qui est le plus rapide...
ImmortalPC
Messages postés954Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention11 novembre 20082 15 oct. 2005 à 23:34
Oui je c'est mais j'ai préféré faire simple et je ne me souvenais plus de la syntax correcte.
Il y a la meme fonction mais en plus simple : mysql_escape_string
Elle protège jsute les caratères " et '
Mais il est vrais qu'elle est mieux adapté.
@+
monoceros01
Messages postés420Date d'inscriptionvendredi 28 novembre 2003StatutMembreDernière intervention20 mars 2006 15 oct. 2005 à 23:03
ImmortalPC tu à écrit
> 7)
> MySQL:
> Potrection des champs !!!!
> mysql_query("DELETE FROM `coms` WHERE `id_coms` = $id");
> ----
> mysql_query("DELETE FROM `coms` WHERE `id_coms` = ".htmlentities($id).";");
mais il me semble que la fonction "mysql_real_escape_string()" ( voir sur http://fr2.php.net/manual/fr/function.mysql-real-escape-string.php ) est la plus adéquate dans ce cas là =) (evidemment il faut mettre des stripslashes() aux données renvoyées par les formulaires si "magic_quotes_gpc" est à on )
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 15 oct. 2005 à 12:45
j'ai retenté (suite à ta mise à jour) d'installer ton blog, et j'ai remarqué quelques petites choses :
lors de l'installation, une fois l'installation terminée, on revient automatiquement sur le formulaire, ce qui est assez désagréable...
On n'a pas beaucoups de possibilitées avec ton blog, je n'ai pas testé la façon dont il gérait les images, mais aparement, on ne peut pas faire de catégories d'articles, ni mettre plusieurs images par articles... c'est domage...
Tu n'as pas non plus de moteur de recherche...
Ce blog est très joli, mais reste au niveau de skyblog... Et encore, sur skyblog, tu as la possibilitée d'ajouter des liens...
coté code :
tu n'es pas super régulier, mais je suposes que c'est du au fait que tu t'es amélioré pendant la conception du blog :
$query = mysql_query("SELECT * from `administrateur` LIMIT 0,1");
ligne 4 dans le fichier administrator/admin_panel.php tu utilises des doubles quotes, et ta requette comporte une étoile, ce qui peut être mauvais, car même si la tu utilises tout les champs, en cas d'ajouts de colones dans ta table, alors ta requette ne restera pas optimisée...
sinon, tu n'utilises pas assez de CSS :
size="64"
if (preg_match("!^[a-z0-9_.-]+@[a-z0-9_.-]{2,}\.[a-z]{2,4}$!", $email))
ton expression régulière est mauvaise car dans un mail, on a le droit aux caractères suivants : + { et }
bon, sinon, on croise parfois des mots clefs en majuscules, et parfois en minuscules, faut être rigoureux dans ce que l'on fait, mais c'est pas trop grave...
aparement, tu limites aussi ton admin aux fichiers images, mais tu le fais par les extentions, c'est une mauvaise solution, mais pourquoi cette limite aux fichiers images ?
tu pourrais te faire des fonctions pour les dates par exemple...
$taille = getimagesize("$image");
$width = $taille[0];
$height = $taille[1];
mais quelle horeur ! met plutôt :
list($width, $height)= getimagesize($image);
sinon, t'as laissé des : <? par exemple au fichier : includes/info_membre.php
mkdir("". $path . "avatar");
ça aussi c'est très joli : mkdir($path . 'avatar');
ImmortalPC
Messages postés954Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention11 novembre 20082 14 oct. 2005 à 21:54
Très bien ;-)
C'est bon si tu vides les anciens, valeurs avec un unset c'est ok.
Dommage on peut pas changer la note en 10/10 ;-)
@+
NaeiKinDus
Messages postés51Date d'inscriptionmercredi 12 octobre 2005StatutMembreDernière intervention 3 août 2007 14 oct. 2005 à 17:21
Bon, concernant les foreach, j'ai ajouté une ligne pour unseter les anciennes variables récupérées (depuis les GET, POST, et un array). Pour tes remarques, Immortal-PC, les numéros 1,2 et 3 c'est bon, pour la 4, j'ai gardé les foreach, j'ai ajouté des unset, pour la 5, j'ai ajouté deux index.html dans les dossiers administrator et includes, remarques 9 et 10 corrigés, 11 et 12 idem :)
ImmortalPC
Messages postés954Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention11 novembre 20082 13 oct. 2005 à 13:05
Oui mais surcharger le serveur pour rien :-/
Une boucle pour créer chaque variable
et les anciennes variables $_POST ou $_GET sont encore chargées.
Alors que la simplicité est à porté de main.
Mais dans tout les cas la source est très bien codé.
@+
Naixn
Messages postés455Date d'inscriptionmardi 17 septembre 2002StatutMembreDernière intervention22 juillet 2007 13 oct. 2005 à 10:35
1) "à condition de bien gérer le contenu de la variable"
> a ce niveau là, utiliser $_POST['toto'] ou $toto = $_POST['toto'], c'est un peu (beaucoup la même chose, il faut gérer le contenu de la variable.
2) Après la perte de temps... Ouais peut-être, mais elle n'est pas forcément significative ici.
ImmortalPC
Messages postés954Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention11 novembre 20082 13 oct. 2005 à 10:31
Salut,
1) "à condition de bien gérer le contenu de la variable" !!!
2) Perte de temps alors que l'on peut faire plus simple.
++
ImmortalPC
Messages postés954Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention11 novembre 20082 13 oct. 2005 à 10:30
"à condition de bien gérer le contenu de la variable" !!!
Naixn
Messages postés455Date d'inscriptionmardi 17 septembre 2002StatutMembreDernière intervention22 juillet 2007 13 oct. 2005 à 01:12
foreach($_POST as $key => $value)
{
$$key = $value;
}
Quelle différence exactement ?
Parceque entre
$test = "toto";
et
$test = $_POST['toto'];
niveau sécurité, c'est entre guillement pareil (à condition de bien gérer le contenu de la variable), non ?
Si c'est le cas, je vois pas pourquoi ça pose problème de faire cette boucle ?
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 12 oct. 2005 à 15:13
y a un truc qui est nul :
ta requette de création de table ne contient pas IF NOT EXISTS ce qui fait que si l'install a un problème, on ne peut pas la recommencer sans supprimer la table (exemple : si t'as pas mis les droits...)
bon, à part ça, ça ne marque pas chez moi, je suposes que c'est à cause de register_globals...
il cré la BDD et ne veut pas enregistrer mon pseudo et tt ça dedans...
(j'ai pas dis que je voulais l'utiliser, mais juste tester...)
ImmortalPC
Messages postés954Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention11 novembre 20082 12 oct. 2005 à 14:21
Salut,
Auniveau du codage y' a des truc qui peuvent être simplifié et la sécurité peut être amélioré mais si non c' est tout nikel.
1)
echo mysql_error();
die();
-------
die(mysql_error());
mysql_query peut être remplacé par une fonction ou une class pour mieux gérer les érreurs et autre..
2)
isset($_POST['password2']) == TRUE
isset($_POST['password2']) == FALSE
if($toto != NULL)
------
isset($_POST['password2'])
!isset($_POST['password2'])
if(!$toto) ou encore if(!empty($toto))
3)
echo 'toto'
echo 1;
echo 'toto',$toto;
Les 3 formes les plus rapide d' echo
4)
While est plus rapide que foreach
foreach($array as $key => $value){
$$key = $value;
}
-----
while(list($key, $val) = each($array)){
$$key = $val;
}
5)
Au niveau de la protection, y' a mieux.
On ne doit pas permettre à un visiteur non solicité de lister un dossier.
Un htaccess et le tour et joué:
deny from all
Ou un index.html ou index.php, etc
6)
Hum
foreach($_POST as $key => $value){
$$key = $value;
}
Si l'on à un register_globals à off c'est pas pour rien !!!
Donc: $_POST['toto'] et pas $toto
7)
MySQL:
Potrection des champs !!!!
mysql_query("DELETE FROM `coms` WHERE `id_coms` = $id");
----
mysql_query("DELETE FROM `coms` WHERE `id_coms` = ".htmlentities($id).";");
8)
"SELECT * from" n'est pas du tout conseilé du tout !
"SELECT `id`,`toto` FROM" est mieux
9)
// Regarde si la fin du nom de fichier est jpg ou jpeg
$ext = array('jpg', 'jpeg', 'png', 'gif');
$file_ext = strtolower(substr(strrchr($fichier_name, '.'), 1));
Et encore une faille !!!
Savoir l'extention c'est bien mais savoir le mime c'est mieux :
$mime = getimagesize('monfichier');
echo $mime['mime'];
10)
Les @ devant les variables ou autres pour empêcher l'affichage d' erreurs n'est pas du tout recommandé !
11)
HTML :
Pour une meilleur compactibilité
devient
13 févr. 2008 à 22:39
http://blog.thouvest.dyndns.info/fichiers_modifies/admin.rar
Merci à Jérémy A. pour sa solution.
13 févr. 2008 à 19:10
Pourtant, le script fonctionne sur le site de démonstration puisqu'il y a des articles ! Peut-être un souci avec Windows...
13 févr. 2008 à 11:14
la source ne foncitonne pas donc c'est php qui merde ?
en l'occurence, c'est du sql, mais bon...
et c'est plus la creation de la table sql que mysql qui a un probleme, ca vient donc de ce script
13 févr. 2008 à 00:14
Field 'files_up' doesn't have a default value
Savez-vous d'où ce problème peut venir ? Merci.
12 nov. 2007 à 09:51
Pour le cas où l'on voudrait donner des leçons de langue avec ton shéma de blog (en l'occurance de l'intergalacte standard!), avec plusieurs degrés d'apprentissage, est-il possible de donner plusieurs "niveaux" d'autorisation à un élève pour qu'il accède aux cours par étapes?
Merci, almux
13 juil. 2007 à 10:39
Etant sous-doué en informatique, enfin surtout quand il s'agit de programmation PHP Java ou autre, j'aurais aimé que vous puissiez nous dire à FDIEDLER2000 comment faire (ou un lien vers un tuto) pour installer ce joli blog. Bien sur je me doute que cette question puisse paraitre idiote, il y a des ingénieurs électronique qui n'ont pas trop le temps de se pencher sur le PHP...
Alors dans Votre Grande Clémence je vous implore, pourriez vous nous indiquer la marche a suivre :) ?
Merci d'avance à tous.
1 mai 2007 à 20:06
25 avril 2007 à 06:01
thnx
7 mars 2006 à 12:23
J'aimerai utiliser ce code mais j'ai un problème.. j'aimerai ajouter un prefixe aux tables... mais niveau php je suis pas au top (je suis designer) quelqu'un pourrait m'aider ? (ou le faire pour moi... un eventuel echange de procédé serait envisageable)
Contact via MSN si possible: sylvainmeunier@msn.com
Merci d'avance.
14 nov. 2005 à 20:59
31 oct. 2005 à 09:38
renvoi toujours false car ici, $id est une chaine de caractère, pas un int....
on peut à la limite faire des benchs entre :
$id=(int)$id;
et
$id=intval($id);
mais ça n'est pas super important...
J'utilises souvent ces conversions moi aussi, ça permet de ne mettre que des nombres dans une requette SQL, c'est très pratique, et je ne vois pas en quoi c'est crade...
31 oct. 2005 à 07:56
31 oct. 2005 à 01:50
30 oct. 2005 à 22:38
if ($id!==0){
//requette
}else{
echo 'ERREUR !!!';
}"
Ou
if ( is_int($id) && $id!== 0 ) {
//
} else {
//
}
A voir ce qui est plus rapide.
26 oct. 2005 à 11:29
19 oct. 2005 à 10:30
Et oui, en théorie, l'admin est responsable, donc les injections sql, defacages, ou autres, quand seul l'admin peut le faire, n'est pas trop grave... (ca relève juste d'une structure de code pas top)
18 oct. 2005 à 19:02
Mais t'es pas obligé de les uploader sur le même formulaire (pour mon blog, j'ai pas fait comme ça, et ça marche très bien...)
Bon, sinon, t'es pas obligé de vérifier le type comme tu le rentre dans une base SQL, le fichier le sera pas exécutable... De plus, l'admin est cencé être qqn de responsable...
18 oct. 2005 à 14:40
J'ai cherché, et apparement, seul JS permet de faire un joli truc... je vais voir si je peux m'en dépatouiller !
18 oct. 2005 à 13:00
Mais personnellement j'aime pas devoir remplir une liste de champs file... c'est... prise de tête!
Pour ta question (que j'ai mieux comprise je l'espère) phpbb utilise bien évidemment du javascript pour ajouter les champs un par un et cela me semble la meilleure solution face au problème que tu exposes.
Une autre solution serait de mettre un champ où tu demanderais combien de fichier tu veux uploader, et php génèrerait la page avec le nombre voulu de champs files. Mais des fois on se trompe, et si on a remplis 14 champs files et qu'on se rend compte qu'il nous en faut un 15°, on a plus qu'a tout recommencer car recharger la page efface les champs files (du moins sur firefox et internet explorer si je ne m'abuse)
Même si je n'aime pas le javascript (allergie congénitale) il me semble que c'est la meilleure solution. Tu n'as plus qu'a décortiquer le javascript de phpbb pour piger comment ça marche :p
(En espérant avoir été plus utile <_<)
18 oct. 2005 à 12:48
Je sais comment gérer l'upload de plusieurs fichiers, je me posais juste la question de pouvoir ajouter x champs pour uploader les fichiers ;)
18 oct. 2005 à 12:03
Pour la vérification du type d'un fichier, il y a la possibilité d'utiliser la variable $_FILES['userfile']['type'] (voir http://www.nexen.net/docs/php/annotee/features.file-upload.post-method.php)
Sinon, après avoir cherché un peu, il me semble qu'on ne puisse contrôler que le type MIME des fichiers images.
Mais le plus important est, il me semble, de vérifier si le client mal intentionné (ou le vilain!) n'envoie pas un fichier pouvant être executé côté serveur. Donc interdire l'upload de fichiers dont l'extensione est .php ou .php3
18 oct. 2005 à 10:10
17 oct. 2005 à 18:50
pour ce que j'ai dit des uploads : vas voir sur mon blog : http://coucou747.hopto.org, j'ai autorisé l'upload de fichiers autres que les fichiers images, et mieux : je leurs mets une icone corespondant... J'ai bientôt finit le colorateur synthaxique... j'ajouterais peut-être un éditeur d'expressions mathématiques (prochain projet), une newsmletter, un formulaire pour conseiller le site à un amis ... Bref, on peut uploader autre chose que des images, et ces fichiers sont traités comme tels...
17 oct. 2005 à 11:41
"Les mots clefs en majuscules/minuscules, ainsi que la réécriture de certaines requêtes (élimination des "SELECT *" et des doubles quotes).." ... seront pour plus tard car on devra revérifier toutes nos sources avant la version finale :)
17 oct. 2005 à 10:47
Concernant la qualité différente du code que tu as noté, Coucou, c'est parceque nous sommes deux à travailler ! Moi principalement sur la partie Administration, mon collègue, Jypees, sur la partie Visite (mais chacun a un peu touché le code de l'autre).
Alors, pour le mkdir tout moche, c'est réglé.
Pour la regex, j'ai corrigé, je ne savais pas que ces caractères étaient disponibles dans les adresses email Ô_o
Pour ton problème, coucou, qui te fais revenir sur le formulaire automatiquement, si tu as bien rempli en premiers lieux le formulaire, un install.lock aurait dû se créer, empêchant le réaffichage du formulaire d'installation...
Les mots clefs en majuscules/minuscules, ainsi que la réécriture de certaines requêtes (élimination des "SELECT *" et des doubles quotes)..
Sinon, je ne comprends pas trop ton histoire d'extension pour les fichiers image... comme me l'avait conseillé Immortalpc, j'ai basé le reconaissance d'un fichier image sur le type mime...
Finalement, pour tes remarques sur le peu de possibilités, sache que nous travaillons dessus :)On avait voulu mettre le projet en cours de construction ici avant sa sortie officielle pour avoir des critiques pertinentes sur notre travail durant sa mise en oeuvre pour éviter d'avoir une grosse part de code à retravailler, et avoir des idées... Le moteur de recherche est prévu, on va essayer de faire une sorte de bbCode personnel (un peu archaïque, mais bon, ca sera "Made by Nous" ^_^), éventuellement, je dis bien éventuellement, la gestion de plusieurs images pour un article, l'ajout de fichiers à downloader par un admin esra aussi mise au point, un systeme de messagerie pour prendre contact avec l'admin est à l'étude aussi (plus pratique que d'envoyer un mail)...
17 oct. 2005 à 04:17
mysql_query("DELETE FROM `coms` WHERE `id_coms` = $id");
Soit la requète d'un administrateur pour supprimer un... commentaire je dirais...
Enfin quoiqu'il en soit, je connais pas beaucoup de blog qui permette à un visiteur de supprimer quoique ce soit dans la base. Donc mis à part si l'administrateur s'amuse à se faire lui-même des injection SQL par délire schyzophrène (oui protégeons-nous contre notre follie :p), je ne vois pas trop l'intérêt de protéger ce qui se trouve dans cette clause WHERE.
Là le problème se trouverait d'abord dans la sécurité de la zone d'administration.
De plus, il ne me viendrais jamais a l'esprit de metre un htmlentities dans une clause WHERE à moins d'avoir appliqué cette fonction avant d'insérer/updater des données dans la base. Ce qui est pas génial, parce que ça peut augmenter la taille de la chaîne de caractère pour la même information. Faut économiser sa pov' base =)
16 oct. 2005 à 11:36
$id=(int)$id;
if ($id!==0){
//requette
}else{
echo 'ERREUR !!!';
}
je trouves cette solution assez simpathique... on peut aussi remplacer le (int)$id par intval($id), je ne sais pas ce qui est le plus rapide...
15 oct. 2005 à 23:34
Il y a la meme fonction mais en plus simple : mysql_escape_string
Elle protège jsute les caratères " et '
Mais il est vrais qu'elle est mieux adapté.
@+
15 oct. 2005 à 23:03
> 7)
> MySQL:
> Potrection des champs !!!!
> mysql_query("DELETE FROM `coms` WHERE `id_coms` = $id");
> ----
> mysql_query("DELETE FROM `coms` WHERE `id_coms` = ".htmlentities($id).";");
mais il me semble que la fonction "mysql_real_escape_string()" ( voir sur http://fr2.php.net/manual/fr/function.mysql-real-escape-string.php ) est la plus adéquate dans ce cas là =) (evidemment il faut mettre des stripslashes() aux données renvoyées par les formulaires si "magic_quotes_gpc" est à on )
15 oct. 2005 à 12:45
lors de l'installation, une fois l'installation terminée, on revient automatiquement sur le formulaire, ce qui est assez désagréable...
On n'a pas beaucoups de possibilitées avec ton blog, je n'ai pas testé la façon dont il gérait les images, mais aparement, on ne peut pas faire de catégories d'articles, ni mettre plusieurs images par articles... c'est domage...
Tu n'as pas non plus de moteur de recherche...
Ce blog est très joli, mais reste au niveau de skyblog... Et encore, sur skyblog, tu as la possibilitée d'ajouter des liens...
coté code :
tu n'es pas super régulier, mais je suposes que c'est du au fait que tu t'es amélioré pendant la conception du blog :
$query = mysql_query("SELECT * from `administrateur` LIMIT 0,1");
ligne 4 dans le fichier administrator/admin_panel.php tu utilises des doubles quotes, et ta requette comporte une étoile, ce qui peut être mauvais, car même si la tu utilises tout les champs, en cas d'ajouts de colones dans ta table, alors ta requette ne restera pas optimisée...
sinon, tu n'utilises pas assez de CSS :
size="64"
if (preg_match("!^[a-z0-9_.-]+@[a-z0-9_.-]{2,}\.[a-z]{2,4}$!", $email))
ton expression régulière est mauvaise car dans un mail, on a le droit aux caractères suivants : + { et }
bon, sinon, on croise parfois des mots clefs en majuscules, et parfois en minuscules, faut être rigoureux dans ce que l'on fait, mais c'est pas trop grave...
aparement, tu limites aussi ton admin aux fichiers images, mais tu le fais par les extentions, c'est une mauvaise solution, mais pourquoi cette limite aux fichiers images ?
tu pourrais te faire des fonctions pour les dates par exemple...
$taille = getimagesize("$image");
$width = $taille[0];
$height = $taille[1];
mais quelle horeur ! met plutôt :
list($width, $height)= getimagesize($image);
sinon, t'as laissé des : <? par exemple au fichier : includes/info_membre.php
mkdir("". $path . "avatar");
ça aussi c'est très joli : mkdir($path . 'avatar');
14 oct. 2005 à 21:54
C'est bon si tu vides les anciens, valeurs avec un unset c'est ok.
Dommage on peut pas changer la note en 10/10 ;-)
@+
14 oct. 2005 à 17:21
13 oct. 2005 à 13:05
Une boucle pour créer chaque variable
et les anciennes variables $_POST ou $_GET sont encore chargées.
Alors que la simplicité est à porté de main.
Mais dans tout les cas la source est très bien codé.
@+
13 oct. 2005 à 10:35
> a ce niveau là, utiliser $_POST['toto'] ou $toto = $_POST['toto'], c'est un peu (beaucoup la même chose, il faut gérer le contenu de la variable.
2) Après la perte de temps... Ouais peut-être, mais elle n'est pas forcément significative ici.
13 oct. 2005 à 10:31
1) "à condition de bien gérer le contenu de la variable" !!!
2) Perte de temps alors que l'on peut faire plus simple.
++
13 oct. 2005 à 10:30
13 oct. 2005 à 01:12
{
$$key = $value;
}
Quelle différence exactement ?
Parceque entre
$test = "toto";
et
$test = $_POST['toto'];
niveau sécurité, c'est entre guillement pareil (à condition de bien gérer le contenu de la variable), non ?
Si c'est le cas, je vois pas pourquoi ça pose problème de faire cette boucle ?
12 oct. 2005 à 15:13
ta requette de création de table ne contient pas IF NOT EXISTS ce qui fait que si l'install a un problème, on ne peut pas la recommencer sans supprimer la table (exemple : si t'as pas mis les droits...)
bon, à part ça, ça ne marque pas chez moi, je suposes que c'est à cause de register_globals...
il cré la BDD et ne veut pas enregistrer mon pseudo et tt ça dedans...
(j'ai pas dis que je voulais l'utiliser, mais juste tester...)
12 oct. 2005 à 14:21
Auniveau du codage y' a des truc qui peuvent être simplifié et la sécurité peut être amélioré mais si non c' est tout nikel.
1)
echo mysql_error();
die();
-------
die(mysql_error());
mysql_query peut être remplacé par une fonction ou une class pour mieux gérer les érreurs et autre..
2)
isset($_POST['password2']) == TRUE
isset($_POST['password2']) == FALSE
if($toto != NULL)
------
isset($_POST['password2'])
!isset($_POST['password2'])
if(!$toto) ou encore if(!empty($toto))
3)
echo 'toto'
echo 1;
echo 'toto',$toto;
Les 3 formes les plus rapide d' echo
4)
While est plus rapide que foreach
foreach($array as $key => $value){
$$key = $value;
}
-----
while(list($key, $val) = each($array)){
$$key = $val;
}
5)
Au niveau de la protection, y' a mieux.
On ne doit pas permettre à un visiteur non solicité de lister un dossier.
Un htaccess et le tour et joué:
deny from all
Ou un index.html ou index.php, etc
6)
Hum
foreach($_POST as $key => $value){
$$key = $value;
}
Si l'on à un register_globals à off c'est pas pour rien !!!
Donc: $_POST['toto'] et pas $toto
7)
MySQL:
Potrection des champs !!!!
mysql_query("DELETE FROM `coms` WHERE `id_coms` = $id");
----
mysql_query("DELETE FROM `coms` WHERE `id_coms` = ".htmlentities($id).";");
8)
"SELECT * from" n'est pas du tout conseilé du tout !
"SELECT `id`,`toto` FROM" est mieux
9)
// Regarde si la fin du nom de fichier est jpg ou jpeg
$ext = array('jpg', 'jpeg', 'png', 'gif');
$file_ext = strtolower(substr(strrchr($fichier_name, '.'), 1));
Et encore une faille !!!
Savoir l'extention c'est bien mais savoir le mime c'est mieux :
$mime = getimagesize('monfichier');
echo $mime['mime'];
10)
Les @ devant les variables ou autres pour empêcher l'affichage d' erreurs n'est pas du tout recommandé !
11)
HTML :
Pour une meilleur compactibilité
devient
car tous les navigateurs ne supportent pas
Meme chose pour les balises sans fin.
12)
Et vous azvez oublié par endroit la balise de déclaration de DOCTYPE !
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
C' est tout.
9/10
@+
ImmortalPC