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 :

Connexion à un serveur


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut Connexion à un serveur
    En reprenant une application serveur qui montre une galerie de photos, je me replonge dans le PHP que je n'avais plus pratiqué depuis plus de 15 ans : dur, dur.

    Passant de PHP 5 à PHP 7, j'ai dû remplacer tous les mySQL par des mySQLi. J'ai réussi à mettre en œuvre mon application en local, mais j'ai un problème et je m'y emmêle les crayons : c'est relatif à la connexion.

    NOTA : mon application serveur se trouve sur un Raspberry Pi 3B+ sous rasbian "Stretch". Ce Raspberry à une adresse fixe 192.168.0.X

    En local, j'écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MySQLi_Connect("my_host", "my_user", "my_password");
     
    Avec "my_host" = "localhost" et "my_user" = "root".
    Et tout se passe bien.

    Maintenant, je m'emmêle lorsque je veux atteindre mon application à partir d'un poste distant. Par poste distant, j'entends :

    • Un PC situé sur le réseau local,
    • Un PC situé dans le "monde" ; j'ai une adresse fixe de part mon FAI.


    Deux cas se présentent :

    • Administrer mon application : je dois m'identifier.
    • Visiter mon application : je n'ai pas à m'identifier, j'y vais comme une visiteur lambda.


    Dans chacun de ces cas, que valent "my_host", "my_user" et "my_password".

    Merci pour vos renseignements.

    Cordialement.

    Pierre.

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Bonjour,

    J'imagine que votre environnement local est en Windows ?

    Et du coup le PI3 lui c'est du Linux.

    Linux, contrairement à Windows est sensible à la casse et donc ceci n'existe pas en Linux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MySQLi_Connect("my_host", "my_user", "my_password");
    Mais ceci oui :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysqli_connect("my_host", "my_user", "my_password");

  3. #3
    Membre averti Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    632
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 632
    Points : 405
    Points
    405
    Par défaut
    essais ça. j'utilise windows.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $mysqli = new mysqli('my_host', 'my_user', 'my_password','basse_de_donnée');
    $mysqli = new mysqli('127.0.0.1', 'root', '', 'ducerf'); ici le password est vide car j'utilise msqli en local.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    $email = htmlspecialchars( $_POST['email']) ;
     $sql = "SELECT email, token FROM membre WHERE email = '".$email."'";
    if (!$result = $mysqli->query($sql)) {
     
           header('Location: index.php?error=1');
       }
     
       if ($result->num_rows === 0) {
     
           header('Location: index.php?error=1');
       }
     
     if ($data = mysqli_fetch_array($result))
      {
     ; }
    mysqli_close($mysqli); 
     
         $result->close();

  4. #4
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysqli_connect("my_host", "my_user", "my_password");
    Erreur de frappe dans ce forum. C'est bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqli_connect("my_host", "my_user", "my_password");
    qui est écrit dans mes fichiers *.php.

    Cordialement.

    Pierre

  5. #5
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Ok,

    Pour répondre à votre question quelque soit, d'où vous atteignez votre serveur, la connexion à la db ne change pas.

    Mais cela ne doit pas être root et il faut un mot de passe (sécutité oblige).

    C'est votre application PHP que travaille avec la db et non pas l'utilisateur qui se connecte.

  6. #6
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Citation Envoyé par Philcmoi Voir le message
    essais ça. j'utilise windows.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $mysqli = new mysqli('my_host', 'my_user', 'my_password','basse_de_donnée');
    $mysqli = new mysqli('127.0.0.1', 'root', '', 'ducerf'); ici le password est vide car j'utilise msqli en local.
    Depuis un autre PC sur mon réseau interne, j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqli_connect("localhost", "root", "my_password");
    et cela fonctionne. Ma conclusion :

    Depuis n'importe où, les trois termes à employer : "localhost", 'root"', "my_password" sont les mêmes, à la grosse différence que :

    • Si je veux être administrateur, c'est à moi de fournir le bon mot de passe,
    • Si je suis un simple visiteur, c'est le serveur qui va lui même fournir le mot de passe qu'il a dans ses entrailles bien caché, codé.


    Est-ce vrai ?

    Cordialement.

    Pierre

  7. #7
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Vous confondez Moteur de base de données et base de données applicatif.

    Le root, va utiliser le moteur de base de données et acceder à tout les schémas de MySQL (votre_db, mysql, performance_schema...;autres).

    Votre application de photo, à une base de données qui est accédé par root, dans cette base, il y a surement une table qui gère les utilisateurs de votre applications photo et qui donneront les droits sur votre application uniquement.

    J'espère être clair

  8. #8
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Vous confondez Moteur de base de données et base de données applicatif.

    Le root, va utiliser le moteur de base de données et acceder à tout les schémas de MySQL (votre_db, mysql, performance_schema...;autres). ...
    C'est certainement vrai.

    Citation Envoyé par MaitrePylos Voir le message
    ... Votre application de photo, a une base de données qui est accédé par root, ...
    Oui.

    Citation Envoyé par MaitrePylos Voir le message
    ... dans cette base, il y a surement une table qui gère les utilisateurs de votre applications photo et qui donneront les droits sur votre application uniquement. ...
    Non. Mon mot de passe n'est pas dans la base données ; il est codé, crypté, ailleurs. Les autres utilisateurs sont les visiteurs qui n'ont pas besoin de mot de passe.

    C'est là où je ne comprends pas. Pour accéder à cette base, il faut un mot de passe et celui là ne peut pas être dans une table de la base.

    Dans le cas où mon application est chez mon FAI par exemple, quels doivent être les paramètres à donner à mysqli_connect pour s'y connecter ?

    Je suis désolé, tout cela est encore très confus dans ma tête.

    Cordialement.

    Pierre

  9. #9
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Dans le cas où mon application est chez mon FAI par exemple, quels doivent être les paramètres à donner à mysqli_connect pour s'y connecter ?
    Dans ce cas les identifiant que votre FAI, vous aura donné pour la base de données qui se trouve chez votre FAI.

  10. #10
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Ma confusion vient du fait qu'à l'époque où j'avais écrit cette application, deux cas seulement se présentaient car je n'avais qu'un seul PC :

    • Sur mon réseau local : mysqli_connect( 'localhost', 'root', 'monMdPlocal'); mais il fallait en plus, que je crée une base de données, disons 'mes_Photos'.
    • Chez mon FAI (Free) : il n'y a qu'une base de données possible et elle m'est fournie : maBase d'où : mysqli_connect('sql.free.fr', 'maBase', 'monMdPFree');

    Reprenant cette application, j'ai dû changer tous les mysql en mysqli, car le "serveur" sur lequel je souhaite l'implanter est un Raspberry Pi 3B+ (raspbian "stretch") qui utilise PHP 7.

    Et c'est là où j'ai commencé à me mélanger les crayons. En effet, comme l'écran de mon Raspberry est tout petit, j'ai mené les modifications sur mon PC (sous Windows XP) puis les versais sur le Raspberry et c'est là où ça s'est compliqué.

    En effet, je voulais voir si cela fonctionnait à partir de mon PC qui de ce fait se trouve dans un troisième cas de configuration : mon PC est considéré comme un serveur distant (adresse 192.168.0.x) vis à vis de Raspberry mais il n'y a pas de base de données imposée ; il n'y en a pas et je dois en créer une. Il existe certainement des FAI chez lesquels la base n'est pas créée, ce qui correspondrait aussi à ce troisième cas ?

    Et surtout, ce qui me choquait est que le deuxième paramètre de mysqli_connect est décrit comme "my-user" et qu'il fallait que j'y donne le nom de la base de données chez mon FAI. D'où maintenant mes grosses confusions !

    J'essaie donc de rabouter ces divers cas.

    Supposant que, d'un PC extérieur (J'ai une IP publique fixe) quelqu'un veuille mettre mon application sur mon Raspberry (qui est donc le FAI qui possède un moteur de base de données mais sans base de données) quels sont les paramètres que je dois lui fournir pour la fonction mysqli_connect('host', 'username', 'password') ?

    Désolé pour ce long texte.

    Cordialement.

    Pierre.

  11. #11
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Admettons que je me connecte sur votre PI3, pour avoir accès à votre appli.
    Cette application à besoin d'une base de données....la question est où est-elle ? et de là vous aurez vos informations.

  12. #12
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Admettons que je me connecte sur votre PI3, pour avoir accès à votre appli. ...
    Effectivement, il faut pouvoir y avoir accès et je ne sais déjà pas comment je ferais depuis l'extérieur.

    Depuis mon réseau privé, c'est simple, je donne l'IP de mon serveur puis le chemin d’accès :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IPPrivéeDuServeur/LeRépertoireQuiVaBien/GérerMonAppli.php
    Mais depuis l'extérieur, je vais donner mon IP publique et que dois-je donner ensuite pour être dirigé sur mon serveur et non pas n'importe quel PC de mon réseau ?

    Autrement dit je tape :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonIPPublique/???/LeRépertoireQuiVaBien/GérerMonAppli.php
    C'est quoi le ???

    ou bien est-ce une question de redirection ? Voilà ce que me présente mon routeur Free :

    Nom : Redirection.jpg
Affichages : 62
Taille : 31,8 Ko

    Pour l'IP de destination, je suppose que c'est celle où est installé l'appli, mais pour le port externe et le port interne, que faut-il mettre ?

    Citation Envoyé par MaitrePylos Voir le message
    ... Cette application à besoin d'une base de données....la question est où est-elle ? et de là vous aurez vos informations.
    Je suppose donc qu'avec ce qui est établi ci-dessus, je sais où est ma base de données et, dans ce cas, le infos qu'il faut que je donne sont :

    Hote : localhost

    UserName : root

    Cordialement.

    Pierre

Discussions similaires

  1. [Debutant] Connexion à un serveur SQL Server sur le reseau
    Par klael dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/02/2009, 03h07
  2. Réponses: 11
    Dernier message: 13/10/2003, 14h48
  3. connexion sql serveur
    Par DiJiRiDouS dans le forum ASP
    Réponses: 10
    Dernier message: 16/09/2003, 16h14
  4. comment gerer plusieurs connexions client/serveur
    Par naili dans le forum C++Builder
    Réponses: 3
    Dernier message: 14/08/2002, 16h58
  5. Réponses: 4
    Dernier message: 04/07/2002, 12h31

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