Vous n'êtes pas identifié(e).
Bonjour Nicolas,
Si le mot de passe provisoire a tendance à rester définitif par fainéantise, je partage ton point de vue.
En résumé disons que ta méthode est meilleure dans le sens où elle oblige l'utilisateur.++
L'autre avantage c'est que le mot de passe ne traîne pas dans un mail. Bon évidemment s'il est écrit sur un post-it ce n'est pas beaucoup mieux !
Non ce n'est pas ainsi que la condition doit être vérifiée. Voici la bonne méthode:
// en jquery
if ($("#toTop")){ }
// en javascript
if (document.getElementById("toTop")){ }
Tu es en train de l'enduire d'erreurs; ça va coller partout. On teste bien l'existence d'un élément avec $('#mon-id').length :
En cas de perte il faut en effet en générer un autre provisoire et l'envoyer par mail.
Je ne pense pas que ce soit une bonne pratique. Une pratique un peu mieux : inviter l'utilisateur à cliquer dans un mail avec une url unique qui a deux fonctions : invalider l'ancien mot de passe (uniquement à ce moment là pour pas que des plaisantins demandent à réinitialiser le mot de passe) et offrir la possibilité de saisir le nouveau mot de passe (avec une confirmation)
]
Je n'avais effectivement pas pensé au "==", je pense que c'est le mieux à faire ...
Habituellement la liste est générée par un while sur une table mysql c'est pour ça que je posais la question car dans ce cas je ne connaîtrais pas les valeurs à l'avance mais effectivement dans le cas exprimé ci-dessus un simple "==" suffira. Cela dit, ma question reste d'actualité si vous avez la gentillesse de m'aider :-)
Merci à vous :-)
Et bien si les données proviennent d'une table d'une base de données alors elles sont connues !
Tu peux écrire quelque chose comme ça pour mettre en valeur le pays sélectionné (adepte du mvc cachez -vous les yeux) :
echo '<select name="DepartPays">';
while ($row = mysql_fetch_assoc($result)) {
if ($row['pays'] == $_POST['DepartPays']) {
$selected = ' selected="selected"';
} else {
$selected = '';
}
printf('<option value="%s"%s>%s</option>', $row['pays'], $selected, $row['pays']);
}
echo '</select>';
Ce code n'est pas à recopier tel quel mais est juste là pour donner l'idée.
Tu as la valeur exacte donc fais un test simple (==) plutôt que d'utiliser preg_match().
Ce n'est pas normal. De quelle manière fais-tu l'inclusion ? Peut-on voir un peu de code ?
tout va bien j'ai trouver la soulution,
il me suffit d'utiliser la valeur de $_SESSION['login'] et l'associer à une variable afin de sortir tout les infor du membre dont je veux afficher la page. j'ai fai un echo de la variable session qui apparrer mais lorsque que je fait un print de ma requete j'ai pas le resultat du tableau je ne sais pas i il ya un probleme voici mon code de traiement en acceres pour avoirs les information de l'itilisateur en question
<?php
$login= $_SESSION['login'];
echo $login;
include "connectbd.inc.php"; // paramettres de connection à ma base de donné et de selection de tables
$sql= "SELECT *
FROM users
WHERE login = ".$login ;
$requete = mysql_query( $sql ) ;
$resultat = mysql_fetch_assoc($requete);
print_r ($resultat);
?>porquoi j'ai pas de retour au niveau des info sur print_r
sorry j'ai manqué certaines modif
En phase de mise au point je te conseille de debugger des requêtes de la manière suivante :
Ici $login est une chaîne donc en sql elle doit être entre quote :
Par parenthèses, lorsque tu ouvres la connexion pour cet utilisateur tu as dû faire une requête similaire. Profite en pour récupérer d'autres infos plutôt que de refaire une requête !
Pour essayer de ne pas te faire fuir tout de suite, je passe volontairement (dans un premier temps) sur des aspects de sécurités, d'injection sql, ... Les mots y sont quand ton code marchera tu pourra aller te renseigner !!!
Bon courage.
Bonjour,
Tout d'abord je vous invite à vous documenter sur le net sur les architectures MVC, et vous pouvez commencer par ce site.
Ensuite je rappelle amicalement comme il est y fait allusion ici dans ce lien, qu'une URL constitue un espace global applicatif tout comme l'est d'ailleurs le tableau $_SESSION. Le mérite de $_SESSION est qu'il se trouve du côté serveur et donc il n'est pas directement manipulable et accessible par un utilisateur lambda. Mais il ne faut pas oublier que cela reste un espace global.Ensuite, si la normalisation d'une base de données passe par maintenir et contrôler l'atomicité des données, il n'y a pas de mal à ce qu'elle soit appliquée au sein de l'application toute entière. De plus les informations confidentielles sorties de la bd doivent rester purement techniques, et utiliser un id (clé primaire) d'utilisateur est beaucoup mieux que son login (c'est du texte) et le problème d'unicité peut se poser par définition. Par conséquent le risque qu'un utilisateur se trouve connecté sur le compte d'un autre est grand.
Il faut passer par une classe sérialisée dans l'espace global dont les méthodes de gestion doivent être privées et le rester.
Bonne continuation.
++
Salut Jc. Si tu n'as pas fait fuir les deux, je te tire mon chapeau. J'ai quand même la nette impression qu'ils sont débutants (sans jugement de valeur). A titre de comparaison, c'est comme si à ta première leçon de conduite alors que tu ne sais pas passer les vitesses seul, le moniteur te parle de régime moteur, de sous-virage,... Tu le regardes avec des grands yeux et ... :-)
Saluton,
synop6 a écrit :Et nan je n'ai pas trouvé d'ou pourrait venir le problème.
C'est que tu n'as pas du chercher beaucoup.
Ton script ne boucle pas sur les lignes <option>, il recrée un<select> </select> pour chaque <option> lue.
Evidemment si tu lui donnes la réponse, il va encore moins chercher !! :-)
Ton fichier a-t-il beaucoup de lignes ?
Sinon as-tu regardé la source html de ce que tu génères (source de la page dans ton navigateur) pour essayer de comprendre ce qui ne va pas ?
Bonsoir,
Par rapport à la question ci-dessus énoncée, je vais mener en parallèle mes recherches
Cette question m'est venue par ce que dans le cadre de ma sécurisation de mon site et l'utilisation des sessions, je me suis rendu compte que la fonction session_register("toto"); fonctionne chez mon hébergeur alors qu'elle est soit disant obsolète... et que la fonction $_SESSION["toto"] ne fonctionne pas.
Si vous avez des billes pour éclairer ma lanterne, je suis preneur
La deuxième solution fonctionne bien évidemment chez free. Cela fonctionnait déjà avec php 4. L'utilisation de session_register() est déconseillé (depuis longtemps) au profit du tableau $_SESSION directement :
http://www.php.net/manual/fr/book.session.php
Pour la version de php, tu créés un fichier avec phpinfo() dedans :
http://www.php.net/phpinfo
L'idée d'avoir un espace de stockage hors URL est encore plus rassurant.
Sais-tu si free.fr le fait ?
Non on ne peut pas sur les pages perso de free (non des hébergements gratuits). En revanche tu peux placer ces fichiers dans un répertoires où tu mets un fichier .htaccess avec comme contenu "deny from all" (sans les guillemets)
Si le fichier est interprété par le serveur http comme du php (c'est à dire en général qu'il a une extension php), alors les visiteurs de ton site (ou les robots mais c'est pareil) ne verront pas le php contenu dans le fichier. Dans ce cas là le risque est minime à moins d'une faille dans php mais dans ce cas tu ne seras pas le seul impacté.
Sur les hébergeurs qui le permettent on place ce genre de fichiers de configuration en dehors de l'arborescence web. C'est-à-dire qu'il ne sont pas accessible à travers une url.
Déjà ta requête n'est pas normalisée. MySQL est très laxiste et permissif avec GROUP BY, du coup les débutants se retrouvent parfois avec des résultats incohérents parce qu'ils ne maîtrisent pas ce qui s'y passe.
Ainsi la colonne invoquée dans le GROUP BY ne figure pas dans le SELECT.
Ensuite tu mélanges les conditions de jointure avec celle de filtrage. Il faut être beaucoup plus rigoureux, en SQL le diable est souvent dans le détail.
ça fait plaisir de lire des messages comme ça. Je l'ai répété pendant des années mais on me sortait ça marche avec mysql donc ce sont les autres qui sont pourris.
Saluton,
Tant qu'à être succinct dans la réponse, autant quand même, sauf ton respect, maître nicolas, préciser que le chemin vers la photo peut-être relatif ou complet, mais doit se terminer par le nom de la photo et son extension. Le chemin seul, fût-il pavé de bonnes intentions, ne suffira pas.
Et puisque l'occasion se présente, qu'en est-il des attributs HTML height et width de la balise <img />, dont on nous disait, il fut un temps, que les fournir au navigateur accélérait le chargement de la photo ?
Saut votre respect grand maître, le fait d'ajouter les attributs height et width n'accélère évidemment pas le chargement de l'image mais en revanche, cela peut améliorer la vitesse de rendu de la page puisque la place réservée à l'image est fournie et n'a pas à être calculé au moment du chargement de la dite image.
nicolas a écrit :Non ce n'est pas forcément stupide de ne pas faire dépendre le hachage des mots de passe par le moteur de base de données. Dans la base, quelle qu'elle soit, on stocke des chaînes de caractères. On hache le mot de passe avec PHP et on peut alors choisir l'algorithme que l'on veut, par exemple bcrypt que l'on ne retrouve pas dans tous les moteurs de base de données loin s'en faut !
Où l'on retombe, en partie du moins, sur le vieux débat entre les SGBD épais et les SGBD maigres.
Personnellement j'opte, comme Jc, pour la portabilité au sein du SGBD, mais il est vrai que ça se discute.
D'autant qu'en termes de sécurité, l'encryptage en PHP permet de ne pas faire transiter les mots de passe en clair entre PHP et MySQL.
On me dira que le risque est bien plus grand avec HTTP entre le navigateur et le serveur à quoi je répondrai : certes.
Je ne cherche même pas à tomber dans ce débat. As-tu cliqué par curiosité sur le lien proposé (ou peut-être connais-tu déjà) ? L'idée de l'algorithme est mieux sécuriser les mots de passes hachés. D'une part, l'algorithme est volontairement lent en temps d'exécution pour empêcher toute découverte facile de mot de passe par attaque brute si la base de données est compromise par exemple. Pour une authentification de temps en temps cela ne devrait pas être pénalisant pour les visiteurs.
Bonjour,
Oui outre le problème de librairie PDO/mysqli évoqué par pierrot,
if(md5($_POST['password']) == $data['password'])
si cette égalité est vérifié avec MySQL je te paye des figues, sauf si le md5 est généré côté PHP avant d'être stocké en BD, mais alors .... portabilité du code : zéro pointé.
Non ce n'est pas forcément stupide de ne pas faire dépendre le hachage des mots de passe par le moteur de base de données. Dans la base, quelle qu'elle soit, on stocke des chaînes de caractères. On hache le mot de passe avec PHP et on peut alors choisir l'algorithme que l'on veut, par exemple bcrypt que l'on ne retrouve pas dans tous les moteurs de base de données loin s'en faut !
Après il faut faire attention aux perfs car on en arrive à faire des choses contre nature (non, non rien de sexuel !!!!) :
en théorie $('#id2', '#id1') est plus performant que $('#id1 #id2') ce qui semble assez logique (et évidemment moins performant que $('#id2')). Mais il n'est pas très logique de devoir accéder à à l'élément d'id id2 comme enfant de #id2. En revanche le cas avec le contexte peut se trouver mais ce sera l'objet d'une autre histoire.
Je complète dans un nouveau message.
La doc est là :
http://api.jquery.com/jQuery/#jQuery1
Le test de perf est là : (mais on peut en trouver d'autres qui donnent le même ratio)
http://jsperf.com/jquery-selector-context-comparison
Evidemment si on peut accéder à l'élément directement il n'y a pas photo !
$('tr td:first-child', '#identifiant-du-tableau-par-exemple')
pour la bonne et simple raison que les sélecteurs jquery sont évalués avec une précédence de la gauche vers la droite. Et la recherche à partir de l'ID est toujours meilleure. EDIT: D'ailleurs je ne suis pas convaincu que la seconde fonctionne...
Hé hé, toi aussi tu aurais été recalé en entretien !
Les candidats à qui j'ai posé la question avaient les réponses suivantes :
- je ne connais pas cette syntaxe. D'ailleurs je ne suis pas sûr qu'elle existe
- cette syntaxe n'existe pas
- c'est moins performant que de mettre li'dentifiant devant
- ...
Donc aussi bizarre que cela puisse paraître au premier abord la syntaxe $('.ma-classe', '#mon-id') est non seulement bien entendu valide mais est deux fois plus rapide (en général,...) que la syntaxe "normale" $('#mon-id .ma-classe')
nicolas a écrit :Concernant javascript il suffit de restreindre l'ensemble des noeuds à parcourir pour améliorer les performances :
$('tr td:first-child', '#identifiant-du-tableau-par-exemple')...Je ne suis plus sûr de pouvoir suivre.
J'ai mis#lexic tr td:first-child {font-weight:bold}dans ma feuille de style, il vaudrait mieux faire
$('tr td:first-child', '#lexic')...????
J'ai du louper un épisode.
En fait ton besoin peut se résoudre totalement en css sans une once de javascript. Je répondais à Jc sur sa préférence entre une classe .first-child placé sur chaque premier fils et l'utilisation de la pseudo-classe :first-child.
Mon avis pour aller de l'eau au moulin ou pour carrément dévier la rivière !!!
Je suis d'accord avec JC sur le fait de mettre/modifier/ajouter des styles directement avec jQuery. Il est plus propre de travailler avec une classe (qui est d'ailleurs déjà "compilé" par le navigateur). Plutôt que de faire
Il est plus propre de faire :
En revanche, je ne suis pas du même avis. Il est bien plus propre d'utiliser la pseudo-classe :first-child que ce soit en css ou javascript plutôt que d'ajouter une classe first-child au premier fils. Je ne parle que css/html et pas javascript (j'y viendrais ensuuite). La différence de vitesse de rendu doit difficilement être perceptible à moins d'avoir une page de 10 kilomètres de long.
Concernant javascript il suffit de restreindre l'ensemble des noeuds à parcourir pour améliorer les performances :
p.s: Par parenthèses, w3schools n'est pas forcément un bon site de référence. Il est bien présenté, est la plupart du temps correct mais contient quelques erreurs.
Bonsoir,
En fait il faut en effet le même nombre de colonnes sur chaque ligne, sous peine de voir son tableau déformé. Il ne faut juste pas confondre le nombre de colonnes et le nombre de <td>: Si une ligne à 5 <td></td> l'autre pourra en avoir qu'un mais avec un <td colspan="4"></td>.
++
Je crois que Maljuna Kris le savait quand même. Cours pendant que j'essaie de le retenir, jeune fou ! :-)
En revanche ton explication ne résoud pas mon problème : pourquoi cela semble fonctionner lorsque je mets :
On continue la discussion sur ce forum ou sur le premier (peut-être y en a-t-il d'autres !!!) où tu as initialement posé la question et où dunbar t'a proposé d'utiliser ce code ? Tu nous présentes ce code comme si tu l'avais écrit alors que tu t'es contenté de faire un copier/coller !