IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Système] Problème de doublon lors d'un insert (voir fin)


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 42
    Points : 18
    Points
    18
    Par défaut [Système] Problème de doublon lors d'un insert (voir fin)
    Bonsoir,

    je suis actuellement en train de developper une sorte de lettre (message) en flash et j'aimerais que la personne a qui je donnerai l'adresse (destinataire unique et débutant) ne puisse lire la lettre qu'une seule fois.

    J'ai d'abord pensé aux cookies mais, déjà j'ai galéré, et en venant chercher de l'aide par ici, j'ai lu "remote_address". Et tout de suite, cela parait plus interessant.

    Encore une fois, le destinataire est débutant donc ... "proxy !?! kezako ..."

    Par contre, je ne trouve pas énormement d'aide sur cette fonction et je ne sais pas trop comment procéder. J'ai pensé à écrire dans un fichier texte l'ip de la personne qui visite et ensuite à chaque visite, lire le fichier et si l'ip est dedans => redirection.

    Ecrire/Lire un fichier texte => je sais
    Mais alors se servir de "remote_address" et faire des comparaisons avec chaque ligne, je vois pas trop.

    Quelqu'un pourrait il m'aider ou me donner une piste ?

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 252
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 252
    Points : 8 542
    Points
    8 542
    Billets dans le blog
    17
    Par défaut
    Hum, tu ne donnes pas bcp de détails, mais en ce qui me concerne je transmettrai un lien de ce type :

    lettre.php?clef=8d4a397f331d

    (clef difficile à trouver pour éviter les accès que ne manqueraient pas de faire les petites malins)

    Ensuite en BdD j'aurais qque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    lettre_clef    lettre_dejavu  lettre_contenu
    --------------------------------------------
    8d4a397f331d   0              ...
    ...
    A l'accès à la lettre tu recherches l'enregistrement ayant la clef $_GET['clef'], si le champ lettre_dejavu est à 0 on l'affiche (le lettre) puis on passe la valeur à 1 ; si le champ est à 1 on refuse l'accès.

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 42
    Points : 18
    Points
    18
    Par défaut
    je vais essayer de te donner plus de détails. En fait, ce csystème me permettra d'envoyer un message à quelqu'un et qu'il puisse le lire qu'une seule fois (ce message s'autodétruira lol).

    Les messages sont animés (flash). Pour l'instant, je publie sur le web, j'attends de savoir si c'est lu et je supprime du ftp => pas très pratique.

    En fait j'ai pas trop compris ton système de clé mais sa m'a donné cette idée qui doit être proche de la tienne. Dis moi !

    La page d'accueil demande un mot au visiteur (plus simple à communiquer). Si le mot existe et que "vu_mess" est à 0 dans la bdd => redirection javascript vers l'adresse contenu dans le champ "adresse_mess" du tuple.

    L'adresse, elle, aura la forme d'une clé pour pa tomber dessus par hasard.

    C'est vrai que ce système pourrait pas mal mais

    1/ Y a t'il un moyen de se passer de la bdd ?
    2/ A quoi sert remote_adress dans cette histoire ?
    3/ Comment faire en sorte qu'un utilisateur expérimenté ne puisse pas afficher l'arborescence du ftp et voir toutes les pages dont les noms est codées (clé) ? (ça c'est vraiment facultatif lol)

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 252
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 252
    Points : 8 542
    Points
    8 542
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par gregory.bts
    En fait j'ai pas trop compris ton système de clé mais sa m'a donné cette idée qui doit être proche de la tienne. Dis moi !
    J'ai l'impression qu'on s'est compris. Mais donne aussi tes contraintes.

    1/ Y a t'il un moyen de se passer de la bdd ?
    Bien sûr, libre à toi d'organiser tes données comme tu l'entends

    C'est vrai que je n'ai pas relevé précdemment à ce propos :
    2/ A quoi sert remote_adress dans cette histoire ?
    À rien. L'IP n'est jamais fiable pour la sécurité, on peut tjs facilement contourner son contrôle (proxy, renouvellement, etc.). Donc oublier cette idée.

    3/ Comment faire en sorte qu'un utilisateur expérimenté ne puisse pas afficher l'arborescence du ftp et voir toutes les pages dont les noms est codées (clé) ? (ça c'est vraiment facultatif lol)
    - Créer des clefs complexes : si tu as qques milliers de messages et un format de clefs acceptant des milliards de combinaisons alors un "utilisateur" tentant sa chance aura peu de chance de tomber sur un message non lu
    - Détecter les tentatives de brut force, en vrac :
    -- cookie (peu fiable, mais bon)
    -- IP pour l'occasion
    -- mieux : authentification avant tout et log des tentatives d'accès à une lettre, si plus de ~3 tentatives échouées pour un même compte ban de x minutes / heures / jours / etc.

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 42
    Points : 18
    Points
    18
    Par défaut
    re,

    alors j'ai pas mal avancé cette nuit.

    En fait, tout marche et voici comment :

    le visiteur rentre un mot qui est envoyé à connexion.php

    Connexion vérifie 2 trucs :

    1/ admin ou pas. Les admins ont une astuce : faire précédé le mot de "admin_" pour passer outre le controle 2/
    2/ vu ou pas. Si vu, erreur, et sinon lancement vidéo.

    Pour l'instant, ça marche niquel. Mais j'aimerais l'améliorer car pour l'instant, le système se destine à un seul visiteur.

    Et je pense que c'est là que remote_address peut m'aider. Sans prendre en compte les proxy etc....

    Mais en fait, l'analyse est tellement simple à faire que j'arrive pas à m'imaginer le mcd lol. Je m'y metterai un peu plus tard.

    A+ et di^tes moi ce que vous en pensez.

    PS : ah oui, comment générer les clés "8d machin truc" parce que j'aimerais faire aussi une petite partie admin, qui renommerait le fichier avec une clé aléatoire et qui gardera son nom dans la bdd.

  6. #6
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 42
    Points : 18
    Points
    18
    Par défaut
    Bon alors j'ai amélioré la chose lol.

    Maintenant 1 ip ne peut accèder qu'une seule fois à un même message.

    Et si c'est un admin, il passe outre tous les contrôles.

    Ca fesait longtemps que j'avais pas fait du php, j'ai galéré lol mais bon...

    J'ai aussi mis en place un enregistrement dans la bdd des tentatives d'accès infructueuses.

    Par contre, il me reste toujours une question, comment php peut générer des clés genre 8d...... (10 caractères) et me renommer mon fichier html pour le préparer à l'envoi vers le ftp. C'est juste un gadget mais bon, ça m'évitera de renommer mes fichiers en fermant les yeux

    Merki d'avance pour votre aide

    edit : j'ai trouvé pour créer des clefs et pour renommer mon fichier html donc c'est cool.

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 42
    Points : 18
    Points
    18
    Par défaut
    Re,

    je me suis rendu compte d'un problème dans mon enregistrement des accès.

    En fait, chaque accès est enregistré 2 fois comme ceci.

    id | user | lettre
    8 | 127.0.0.1 |
    7 | 127.0.0.1 | test

    id est l'id de la visite, user l'ip du visiteur et lettre le mot qu'il a rentré. Ce contenu de la table est apparu après que j'ai essayé de rentrer avec le mot "test".

    Quelqu'un a une idée ? Avant j'avais 3 insert dans mon code, là je n'ai laissé que celui qui esr concerné par test ( c'est à dire celui qui enregistre les visites avec des mots ne correspondant pas à des lettres). En plus j'ai testé avec un "echo" et ce n'est pas un problème de boucle car si je fais

    echo "passage";

    le mot n'apparait qu'une fois alors que 2 enregistrements se sont faits dans la bdd.

    Donc je suis sûr que l'insert qu'il me reste fait 2 enregistrements, cela peut venir d'où, car là j'y comprends rien ?

  8. #8
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 42
    Points : 18
    Points
    18
    Par défaut je vais péter un cable
    bon voilà, je suis toujours bloqué au même endroit.

    Tout ce que je sais c'est que ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    else
    	{
    		echo "7";
    		echo $mot;
    		echo $visiteur;
    		mysql_query("INSERT INTO vu VALUES('', '".$visiteur."', '".$mot."')") or die ("ERREUR à l'ajout");
    	}
    créé 2 enregistrements dans la bdd. Le "7 de test" s'affiche bien, les variables sont correctes avant l'insertion.

    J'en peux plus, je ne trouve pas la solution à ce phénomène paranormal.


Discussions similaires

  1. Problème de doublon lors de la réunion de tables
    Par patsak dans le forum Requêtes
    Réponses: 7
    Dernier message: 06/06/2008, 14h28
  2. Problème de doublons lors de l'esportation sous exel
    Par noakiss dans le forum VBA Access
    Réponses: 1
    Dernier message: 26/03/2008, 09h34
  3. problème de doublon lors de la validation d'un formulaire
    Par barouz dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 01/06/2007, 10h45
  4. Réponses: 1
    Dernier message: 24/08/2006, 23h35
  5. Réponses: 7
    Dernier message: 25/07/2005, 13h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo