Oui, exact
Je corrige (j'avais mis name="name" au départ avant de me dire que c'était pas très pédago )
Oui, exact
Je corrige (j'avais mis name="name" au départ avant de me dire que c'était pas très pédago )
Merci ! Je vois mieux le pourquoi du comment (même si le côté serveur est une réalité bien obscure pour moi). En checkant sur le MDN, ils proposent une autre façon d'utiliser <label> :
https://developer.mozilla.org/en-US/.../Element/label
Merci pour "for", je connaissais pas (j'avais utilisé "id" ou "name" pour les labels dans mes exercices).Code:<!-- Simple label example with for attribute --> <label for="Name">Click me</label> <input type="text" id="Name" name="Name" /> <!-- or more simply --> <label>Click me <input type="text" id="Name" name="Name" /></label>
Le for c'est juste pour que quand tu cliques dessus ça donne le focus sur l'input. Le label, généralement tu le fous en type block avec width fixe histoire d'avoir un formulaire bien aligné
Rho le provocateur^^
en ce qui concerne le style c'est plutôt malin de ne pas utiliser l'ID
http://openweb.eu.org/articles/css-l-age-de-raison
Bof. J'ai jamais pigé les mecs qui s'amputaient du petit doigt sous prétexte qu'il était peu utile. Ça doit être un truc de professionnel
Plus sérieusement, à mon sens l'OOSS est, comme la plupart des OOwhatever, un concept creux monté en sauce par des mecs qui ne captent pas grand chose à la programmation orientée objet. Cf. la phrase que j'ai cité voilà quelques pages : inheritance is the 21st century goto. Ça et le MVC sont les deux grand fléaux de la programmation*.
C'est d'autant plus vrai que, d'une part, j'ai tendance à trouver que les guru du CSS actuels n'ont jamais rien fait de leur vie et sont juste des guru professionnels (Le mec de CSS-tricks par exemple, c'est un gros guignol. Jadis des mecs comme Eric Meyer te donnaient des conseils tirés de leur pratique du métier, pas de theorycrafting sur coussin d'air) et, d'autre part, les gens du front-end ne sont pas vraiment des barbus et donc ont une compréhension approximative des principes de la prog. (Y'a qu'à voir le massacre coté JavaScript.)
Tout n'est pas stupide dans les préceptes de l'OOCSS hein, attention, d'ailleurs une bonne partie ce qui est conseillé se voit dans les feuilles de style depuis des années. Je comprend aussi que le métier doive se professionnaliser, s'industrialiser et qu'un amateur comme moi qui faisait des sites internets dans les années 90 n'a pas vraiment sa place dans le débat vu que ce n'est pas mon quotidien.
N’empêche. Une ID est unique et spécifique, ce qui est pratique et a une réelle utilité. Quand je vois les mecs t’enchaîner un .page1.bouton.soumettre.valider.mescouilles { color : red /* sur la page 1, ce bouton est rouge*/ } au lieu de #page1 .mescouilles { /* ma spécificité nique toutes les classes de merde */ }, ça me fait de la peine.
Choses sérieuses à part, lesquels d'entre vous ont passé des nuits à patcher leurs applications Ruby on Rails fulls of failles ?
* ce n'est pas une critique de l'OO ou du MVC mais de l'application approximative de ces concepts, conséquence logique de leur popularité.
edit : pour le plaisir, un extres de la source de la home du dernier développement de l'auteur de l'article que tu cites :
Code HTML:<ul id="mainnav"> <li class="active" id="first"><a href="../fr/"><span class="short" id="home"><span>Home</span></span></a></li> <li><a href="../fr/portrait-cevres.php"><span class="normal">À propos</span></a></li> <li><a href="../fr/concept-materiel-reeducation.php"><span class="normal">Concept & bénéfices</span></a></li> <li><a href="../fr/myolux-athletik-preparation-physique.php"><span class="normal">Myolux Athletik <span class="mini">professionnels sport</span></span></a></li> <li><a href="../fr/myolux-medik2-materiel-kinesitherapie.php"><span class="normal">Myolux Medik II <span class="mini">professionnels santé</span></span></a></li> <li><a href="../fr/myolux-soft-renforcement-chevilles.php"><span class="normal">Myolux Soft <span class="mini">particuliers</span></span></a></li> <li><a href="../fr/contact-myolux.php" accesskey="7"><span class="normal">Contact</span></a></li> </ul> </nav> </div> <div id="pubhome" role="main"> <h1>Myolux : La solution pour la rééducation de la cheville, du genou et de la posture</h1> <div id="medik_highlight_1"> <p class="h4"><a href="../fr/myolux-athletik-preparation-physique.php">Myolux Athletik</a></p> <p class="accroche">Pour les professionnels du sport</p> <span class="button1"> <a href="../fr/myolux-athletik-preparation-physique.php" title="Commander Myolux Athletik" onclick="_gaq.push(['_trackEvent', 'Myolux Athletik', 'Click', 'Command']);"> <span class="button1-left"> </span> <span class="button1-middle">Commander</span> <span class="button1-right"> </span> </a> </span> </div> <div id="medik_highlight_2"> <p class="h4"><a href="../fr/myolux-medik2-materiel-kinesitherapie.php">Myolux Medik II</a></p> <p class="accroche eurostilereg">Pour les professionnels de santé</p> <span class="button1"> <a href="../fr/myolux-medik2-materiel-kinesitherapie.php" title="Commander Myolux Medik II" onclick="_gaq.push(['_trackEvent', 'Myolux Medik II', 'Click', 'Command']);"> <span class="button1-left"> </span> <span class="button1-middle">Commander</span> <span class="button1-right"> </span> </a> </span> </div> <div id="soft_highlight"> <p class="h4"><a href="../fr/myolux-soft-renforcement-chevilles.php">Myolux Soft</a></p> <p class="accroche">Pour les sportifs et les particuliers</p> <span class="button1"> <a href="../fr/myolux-soft-renforcement-chevilles.php" title="Commander Myolux Soft" onclick="_gaq.push(['_trackEvent', 'Myolux Medik Soft', 'Click', 'Command']);"> <span class="button1-left"> </span> <span class="button1-middle">Commander</span> <span class="button1-right"> </span> </a> </span> </div>
Woaw "Object-Oriented CSS"
Là sur le coup je te rejoins, les mecs n'ont absolument aucune idée de ce que veut dire l'orientation objet et/ou confondent avec MVC.
Je pige même pas comment on peut pondre des articles sur comment séparer le plus parfaitement possible HTML et CSS.
Pour l'instant c'est impossible de séparer totalement, point, fin du débat.
Sinon tout à l'heure je reçois un email "hey jette un coup d'oeil à ce vieux site web d'il y a 10 ans, le bouton mot de passe oublié ne fonctionne plus".
Je télécharge le code par FTP (ben oui, pas de subversion ou autre), je vois des $_POST partout, du SQL partout, un énorme switch qui englobe tout le bouzin.
Finalement je trouve la ligne "case 'forgotpassword': break;"
Oui, cette feature n'a jamais été codée Et maintenant c'est à moi de le faire
Rust fanboy
Et une sécurité assurée par mysql_real_escape_string ?
(ou même magic quotes )
Nan, avec PDO::quote.
Là en fait je me choppe une erreur 500 avec page blanche, j'arrive pas à trouver le log sur le serveur (p'têt qu'il y en a pas).
Je sens que je vais partir sur "on commente telle ligne de code et on regarde si ça marche".
Rust fanboy
Ah, y'a quand même PDO. Jte voyais déjà en PHP4 sans extensions. Retour vers le passé.
En fait je me suis gouré, c'est bien mysql_real_escape_string
L'objet qui sert à accéder à la base de données a une méthode quote(), du coup j'ai cru que c'était un wrapper PDO, mais en fait elle appelle mysql_machin.
En plus ça utilise la fonction PHP mail()
Mais je vais quand même pas changer ça, ce serait un trop gros boulot.
Rust fanboy
À chaque fois que j'écris le nom d'une table je suis obligé de faire $database->prefix('table') pour rajouter un préfixe devant le nom de la table, peut être au cas où la base de données serait partagée avec quelque chose d'autre.
Il y a une grosse fonction "handlePOST" de 600 lignes qui gère toutes les actions post du site à l'aide d'un méga-switch
Bon j'ai codé ça en envoyant un email avec un lien de confirmation du genre "?key=machin&newpass=truc", avec key qui est un md5 salté de l'id de l'utilisateur à qui on doit changer le mot de passe.
Et pass c'est le md5 du nouveau mot de passe, puisque les mots de passe sont en md5 dans la base de données.
Je me sens sâle.
Rust fanboy
Ce qui est génial avec ces devs pourris comme ça, c'est que si quoique ce soit merde sur le site parce que c'est codé à l'arrache, ça va être de ta faute vu que tu es le dernier à y avoir touché
Ben ce qui est génial, c'est que ce site a l'air pas mal utilisé (c'est un site en interne, pas un site public).
Et que jusqu'à présent il n'y a eu aucun problème, jusqu'à ce que quelqu'un remonte ce "mot de passe oublié ?" qui n'était même pas implémenté. En fait je crois qu'à la place ils demandaient tout simplement à un admin de leur changer leur mot de passe (ce qui n'est pas du tout secure vu que les admins connaissent la moitié des mots de passe du coup).
Pour un truc codé à l'arrache ça marche plutôt très bien.
Maintenant il faut que je prie pour qu'ils ne fassent pas de mise à jour de PHP sur le serveur vu que les fonctions mysql_* vont être supprimées.
Rust fanboy
De mémoire, Odd bosse là dessus, attends qu'il soit déban
Sinon j'avais acheté un bouquin pour m'y mettre, mais ça m'avait vite gonflé.
À propos de ZF 1, je reprends un projet qui tourne dessus mais j'ai des difficultés avec Auth et Acl et le guide officiel a pas mal d'erreurs, vous avez des tutos bien ficelés sur la question?
C'est quoi tes soucis avec Zend_Auth et Zend_Acl ?
J'ai suivi le tuto sur l'authentification http://framework.zend.com/manual/1.1...ntication.html mais ça foire au niveau de la vue bien qu'ayant testé avec
au lieu du simple $this->form->setAction.Code:$this->loginForm->setAction($this->url()); echo $this->loginForm;
Je me prends une quand même
ce qui me parait étonnant après avoir regardé la déclaration de la méthode.Code:Fatal error: Call to a member function setAction() on a non-object
J'ai bien entendu adapté mon contrôleur et la class Default_Form_Auth_Login() en fonction de mon namespace (une erreur dans le tuto d'ailleurs)
J'ai trouvé entre temps un webniar pas mal foutu qui devrait me mettre sur la bonne voie, qui m'a permis de piger le coup du fichier ini pour les règles action/user pour Acl:
http://www.zend.com/fr/webinar/zf/70...f-20110111.flv
Absolument, mais je précise : j'ai bien mon formulaire c'est lors de la validation que je prends la fatal error.
Dernière modification par elkoo ; 07/02/2013 à 21h30.
Pourtant la méthode setAction est bien appelée dans la vue, donc en dehors de la validation qui est faite en principe dans une méthode d'action... Ton erreur est typique d'un objet non initialisé et/ou mal transmis à la vue, a priori ça n'a rien à voir avec les ACL. Le mieux serait que tu postes le code de ton contrôleur et celui de ta vue.
Effectivement, par de rapport avec Zend_Acl.
V'la mon code, le contrôleur, la vue et le formulaire:
L'authentification semble fonctionner correctement d'après Zend_Auth_ResultCode PHP:
<?php
//application/controllers/AuthController.php
class AuthController extends Zend_Controller_Action{
public function loginAction(){
$db = $this->_getParam('db');
$loginForm = new Application_Form_Auth_Login();
if( $loginForm->isValid($_POST) ){
$adapter = new Zend_Auth_Adapter_DbTable(
$db,
'users',
'username',
'password'/*,
'MD5(CONCAT(?, password_salt))'*/
);
$adapter->setIdentity($loginForm->getValue('username'));
$adapter->setCredential($loginForm->getValue('password'));
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($adapter);
//$auth->getStorage()->write(array('name' => $loginForm->getValue('username') ));
$this->view->identity = $auth->getIdentity();
echo '<pre>', print_r($result, 1), '</pre>';
if( $result->isValid() ){
$this->_helper->FlashMessenger('Successful login');
//$this->_redirect('/');
return;
}else{
echo 'Erreur d\'authentification';
}
}
$this->view->loginForm = $loginForm;
}
public function logoutAction(){
Zend_Auth::getInstance()->clearIdentity();
}
}
//application/views/auth/login.phtml
$this->loginForm->setAction($this->url());
echo $this->loginForm;
//debug de ouf
$auth = Zend_Auth::getInstance();
echo '<pre>', print_r($auth, 1), '</pre>';
if ( isset($this->identity) ) : ?>
<h6>Salut <?php echo $this->escape( $this->identity['name'] ); ?></h6>
<?php endif; ?>
<?php
//application/forms/auth/login.php
class Application_Form_Auth_Login extends Zend_Form{
public function init(){
$this->setMethod('post');
//Champs username
$this->addElement(
'text',
'username',
array(
'label' => 'Username : ',
'required' => true,
'filter' => array('StringTrim'),
)
);
//Champs password
$this->addElement(
'password',
'password',
array(
'label' => 'Password : ',
'required' => true,
)
);
//Bouton de validation
$this->addElement(
'submit',
'submit',
array(
'ignore' => true,
'label' => 'Login',
)
);
}
}
et si je donne un mauvais password j'ai le résultat attendu, mais sans la fatal errorCode:Zend_Auth_Result Object ( [_code:protected] => 1 [_identity:protected] => admin [_messages:protected] => Array ( [0] => Authentication successful. ) )
J'ai mal où Docteur?Code:Zend_Auth_Result Object ( [_code:protected] => -3 [_identity:protected] => admin [_messages:protected] => Array ( [0] => Supplied credential is invalid. ) )
Dernière modification par elkoo ; 06/02/2013 à 15h05. Motif: désolé tenshu!
Faut que tu vires le return en cas d'authentification réussie. C'est lui qui empêche que le formulaire soit correctement transmis à la vue dans ce cas de figure.
Ha le con, j'ai commenté le redirect() pour voir ce qu'il se passait, donc forcement... Merci GrandFather!
Dites les canards, je vais demander un truc de méga noob, je voudrais présenter de manière sobre et très simple mes travaux (des vidéos Vimeo vu que je suis motion designer, et tout juste quelques images pour le coté graphique) tout ce que j'ai pour le moment c'est une espèce de truc wordpress pourri, et en cherchant sur l'interweb un moyen simple et pas cher de chopper un nom de domaine et d'y construire un truc très sobre je tombe que sur des sites et des tutos qui soit sont incompréhensibles soit sont clairement financées et qui te renvoient vers des hébergeurs et des outils kikoutcher
Comme c'est censé être le topic du noob et pas celui de la programmation y'en a qui auraient des tutos, des topics ou forums ou des formules simples et pas cher ?
Wordpress c'est bien et puissant, si tu choppes un thème assez sobre tu peux t'en sortir sans coder grand-chose.
Si tu veux absolument du (presque) zéro config, tu peux avoir un Tumblr avec un domaine perso. Là encore, un thème gratos un peu sobre et roule ma poule.
Les hébergements sont gratuits ou pas très chers maintenant, y'a même des offres où t'as un mini hébergement avec un nom de domaine
Wordpress.com me semble pas mal, tu peux aussi prendre un simple hosting chez gandi (environs 50€ à l'année) et un ndd pour 15€ pour plus de liberté.
À ce propos j'ai quelques coupons pour 1 mois gratos à donner si y'a un mangeur de cookies qui n'en veux.