Creation page Web - PHP - Programmation
Marsh Posté le 17-08-2009 à 21:02:53
renomme ton fichier .html en .php
si possible met pas d'espace, dans le nom de ton fichier
Marsh Posté le 17-08-2009 à 22:08:37
Maintenant ca me charge meme plus ma page XD
http://unisa.free.fr/Creation_perso_Archi-Monde.php
Est ce que je devrais pas plutot separer le html et le php avec un lien html pour charger la page php?
Marsh Posté le 17-08-2009 à 22:21:31
tien j'ai fait ca, c'est pas parfait, mais deja plus modulaire et lisible
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> $post = (object) array_map('mysql_real_escape_string', $_POST); |
Marsh Posté le 18-08-2009 à 01:10:10
Je te remercie vraiment beaucoup pour ce que tu as fait. En faite pendant ce temps j'ai continuer mon ptit script et j'ai change de méthode, je m'heberge plus par free mais par wamp, du coup j'ai un acces de ma page web directement a ma base de donnée car aussi traité par wamp.
Et voila ce que ca donne ( ca marche parfaitement, après j'ai pas poussé comme au départ jusqu'a vérifié les erreurs)
Citation : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> </body> |
Citation : <?php |
Citation : <h2> |
Voila dis moi ce que tu en pense. Sinon je vais essayer d'utiliser ton script pour faire les vérifications comme toi. En tout cas merci beaucoup
Marsh Posté le 18-08-2009 à 09:05:16
Salut,
Niveau sécurité c'est une passoire ton truc .. en 2 sec ton site se retrouvera sans base de donnée
Marsh Posté le 18-08-2009 à 09:57:24
ou mieux, utiliser les requêtes préparées ..
Bon sang mais quand est-ce que les livres/tuto pour débutants commenceront à comprendre que c'est pas leur rendre service que de leur montrer des codes non sécurisés...
Marsh Posté le 18-08-2009 à 11:29:44
C'est pas très sympa, Stealth35 t'as fait une très bonne page conforme W3C et PHP objet et tu n'utilises même pas son code alors que le tiens laisse fortement à désirer.
Marsh Posté le 18-08-2009 à 12:04:14
Comment je peux faire alors pour sécuriser tout ca?
Sinon pour info j'ai fait ca sans tuto, j'avais appris un peu le html et ca c'est les reste de ce que j'ai appris.^^
Mais bon je me considère comme un débutant parce que j'ai pas un énorme niveau mais en plus parce que j'ai un peu oublié^^
Donc voila si quelqu'un veut bien m'aider on peut carrement ce contacter par mail ou messagerie instantanée ou teamspeak ou autre.
Marsh Posté le 18-08-2009 à 12:11:50
Ce que Stealth35 a fait est (à vue d'oeil,j'ai pas tout lu,surtout que c'est pas mis ente balises code ) pas trop mal niveau sécu (à nouveau, il y a mieux en utilisant une couche comme DBO ou alors en utilisant les requêtes préparées.
Franchement, prend le code de Sealth35, lit le, essaie de comprendre qui fait quoi. Il y a quelques passages un peu plus compliqués que le reste mais dans l'ensemble ça va .. Et c'est quand même du code d'une qualité supérieure à ceux que tu trouves généralement sur le net..
Marsh Posté le 18-08-2009 à 12:20:46
Oui mais c'est plutôt que ca me met enormement de message d'erreur, et je vois pas trop ou est ce que c'est plus securisé que moi, car il a une partie texte comme moi et une partie php comme moi.
La seule difference que j'arrive a voir entre lui et moi (j'ai pas l'oeil d'un expert), c'est que son php demande une vérification a la db pour voir si les caractères rentés sont pas déjà utilisé.
Marsh Posté le 18-08-2009 à 13:59:27
esox_ch a écrit : C'est pas très sympa, Stealth35 t'as fait une très bonne page conforme W3C et PHP objet et tu n'utilises même pas son code alors que le tiens laisse fortement à désirer. |
je suis quand meme partis de son code, c'etait tout les les IF en cascade que je voulais suprimer, apres j'avoue qu'au dela de ca c'est pas terrible non plus tout les "@" c'est foireux, mais comme il debute je voulais que le code soit le plus lisible possible et se raproche du sien,
sinon j'aurai fait plusieur fichier et surtout utiliser DomDocument qui dans le cas des formulaire est vraiment pratique, et surtout PDO, j'aurai aussi ajoute une "secu" suplementaire avec javascript",
mais je veux bien que tu me dises aussi ou ca penche ?
Marsh Posté le 18-08-2009 à 14:00:19
ps : c'est vraiment horrible le code sans TAB et sans coloration syntaxique
Marsh Posté le 18-08-2009 à 14:04:52
Ah oui, et
if (condition) |
est mieux que
if (condition){ |
Marsh Posté le 18-08-2009 à 14:12:23
et que c'est pas bien d'utiliser les tabulation non plus 4 espaces (8 pour le kernel linux), au cas ou (comme ici) l'editeur ne prend les prends pas en compte
Marsh Posté le 18-08-2009 à 15:18:25
Bon, je vais essayer de réécrire mon script a ta façon stealth. Est ce qu'une fois que j'aurais corrigé toute les petites erreurs vous pourrez me guider sur un script plus sécurisé?
Ou alors il vaut mieux que je recommence tout?
Marsh Posté le 18-08-2009 à 15:26:59
ça dépend.
Une fois que ça ça marche, tu en a fini pour le site? Ou c'est juste la première pierre que tu poses là?
Dans le premier cas, au pire corrige ton code et on te dit comment sécuriser un minimum
Dans le deuxième, part sur un code plus sain en le refaisant depuis le début, parce que tu vas pas t'en sortir sinon
Marsh Posté le 18-08-2009 à 15:41:35
En faite le dernier script que j'ai fait marche parfaitement. Mon site contient juste une page, celle ci, pour faire les inscription et rien d'autre. Car pour le moment on a pas l'utilité d'un site entier. Par contre plus tard oui.
Donc j'imagine que je dois partir sur la seconde solution?!!
Marsh Posté le 18-08-2009 à 15:46:20
Disons que c'est un investissement considérable de temps. Mais tu béniras le ciel de l'avoir fait le jour où t'auras besoin d'un site rapidement.
parce que niveau temps de dév, y a pas photo. Faire un site bien fait, orienté-objet & co ça te fait gagner du temps de développement (en général) parce que ça te force à coder plus proprement
Marsh Posté le 18-08-2009 à 15:52:27
Pascal le nain a écrit : Ah oui, et
est mieux que
|
joli sujet de troll... moi aussi je préfère, mais certaines entreprises ou organisation (Sun ou apache) font le contraire...
Marsh Posté le 18-08-2009 à 15:54:49
Écrivez dans un vrai langage (comme Ruby ou Python) et vous aurez plus ce genre de problèmes
Spoiler : |
Marsh Posté le 18-08-2009 à 16:16:54
Donc je repars sur sa base ou sur une toute nouvelle?? (la me faudra des indications)
Marsh Posté le 18-08-2009 à 16:21:43
Part sur la sienne.
Elle est pas parfaite mais elle est déjà pas mal du tout (prend l'occasion pour le remercie d'ailleurs..). Après s'il y a quelque chose que tu comprends pas, cherche dans la doc et au pire demande nous ici, histoire qu'on te redirige sur la bonne doc
Marsh Posté le 18-08-2009 à 16:21:50
Tu tires un dé 8 :
de 1 à 3 : tu recommences.
de 6 à 8 : tu repars sur ta base.
de 4 à 5 : Tu cours très vite vers la prochaine base et tu retires le dé.
Marsh Posté le 18-08-2009 à 16:33:15
OK je reprends la sienne, j'essai d'améliorer ce que je peux et après je vous soumet mon travail.
Merci vraiment beaucoup stealth35.
Marsh Posté le 18-08-2009 à 16:54:09
Avant d'essayer de l'améliorer, prend un moment pour bien comprendre ce qu'il fait à chaque ligne (quelque chose me dit que tu n'es pas au point avec les notions d'orienté objet par exemple) sinon ça va être le carnage
Marsh Posté le 21-08-2009 à 09:19:25
esox_ch a écrit : Ce que Stealth35 a fait est (à vue d'oeil,j'ai pas tout lu,surtout que c'est pas mis ente balises code ) pas trop mal niveau sécu (à nouveau, il y a mieux en utilisant une couche comme DBO ou alors en utilisant les requêtes préparées. |
le problème c'est que par exemple, je ne peux pas utiliser autre chose que mysql en natif (donc pour PDO et compagnie c'est foutu )
Marsh Posté le 21-08-2009 à 09:21:11
Pascal le nain a écrit : Ah oui, et
|
il n'y a aucune différence, perso j'utilise la deuxième pour les structures de controle et la première pour les def de classe et de fonctions, je vois pas ce que çà peut foutre ?
Marsh Posté le 21-08-2009 à 09:42:19
ReplyMarsh Posté le 21-08-2009 à 09:43:16
et je vois pas en quoi c'est plus clair
Marsh Posté le 21-08-2009 à 09:45:30
Question de rigueur.
C'est plus lisible.
Menfin c'est sans aucun doute une question d'habitude.
Marsh Posté le 21-08-2009 à 09:46:06
Pascal le nain a écrit : |
je laisse tomber.
Marsh Posté le 21-08-2009 à 09:52:15
Marsh Posté le 21-08-2009 à 10:25:34
Pascal le nain a écrit : C'est plus clair. Et c'était surtout pour lancer un troll |
moi la seule différence notable que je trouve entre les 2, c'est que dans le premier cas, tu peux mettre un if ou un for en commentaire avec "//" sans avoir à retaper une "{" pour rester correct... a part ca,
Marsh Posté le 17-08-2009 à 20:15:02
Bonjour, alors voila, je veux creer une page web uniquement qui me servirais de portail pour creer des comptes sur un serveur dédié
Voici le script de mon php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Page Inscription Joueurs du Serveur Archi-Monde</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<h2>
Page d'inscription du serveur Archi-Monde
</h2>
<form action="" method="post">
<p>Entrer les informations relative a votre compte.<br /></p>
Pseudo : <input type="text" name="login" size="32" /> <em>(compris entre 6 et 32 caractères)</em><br />
Mot de passe : <input type="password" name="password" size="40" /> <em>(compris entre 6 et 40 caractères)</em><br />
Mot de passe (vérification) : <input type="password" name="password_check" size="40" /><br />
Mail : <input type="text" name="mail" size="30" /> <br />
Mail (vérification) : <input type="text" name="mail_check" size="30" /><br />
<br /><div align="center"><input type="submit" name="create" value="Suivant" /></div>
</form>
</body>
<?php
mysql_connect("localhost", "***", "***" ); // Connexion à MySQL
mysql_select_db("realmd" ); // Sélection de la base realmd
mysql_query (INSERT INTO account($account = mysql_real_escape_string(htmlspecialchars($_POST['login']));
$password = mysql_real_escape_string(htmlspecialchars($_POST['password']));
$password_check = mysql_real_escape_string(htmlspecialchars($_POST['password_check']));
$mail = mysql_real_escape_string(htmlspecialchars($_POST['mail']));
$mail_check = mysql_real_escape_string(htmlspecialchars($_POST['mail_check']));
$compte_ok = '0'; )
if(isset($create)){
if ($account != '') {
if (strlen($account) > 5 AND strlen($account) < 33) {
if ($password != '') {
if (strlen($password) > 5 AND strlen($password) < 41) {
if ($password_check != '') {
if ($password == $password_check) {
if ($mail != '') {
if(preg_match('#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#is', $mail)) {
if ($mail_check != '') {
if ($mail == $mail_check) {
mysql_select_db($mysql_base_realmd);
$verif_username = mysql_query("SELECT * FROM account WHERE username = '".$account."'" );
if (mysql_num_rows($verif_username) <= 0){ // on vérifie si le compte n'existe pas.
mysql_select_db($mysql_base_realmd);
$verif_mail = mysql_query("SELECT * FROM account WHERE email = '".$mail."'" );
if (mysql_num_rows($verif_mail) <= 0){ // on vérifie si l'adresse email n'est pas utilisée.
$ip = $_SERVER['REMOTE_ADRESS'];
mysql_select_db($mysql_base_realmd);
$compte_ok = '1';
mysql_query("INSERT INTO `account` (`username`,`sha_pass_hash`,`email`,`last_ip`,`locked`,`expansion`) VALUES ('".$account."',SHA1(CONCAT(UPPER('".$account."'),':',UPPER('".$password."'))),'".$mail."','".$ip."','0','1')" );
} else { echo '<p><font color="red">Email déjà utilisé. Veuillez entrer une autre adresse.</font></p>'; }
} else { echo '<p><font color="red">Nom de compte déjà existant. Veuillez en choisir un autre.</font></p>'; }
} else { echo '<p><font color="red">Les adresses mail ne correspondent pas.</font></p>'; }
} else { echo '<p><font color="red">Le champ Confirmation de Mail est vide.</font></p>'; }
} else { echo '<p><font color="red">L\'adresse email doit être au format user@mail.tld</font></p>'; }
} else { echo '<p><font color="red">Le champ Mail est vide.</font></p>'; }
} else { echo '<p><font color="red">Les mots de passes ne correspondent pas.</font></p>'; }
} else { echo '<p><font color="red">Vous devez confirmer votre mot de passe</font></p>'; }
} else { echo '<p><font color="red">Le mot de passe doit faire entre 6 et 40 charactères</font></p>'; }
} else { echo '<p><font color="red">Vous devez préciser un mot de passe.</font></p>'; }
} else { echo '<p><font color="red">Le nom de compte doit faire entre 6 et 32 charactères</font></p>'; }
} else { echo '<p><font color="red">Vous devez préciser un nom de compte.</font></p>'; }
}
if ($compte_ok == '1') {
echo '<p>Votre compte a bien été créer.<br />Bon jeu parmis nous !</p>';
} else {
?>
<?
}
mysql_close();
?>
</html>
Et voici ce que ca m'affiche (sachant que quand je rentre des données dans les emplacements pour, il n'y a pas de modification sur ma BD)
http://unisa.free.fr/Creation%20pe [...] Monde.html
Quelqu'un pourrait t'il me guider sur les erreurs que j'ai commis?