php
  • mysql
  • join
  • 2013-03-28 3 views 0 likes 
    0

    J'ai fait cette petite fonction qui trouve l'ID de l'utilisateur et je qu'ID disponibles sur le site parce que j'inclus avant <head>Ce qui est plus efficace pour essayer de trouver ID ou utiliser JOIN

    $result=mysql_query("SELECT ID FROM korisnici WHERE username='".$_COOKIE["user"]."' AND password='".$_COOKIE["pass"]."'"); 
    $get=mysql_fetch_assoc($result); 
    $ID_KORISNIK=$get["ID"]; 
    if(empty($ID_KORISNIK)) 
    { 
        echo ' 
         <script>window.location="IDerror.php";</script> 
         '; 
    } 
    

    Alors Whan Je veux SELECT ou INSERT dans la base de données que je pourrais utiliser

    $r=mysql_query("SELECT * FROM uzg WHERE IDkorisnik='$ID_KORISNIK'"); 
    

    ou utiliser JOIN

    $r=mysql_query("SELECT * FROM uzg JOIN (uzg.IDkorisnik=korisnici.ID) WHERE korisnici.username='$_COOKIE["user"]' AND korisnici.password='$_COOKIE["pass"]'"); 
    

    W À votre avis, quel est le meilleur ou le plus efficace?

    +2

    vous pouvez toujours essayer de courir chaque option 1000 fois et voir comment ils prennent longtemps. – chrislondon

    +0

    [** Veuillez ne pas utiliser les fonctions 'mysql_ *' dans le nouveau code **] (http://bit.ly/phpmsql). Ils ne sont plus maintenus [et sont officiellement obsolètes] (http://j.mp/XqV7Lp). Voir la [** boîte rouge **] (http://j.mp/Te9zIL)? En savoir plus sur [* instructions préparées *] (http://j.mp/T9hLWi) à la place, et utiliser [PDO] (http://php.net/pdo) ou [MySQLi] (http://php.net/ mysqli) - [cet article] (http://j.mp/QEx8IB) vous aidera à décider lequel. – Kermit

    Répondre

    1
    1. Ne pas mot de passe magasin comme un cookie
    2. Jamais entrée utilisateur confiance, vos requêtes sont soumises à des attaques par injection SQL
    3. Ne pas utilisation mysql_* fonctions, l'utilisation AOP ou mysqli_* , et utiliser des instructions préparées pour empêcher les attaques par injection SQL

    Je recommanderais de vous informer sur prepared statements, et utiliser PDO ou MySQLi - this article vous aidera à décider lequel. Si vous choisissez PDO, here is a good tutorial.

    D'ailleurs je pense que votre première solution est préférable (mais vous devez corriger beaucoup de choses)

    +0

    J'ai stocké md5 de mot de passe réel, c'est ok? J'utilise la fonction qui vérifie chaque entrée et supprime indésirable avant d'utiliser mysql_query (http://www.homeandlearn.co.uk/php/quoteSmart.htm). mysqli? Puis-je l'utiliser si j'ai la base de données MySQL – FosAvance

    +0

    @FosAvance J'ai édité ma réponse pour ajouter quelques informations sur mysqli et PDO. Btw mysqli est juste un meilleur pilote pour la base de données MySQL. Enregistrer un mot de passe en tant que cookie (même haché) n'est pas une bonne idée, utiliser des sessions pour identifier les utilisateurs connectés – Uby

    +0

    alors nom d'utilisateur comme cookie et mot de passe en tant que session, si mon utilisateur cocher Se souvenir de moi rester? – FosAvance

    1

    si elle est un grand projet, je voudrais bien utiliser une classe d'utilisateurs donc je vais simplement appeler par

    $ new_user-> id;

    mais sinon, votre 1ère approche est beaucoup mieux, mais vous n'êtes pas vérifier si votre entrée est un identifiant valide d'abord, une fois que vous le confirmer est une pièce d'identité valide [peut-être un int existant] puis utilisez votre 1ère approche

    et le stockage de vos utilisateurs PWD même hachage est une mauvaise chose, car hash sont facilement piratable donc si vous voulez une vérification contre le vol de cookies, mettre un autre hachage

    +0

    un autre hachage? pourquoi l'utilisateur crack mot de passe sur son propre ordinateur. Que dois-je stocker sinon mot de passe pour identifier mon utilisateur? – FosAvance

    +0

    le problème est que cookie n'est pas une propriété privée de l'utilisateur, où le vol de cookie vient, quelqu'un peut simplement utiliser un code JS pour récupérer le cookie et casser le hachage, maintenant il a l'ID de l'utilisateur avec le pwd .. empêcher complètement cela impliquerait https, mais une bonne solution serait de stocker l'agent IP/USer/de l'utilisateur pour l'authentifier – ManZzup

    Questions connexes