Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & Oracle
PHP & Oracle Forum d'entraide sur Oracle avec PHP. Avant de poster -> FAQ Oracle et Cours Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/01/2011, 00h12   #1
Invité de passage
 
Fabien
Inscription : avril 2010
Messages : 69
Détails du profil
Informations personnelles :
Nom : Fabien

Informations forums :
Inscription : avril 2010
Messages : 69
Points : 3
Points : 3
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 :
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 :
<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 :
1
2
3
4
5
   $c=OCILogon("username", "password", "SID");
   if ( ! $c ) {
     echo "Unable to connect: " . var_dump( OCIError() );
     die();
   }



- Insertion données:

Code :
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 :
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.
Feldunost est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 09h31   #2
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
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 : 951
Points : 1 063
Points : 1 063
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 Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 10h01   #3
Invité de passage
 
Fabien
Inscription : avril 2010
Messages : 69
Détails du profil
Informations personnelles :
Nom : Fabien

Informations forums :
Inscription : avril 2010
Messages : 69
Points : 3
Points : 3
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.
Feldunost est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 10h12   #4
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
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 : 951
Points : 1 063
Points : 1 063
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 Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 10h51   #5
Invité de passage
 
Fabien
Inscription : avril 2010
Messages : 69
Détails du profil
Informations personnelles :
Nom : Fabien

Informations forums :
Inscription : avril 2010
Messages : 69
Points : 3
Points : 3
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 :
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 :
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 ?
Feldunost est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 14h41   #6
Invité de passage
 
Fabien
Inscription : avril 2010
Messages : 69
Détails du profil
Informations personnelles :
Nom : Fabien

Informations forums :
Inscription : avril 2010
Messages : 69
Points : 3
Points : 3
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 :
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 ...
Feldunost est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 15h46   #7
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
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 : 951
Points : 1 063
Points : 1 063
Citation:
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 )

Citation:
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.
Citation:
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

Citation:
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 Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 15h54   #8
Invité de passage
 
Fabien
Inscription : avril 2010
Messages : 69
Détails du profil
Informations personnelles :
Nom : Fabien

Informations forums :
Inscription : avril 2010
Messages : 69
Points : 3
Points : 3
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é? ...
Feldunost est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 17h34   #9
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
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 : 951
Points : 1 063
Points : 1 063
il faut décrire ton erreur et ta plateforme.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 18h31   #10
Invité de passage
 
Fabien
Inscription : avril 2010
Messages : 69
Détails du profil
Informations personnelles :
Nom : Fabien

Informations forums :
Inscription : avril 2010
Messages : 69
Points : 3
Points : 3
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 ... )
Feldunost est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2011, 10h27   #11
Invité de passage
 
Fabien
Inscription : avril 2010
Messages : 69
Détails du profil
Informations personnelles :
Nom : Fabien

Informations forums :
Inscription : avril 2010
Messages : 69
Points : 3
Points : 3
Edit: Suppression, puisque pas d'aide.
Feldunost est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h27.


 
 
 
 
Partenaires

Hébergement Web