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

PHP & Base de données Discussion :

Insert oracle 9i et formulaire


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Avril 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 79
    Points : 32
    Points
    32
    Par défaut Insert oracle 9i et formulaire
    Bonjour,



    Je viens de me rendre compte que j'aurais besoin d'un formulaire exécutant un insert Oracle.

    Je suis un peu perdu devant la complexité de la chose



    Je me lance (je ne demande qu'un tracé de ce que je dois faire, le reste j'y arriverai) :



    - Case à remplir pour un username: ?

    - Case à remplir pour un password: ?

    - Case à remplir pour un e-mail: ?



    - Liste déroulante pour un choix:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <select name="choix">
    <option value="choix1"> Souris Rouge </option>
    <option value="choix2"> Souris Verte </option>
    <option value="choix3"> Souris Noire </option>
    </select>
    Variable contenant réponse:


    - Case à cocher pour acceptation Conditions:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="check" name="case" id="case"/><label for ="case"> Accept General Conditions</label>
    Variable de réponse si cochée: Vérification:


    - Vérification si username n'existe pas dans oracle: ?




    - Connexion à la BDD oracle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       $c=OCILogon("username", "password", "SID");
       if ( ! $c ) {
         echo "Unable to connect: " . var_dump( OCIError() );
         die();
       }



    - Insertion données:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       $s = OCIParse($c, "insert into nomdelatable values ('username', 'password')");
       OCIExecute($s, OCI_DEFAULT);



    - Insertion données avec variable temps: (temps du serveur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       $s = OCIParse($c, "insert into nomdelatable values ('username', 'email','date_creation')");
       OCIExecute($s, OCI_DEFAULT);



    - Sauvegarde modifications:



    - Déconnexion Oracle:


    Je comptais le faire mais vu que je suis pas très calé, j'ai préféré le faire avec des personnes un peu plus expérimentées ... :/

    J'essaierai de voir ce que je peux en tirer demain.

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    tu cherches quoi? le manuel pour utiliser le pilote OCI ?
    ou c'est un probleme d'algorithme?
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Avril 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 79
    Points : 32
    Points
    32
    Par défaut
    Je suis simplement perdu avec les bouts de code, et certains bouts de code que je ne trouve pas pour des cases à remplir avec un username ...

    Ainsi que pour sécuriser la méthode $_POST, je suis admin réseau mais le développement j'ai du travail à faire encore ...

    Je vais essayer de sortir un code à peu près correct.

  4. #4
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    admin réseau
    je comprends mieux pourquoi tu tiens absolument a prendre des ptits grumeaux dans tous les coins et les mettre ensemble au lieu de faire ta propre sauce à toi bien liée.

    $_POST[] n'est pas une méthode c'est une variable à laquelle tu as accès. en soit il n'y a rien à sécuriser dans $_POST, tu l'utilises et puis c'est tout.

    Ce que tu dois faire c'est tester le contenu de $_POST et le forcer à avoir la forme prévue (validation/netoyage) (enfin POST en lui même sera toujours un tableau, je parle des cases du tableau).
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Avril 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 79
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par gene69 Voir le message
    admin réseau
    je comprends mieux pourquoi tu tiens absolument a prendre des ptits grumeaux dans tous les coins et les mettre ensemble au lieu de faire ta propre sauce à toi bien liée.
    Eh oui ... ^^ Je suis plus spécialisé domaine sécurité



    J'ai commencé un peu, mais là je suis en cours donc je vois ça un peu cet après midi.




    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
    20
    21
    <?php
     
       $c=OCILogon("user", "pass", "sid");
       if ( ! $c ) {
         echo "Unable to connect: " . var_dump( OCIError() );
         die();
       }
     
     
       $s = OCIParse($c, "insert into user.table values ('username', 'password')");
       OCIExecute($s, OCI_DEFAULT);
     
       $s = OCIParse($c, "insert into user.tabletwo values ('username', 'email','date_creation')");
       OCIExecute($s, OCI_DEFAULT);
     
     
       OCICommit($c);
     
       OCILogoff($c);
     
    ?>



    HTML Page: (Ce serait peut être mieux de ne pas afficher les variables sensibles non ?)

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN"
           "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <title>Inscription</title>
    </head>
    <body>
     
     
    <h1>Inscription au jeu:</h1>
     
     
    <form action="input_text.htm">
    <p>Username:<br>
    <input name="username" type="text" size="20" maxlength="20">
    </p>
    <p>Password:<br>
    <input name="pass" type="text" size="10" maxlength="10">
    </p>
    <p>E-Mail:<br>
    <input name="mail" type="text" size="20" maxlength="20">
    </p>
    </form>
     
     
    <form action="select.htm">
    <p>Choix du serveur pour inscription:</p>
    <p>
    <select name="Pizza" size="5"
    onchange="alert(this.form.Pizza.options[this.form.Pizza.selectedIndex].value)">
    <option value="S01">Serveur One</option>
    <option value="S02">Serveur Two</option>
    </select>
    </p>
    </form>
     
     
    <form action="check.htm">
    <p>Cochez ou non:<br>
    <input type="check" name="case" id="case"/><label for ="case"> Accept General Conditions</label>
    </p>
    </form>
     
     
    </body>
    </html>



    Il faut aussi que je fasse coïncider les variables entre HTML et PHP ?

    Ce dont j'ai peur c'est qu'on puisse voir le code source et faire planter le serveur oracle qui est déjà pas très sécurisé ...

    Après en ce qui concerne un script de vérification pour éviter les inscriptions automatisées visant à alourdir la base de données: une image ?


    En ce qui concerne le support de oci.dll avec php 5 quand on a une version de oracle 9i, apparement nous sommes obligés de passer par l'instant client 10g ou bien par l'extension php_pdo_oci.dll ?

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Avril 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 79
    Points : 32
    Points
    32
    Par défaut
    Bonjour,


    J'ai fait pas mal de tests mais aucun n'a abouti,




    Dernière version de apache et php utilisés disponible en téléchargement, php est installé en tant que module.

    J'ai décommenté la ligne de php_pdo_oci.dll dans php.ini.
    Redémarré apache.

    Testé avec un phpinfo mais dans PDO drivers, il n'y a pas de valeur, donc pdo_oci n'est pas utilisé ?
    Faut-il donc faire une autre manipulation? Car depuis les versions 5.3 de php, il suffit de dé-commenter celui que nous avons besoin ...


    Donc je suis bien embêté quand j'essaie de faire un test du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    try {
    $dbh = new PDO('oci:dbname=127.0.0.1/SID', 'username', 'password');
    }
    catch (PDOException $e) {
    trigger_error("Could not connect to database: ". $e->getMessage(), E_USER_ERROR);
    }
     
    oci_parse('INSERT INTO username.table (username, password) VALUES (testing, testingpass)');
     
    ?>


    Je sais plus trop quoi faire ...




    PS: oci8.dll n'est pas utilisable vu la version de oracle utilisée (9i) je suis donc obligé d'utiliser pdo_oci.dll ...

  7. #7
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    Il faut aussi que je fasse coïncider les variables entre HTML et PHP ?
    non, ça permet de rendre le code plus difficile à comprendre, c'est pas la peine. Par contre, si tu finis par avoir un systeme qui mape les variables automatiquement ça sera plus simple. (je n'ai pas dis qu'il ne fallait pas passer par une fonction de nettoyage automatiquement )

    Ce dont j'ai peur c'est qu'on puisse voir le code source et faire planter le serveur oracle qui est déjà pas très sécurisé ...
    il n'y a aucune raison que ton utilisateur soit informé qu'il existe une base oracle en backend. Si tu ne remontes pas de message d'erreur spécifique c'est invisible pour lui.
    Après en ce qui concerne un script de vérification pour éviter les inscriptions automatisées visant à alourdir la base de données: une image ?
    utilise un truc tout fait

    En ce qui concerne le support de oci.dll avec php 5 quand on a une version de oracle 9i, apparement nous sommes obligés de passer par l'instant client 10g ou bien par l'extension php_pdo_oci.dll ?
    pour le pilote à utiliser, j'ai envie de te dire que lorsque tu as le choix, utilise PDO.

    pour la conf' de OCI, je me souviens que j'avais bcp galérer et que je ne me souvient plus tout ce qu'il faut faire, ça dépend trop de ta version de serveur et de OCI. mais ça marche, t'inquiète.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Avril 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 79
    Points : 32
    Points
    32
    Par défaut
    Eh bien justement j'ai décommenté la ligne dans php.ini pour activer l'extension php_pdo_oci.dll ...

    Mais sur un simple test (commenté précédemment) ça ne fonctionne pas ...

    Si tu peux me dire où je me suis trompé? ...

  9. #9
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    il faut décrire ton erreur et ta plateforme.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Avril 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 79
    Points : 32
    Points
    32
    Par défaut
    Erreur 500 sur http://localhost/test.php

    J'ai désinstallé le module apache http de oracle qui était en version 1.3 sur la 9i.


    Donc je suis sur apache 2.2.17 et php 5.3.5.


    Le message d'erreur est classique sur IE ... :/

    (Au pire je te donne les accès vnc, parceque là je vois pas du tout comment ça a pu ne pas être mis en place ... )

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Avril 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 79
    Points : 32
    Points
    32
    Par défaut
    Edit: Suppression, puisque pas d'aide.

Discussions similaires

  1. Insertion des données du formulaire dans la base
    Par bebas dans le forum Langage
    Réponses: 9
    Dernier message: 23/02/2007, 12h03
  2. [Oracle] connexion Oracle via un formulaire
    Par CYCLOPE91440 dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 11/12/2006, 22h50
  3. Réponses: 1
    Dernier message: 25/10/2006, 18h06
  4. insertion photo dans un formulaire
    Par puppusse79 dans le forum IHM
    Réponses: 3
    Dernier message: 08/10/2006, 13h23
  5. Réponses: 1
    Dernier message: 07/10/2006, 10h35

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