Posté le 18/04/2017 09:24
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 120 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 18/04/2017 10:08 | #
Utilises
Pour ma part, j'aurais plutôt passer le tableau $_GET en paramètres et mis les lignes 12 à 15 dans le contrôleur.
Les lignes 60 à 62 ont aussi leur place dans le modèle. Il ne doit normalement pas y avoir de requêtes SQL dans le contrôleur(sauf si tu utilises un ORM,mais dans ce cas, c'est pas vraiment du SQL)
Excellent point. Faut respecter le HTTP dans la vie
Utilises la sha2 (sha256 ou sha512) pour plus de sécurité.
Citer : Posté le 18/04/2017 10:34 | #
Ah oui, la fonction aussi doit aller dans le modèle et l'appel dans le contrôleur, je me suis trompé. Comment faire pour include un fichier qui est dans un dossier à part ? J'ai le dossier Modèle, le dossier Vue et le dossier Contrôleur, comment, depuis un fichier dans la Vue, include un fichier dans le contrôleur ? Ça paraît con mais le chemin ne fonctionne pas :/
Pour le reste, je prends note, merci
Citer : Posté le 18/04/2017 10:37 | #
Ben
Citer : Posté le 18/04/2017 12:22 | #
Ok, j'ai tenté la chance :
Vue : https://hastebin.com/qadaraqomi.xml
Modèle : https://hastebin.com/nahakazeku.xml
Contrôleur : https://hastebin.com/yihudoremu.xml
+ Connexion à la BDD (bdd.php) : https://hastebin.com/zopekijupe.xml
J'ai un fichier Vue, Modele et Controleur mais j'ai ceci en résultat :
https://gyazo.com/2901749e4a12c88af765a188125f069a
Une idée du souci ?
Citer : Posté le 18/04/2017 12:31 | #
Dans ta vue, il faut que Tu inclues ton contrôleur
Citer : Posté le 18/04/2017 12:34 | #
Ça ne suffit pas de l'avoir mis dans le 'action' du formulaire ? Et ça va régler les erreurs ?
Citer : Posté le 18/04/2017 12:37 | #
Ben il faut bien que les variables que tu utilises soit définies
Citer : Posté le 18/04/2017 12:38 | #
https://gyazo.com/95d49ed3abede6c6d88a49fb9ec55b18
Je pense que le passage du $_GET en fonction ne se fait pas comme je l'ai fait mais j'ai aucune idée de comment passer un formulaire GET en paramètre.
Citer : Posté le 18/04/2017 19:50 | #
Alors, par rapport à ton code, je dirais :
Vue :
Contrairement à Intelligide, je préfère les
Modèle:
Euhh, attends, c'est ton modèle qui gère la soumission du formulaire ???
Et en plus, le modèle émet du texte
Bref, résumons ce que doit faire un modèle : L'interaction avec la BDD (lecture, écriture, modification, etc.) avec éventuellement des vérifications.
Pour répondre à ta question, $_GET est une variable superglobale, elle est présente dans TOUS les scopes, tu n'as donc pas besoin de la passer en paramètre de ta fonction...
Contrôleur:
C'est LUI qui doit faire la gestion du formulaire. (Ou un autre fichier, dans un dossier Formulaire, par exemple)
Personnellement, je trouve qu'il est un peu léger.
Sinon, lors de la validation du formulaire, tu ne vérifie pas si toutes les variables GET sont présentes avant de les utiliser (l 13 à 16), d'où un risque d'erreurs 500 (Key "Email" doesn't exist in array "$_GET".) au lieu d'un simple Veuillez entrer un pseudo.
Lors d'erreurs de validation, il serait intéressant de soit:
- rediriger l'utilisateur vers le formulaire (qui serait alors vide... )
- afficher le formulaire prérempli, sauf pour les champs invalides et les mots de passe.
Il faudrait utiliser
Remplissez facilement vos listes avec Statistiques
Et des conversions des unités du système métrique.
Citer : Posté le 18/04/2017 20:49 | #
Rapidement, pourquoi il ne faut plus utiliser SHA-1.
Citer : Posté le 18/04/2017 22:18 | #
Merci pour ces conseils Amael, j'ai vraiment beaucoup de mal avec cette connerie et tant que j'aurais pas réussi un exemple concret comme celui-ci de la bonne façon, je n'y arriverai foutrement pas. Il faudrait que je tente un contact oral avec quelqu'un pour ça.
Citer : Posté le 19/04/2017 19:06 | #
C'est en codant des projets de plus en plus complexes que tu vas comprendre l'intérêt de l'architecture MVC
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 20/04/2017 18:25 | #
Pour les requêtes SQL je te conseille d'utiliser PDO : http://php.net/manual/fr/book.pdo.php
exemple :
try {
$dbh = new PDO('mysql:host=127.0.0.1;dbname=nomdelabase', 'root', 'psw');
$dbh->setAttribute(PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION); // http://php.net/manual/fr/pdo.setattribute.php
$stmt = $dbh->prepare('INSERT IGNORE INTO table VALUES (:uid1, :uid2);');
$stmt->bindParam(':uid1', $this->_uid1);
$stmt->bindParam(':uid2', $this->_uid2);
$stmt->execute();
} catch (PDOException $e) {
//erreur
}
C'est plus sécurisé.
Ajouté le 20/04/2017 à 18:31 :
Pour chiffrer un mot de passe il y a password_hash : http://php.net/manual/fr/function.password-hash.php
Pour vérifier le mot de passe il y a password_verify : http://php.net/manual/fr/function.password-verify.php
Citer : Posté le 20/04/2017 21:12 | #
Merci pour ces infos, je vais déjà essayer de passer le code en MVC avant de l'améliorer
Ajouté le 21/04/2017 à 16:19 :
J'ai pris connaissance de vos conseils sur les optimisations et améliorations de sécurité mais je me suis pour le moment concentré sur le mode MVC.
Voici mes nouvelles pages dont la trame a été validée par ma prof, il subsiste trois soucis :
Modèle : https://hastebin.com/ifusikoquj.pl
Vue : https://hastebin.com/vekahiquyi.xml
Contrôleur : https://hastebin.com/ceziyedeci.xml
Premier souci : J'ai créé une fonction dans le contrôleur. Dans l'action du formulaire de ma vue, je pense que la fonction est appelée mais que je reste dans le fichier.
Deuxième souci : J'ai mis en paramètre de ma fonction le tableau $_GET pour pouvoir récupérer la valeur de toutes mes variables, que je devrais mettre en return mais ça ne fonctionne pas.
Troisième souci : Celui-ci est lié au deuxième souci, dans le modèle, vous pouvez voir le INSERT des valeurs de mes variables. Vu qu'elles ne sont pas retournées dans la fonction, dans le modèle, ces variables ne valent donc rien et la base de données n'est donc pas remplie.
Avez-vous une idée s'il vous plait ?
Citer : Posté le 21/04/2017 16:28 | #
C'est inutile.
$_GET est une super globale, c'est à dire qu'elle est accessible absolument partout. Tu n'as donc pas besoin de la passer en paramètre. Tu peux donc utiliser $_GET sans aucune précédente déclaration, php s'en occupe tout seul !
Essai de l'enlever et reviens vers nous si tu as encore des problèmes
Citer : Posté le 21/04/2017 16:34 | #
Ça me règle le souci numéro 2, ma fonction fonctionne aussi, ce qui règle normalement le souci numéro 1, il ne me reste que le 3, qui est que je n'ai pas les valeurs de mes variables dans le fichier modèle, comment les lui passer ?
Citer : Posté le 21/04/2017 16:41 | #
Est-ce que tu es sûr modele.php est bien appelé et que la ligne 6 est bien exécuté ?
Parce qu'a vu d'oeuil je ne vois pas le problème. Les variables sont normalement passées automatiquement au fichier modèle quand tu le require.
Citer : Posté le 21/04/2017 17:44 | #
Je suis certain que modele.php est appelé car j'ai ensuite la redirection sur google. Pour les variables, en faisant le require, les variables ne sont certainement pas passées automatiquement, ce pourquoi je pense que le problème vient de là. Dès que je récupère mon PC (je l'ai prêté un peu ce soir), je tente un DIE pour voir si j'ai une erreur.
Citer : Posté le 21/04/2017 18:01 | #
Soit le require foire (erreur de chemin), soit il y a un problème avec la base de donnée, mais les variables existent.
Faire un require/include, c'est comme-ci tu copié collé le code dans ton fichier qui fait l'appel
Citer : Posté le 21/04/2017 18:14 | #
Les fichiers sont actuellement tous au même endroit pour mes tests, ça vient pas de là. Tu es sûr que les variables sont automatiquement passées avec le require ? Je teste le DIE dès que je peux.
Et non, un require, ça t'emmène sur la page que tu as appelée et le code s'exécute, si tout se passe bien, tu retournes dans la page qui faisait l'appel. J'ai appris ça tout à l'heure en me trompant avec ma prof. Include, je ne suis pas sûr