LupusMic

  • Signature
    Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
  • Site web
  • Nombre de sujets
    26
  • Nombre de messages
    1 684
  • Nombre de commentaires
    4
  • Nombre de news
    Aucune
  • Niveau en PHP
    Gourou

Ses derniers messages sur les forums

LupusMic
le 01/11/2011 à 00:39
Ajouter une condition à un formulaire
Non, sinon on ne payerai pas à 500€/jour et ça ne recruterai pas à tour de bras des développeurs PHP dans tout les sens ;)
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 30/10/2011 à 17:59
Ajouter une condition à un formulaire
La regex qui valide pleinement la syntaxe d'une adresse est très complexe. Car les différentes RFC qui la définissent sont complexes. Fais un check minimal côté client, et utilise filter_var côté serveur.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 30/10/2011 à 17:47
Créer un Chrono avec MySQL PHP
La classe JS n'est pas terminée, et la fonction init qui est lancée au chargement de la page, est un exemple d'usage de la classe.

Je ne vais quand même pas tout te faire :p

La classe part du principe suivant : la fonction setReference permet de définir la date de départ du comptage (ceci peut ne pas être maintenant, mais une autre date). La fonction getElapsedTime retourne le temps passé depuis la référence.

En fait, c'est bien ce que je pensais depuis le départ : tu ne veux pas un chronomètre :p
Côté PHP, ce que tu feras ne sera pas fondamentalement différent de ce que je t'ai montré avec cette démo en JS. Découpe le problème en sections plus simples, et traite un problème après l'autre.

Le plus gros problème sera la détermination des écarts de temps, le fameux elapsed time. Si tu regarde ma démo, tu constatera que je ne retourne la différence qu'en terme de secondes écoulées. Parce que le choix du retour de l'écart en terme d'heures peut demander des choix à justifier. Du genre : est-ce que je prends en compte les changement d'heure ? :D
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 30/10/2011 à 17:28
multiples update
Qu'est-ce que tu entends par « nom de variable » ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 30/10/2011 à 17:24
MVC - POO Help
Merise, il y a encore des gens qui utilisent Merise ? :D
UML c'est sympa, mais il faut que ça reste ce que c'est : une formalisation des dessins permettant de concevoir.

Je suis d'accord que la POO n'est pas obligatoire, mais je crois qu'ici on lui a surtout reproché l'intégration du PHP dans l'HTML, plutôt que le PHP contrôlant la génération de l'HTML.

Par contre, MVC est un idiome incontournable. Là où UML est une convention pour parler au sein d'une équipe, MVC est véritablement une vision qui permet de séparer les problèmes. On voit souvent que les débutants ne s'en sortent pas parce qu'ils confondent tout dans un amas de concepts. Mélangeant la fabrication des requêtes SQL et la génération de l'HTML. Les plus téméraires s'amuseront à générer dynamiquement du JavaScript ou des CSS, en même temps que le reste.

Les Frameworks ne font pas gagner du temps, vraiment pas :) Ça dépend profondément du problème qu'on souhaite modéliser et des attentes du client/sponsor.

Bref, c'est un gros débat :D
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 30/10/2011 à 17:03
Ajouter une condition à un formulaire
La fonction strlen ne va que mesurer la longueur de la chaîne. Si tu veux inspecter un peu plus, tu as toute une palette d'outils te permettant de déterminer si l'utilisateur a correctement saisi les données que tu attends.

Tu as les fonctions filter_var, preg_match ou encore is_int.

Maintenant, il faut que la vérification ait une incidence sur le traitement des données et l'affichage. Dans le code que tu as fournit, tout ce que tu fais, c'est détercter si l'utilisateur a saisi le nombre de caractères attendus, et d'en informer l'utilisateur.

Je tiens à préciser que toutes les données soumises via un formulaire doivent être validées côté serveur. Le JavaScript, c'est pour améliorer l'expérience utilisateur. D'ailleurs, la Regex qui valide ton adresse e-mail est fausse.

Au fait, un code postal ce n'est pas forcément 5 caractères numériques. Même en France.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 30/10/2011 à 01:39
Créer un Chrono avec MySQL PHP
Ah ben voilà, on avance :) Je suis désolé de ne pas venir plus souvent, je suis malheureusement très occupé.

Tout d'abord, « instrument de précision » est une très drôle blague dans le contexte du Web ;)

Les sites qui affichent un temps utilisent des astuces et des approximations.

Allé, un exemple pour t'aider :
<!DOCTYPE html>
<html>
<head>
<title></title>
<script type='application/javascript'>
window.timer = (function()
{
var impl = { } ;
impl.reference = null;
impl.start = function() { impl.reference = new Date };
impl.setReference = function() { impl.reference = arguments[0] } ;
impl.getElapsedTime = function()
{
var now = new Date ;
var elapsed = Math.round((now.getTime() - this.reference.getTime()) / 1000) ;

return { days: 0
, hours: 0
, minutes: 0
, seconds: elapsed
} ;
} ;

var proto = function() {};
proto.prototype = impl;
return proto ;
})();

var init = function()
{
var clock = new timer ;
clock.setReference(new Date) ;
var element = document.getElementById('clock') ;

var fn = function() {
var elapsed = clock.getElapsedTime() ;
element.textContent = elapsed.seconds + ' secondes' ;
setTimeout(fn, 1000);
}
fn();
}

addEventListener('load', init) ;
</script>
</head>
<body>
Depuis <span id='clock'></span>
</body>
</html>
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 29/10/2011 à 23:48
Parse Error
Tout d'abord, j'espère que ce n'est pas du code en production. Il y a quelques trous de sécurité importants. J'y reviendrais.

Je ne peux malheureusement pas tester son script, vu que nous n'avons pas les fichiers dont le script dépend.
De plus, il se peut que le problème soit dû à la configuration de ton PHP (entre à cause des short_open_tags).

Bon, revenons à la sécurité.
<?php
$id_membres = $_COOKIE['elvme'];
$selection_membres = mysql_query("SELECT * FROM mcroc_membres WHERE id='$id_membres' LIMIT 1");

Le cookie est une information fournie par le navigateur. Donc, ce n'est pas une information de confiance, et elle doit être prise en compte comme telle. Donc ici, tu as une injection SQL possible.

Nous sommes en 2011. Il serait tant de déclarer correctement le JavaScript avec l'attribut qui va bien.
<script type='text/javascript'>
//<!--
// -->
</script>

À noter que les deux lignes entre les balises script sont des contournement des limitations des navigateurs web de la fin des années 90. Le commentaire HTML permet de cacher le script si le navigateur affiche le contenu s'il ne sait pas gérer l'attribut. Sauf que lorsque le contenu de la balise est interprété correctement comme un script, les commentaires HTML sont injecté dans l'analyseur syntaxique de JavaScript ; les commentaires HTML ne sont pas des constructions valides en JavaScript : il faut donc les mettre en commentaire.
Mais bon, en 2011, c'est surfait.

Ces redirections JS sont d'ailleurs mal à propos. Tu devrais plutôt utiliser quelque chose dans ce goût là :
<?php
function redirect($target, $stop = true)
{
header('Location: '.$target) ;
$stop and exit();
}
redirect('index.php') ;


N'oublie pas d'utiliser htmlspecialchars ou un équivalent, pour échapper les données que tu intègres à l'HTML.

J'aime beaucoup extract, mais je te déconseille fortement de l'utiliser pour contourner la suppression de register_global, c'est casse-gueule. Surtout qu'ensuite tu utilise les données fournit par $_POST sans les sécuriser.

D'ailleurs, je te conseille de te renseigner sur les CSRF. Toutes les actions qui modifient des données semblent ne pas sécuriser cet aspect fonctionnel. Et pour une interface d'administration, c'est gênant.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 29/10/2011 à 22:44
Problème : requete UPDATE avec '&' à insérer
Sans code, on ne pouvait t'aider de toute façon. La prochaine fois, fournis un code qui reproduit le problème, ce que tu obtiens et ce que tu attends.

Et quand tu trouves, ou que la solution résout le problème, sois plus disserte.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 24/10/2011 à 00:59
Créer un Chrono avec MySQL PHP
Qu'est-ce qu'un chronomètre pour toi ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LoadingChargement en cours