Ce forum est maintenant fermé, seule cette archive statique reste consultable.
  FORUM Matbe.com
  OS, Software, Réseaux
  Programmation

  PHP besoin d'aides, conseils, etc... :)

 Page :   1  2
Page Précédente
Auteur Sujet :

PHP besoin d'aides, conseils, etc... :)

n°72367
JlS666
Posté le 18-10-2010 à 16:14:38  
 

Plop!
 
voilà je me permets d'ouvrir un sujet à propos de PHP,
je travaille actuellement sur un petit projet, un site relativement simple...
le projet contient CSS,HTML,PHP,Javascript.
 
au fur et à mesure que j'avance dans le projet je rencontre certains problèmes que j'arrive souvent à résoudre
par moi-même, mais parfois non^^ du coup j'espère qu'il y a des connaisseurs ici sur le forum qui
pourront m'aider.
 
mes questions vous paraîtront peut-être stupides par moment,
mais si je les pose c'est que j'ai du mal à y répondre par moi-même^^
 
je travaille sous Eclipse pour Php, et j'utilise WampServer.
les données sont maintenues dans une base
 
 
donc je commence par mon problème actuel :
 
j'ai un formulaire d'enregistrement d'un nouvel utilisateur,
celui ci ne contient que quelques textFields et un bouton submit.
une vérification du contenu des champs en javascript est lancée sur
chaque textField au moment du OnChange pour en vérifier la validité.
 
Le javascript fonctionne, pas de problème.
 
Le problème c'est le bouton submit... celui-ci est réglé en "disabled=true" par
défaut et ne devrait s'activer que si les champs sont correctement remplis.
Or, j'ai cette ligne de code pour le réactiver (en Js) mais il semblerait
que l'objet, l'élément Submit ne prenne pas disabled comme option...  
(alors que le disabled dans la balise html fonctionne...)
 
code html :
<input type="submit" value="Valider" id="btn" disabled="true">
 
code js :
if (valid == 1){
  form.getElementById("btn" ).disabled("false" );
 }
 
alors mon problème vient peut-être de la syntaxe, je n'en ai aucune idée,
toujours est-il que cela ne fonctionne pas! :P
 
si quelqu'un peut m'expliquer... Merci :)

mood
Pub
Posté le 18-10-2010 à 16:14:38  
 

n°72368
LostSoul
Belgian Beer Forever (en slip)
Posté le 18-10-2010 à 16:21:55  
 

1- <input disabled="disabled" .... />
2- document.getElementById("btn" ).disabled = false;


Message édité par LostSoul le 18-10-2010 à 16:23:49

---------------
Le cheval, c'est bon, mangez-en!  
[ www.in-wonderland.net | www.start64.com | www.majorgeeks.com | updt-bdnq ]
n°72369
JlS666
Posté le 18-10-2010 à 16:40:11  
 

ben... c'est pas très concluant^^
 
j'ai changé mon code tel que tu l'as mis,  
et j'ai ajouté une "alert" pour vérifier le passage dans le if... ca donne ceci :
 
if (valid == 1){
  alert("valid" );
  form.getElementById("btn" ).disabled("false" );
 }  
 
je recois bien mon popup "valid" mais le bouton reste disabled... :/

n°72370
LostSoul
Belgian Beer Forever (en slip)
Posté le 18-10-2010 à 16:46:38  
 

.disabled = false et pas .disabled("false" ) :o


---------------
Le cheval, c'est bon, mangez-en!  
[ www.in-wonderland.net | www.start64.com | www.majorgeeks.com | updt-bdnq ]
n°72371
JlS666
Posté le 18-10-2010 à 16:49:47  
 

euh... j'ai copié collé le code que j'ai mis en haut sans faire attention...
le code de mon programme qui ne va toujours pas c'est bien :
 
if (valid == 1){
  alert("valid" );
  form.getElementById("btn" ).disabled=false;
 }
 
(sry pour le ctrl^c/ctrl^v :P )

n°72372
LostSoul
Belgian Beer Forever (en slip)
Posté le 18-10-2010 à 16:56:49  
 

et pas form. mais document. ;)


---------------
Le cheval, c'est bon, mangez-en!  
[ www.in-wonderland.net | www.start64.com | www.majorgeeks.com | updt-bdnq ]
n°72373
JlS666
Posté le 18-10-2010 à 17:02:04  
 

pour être complet voilà la signature de ma fonction javascript :
 
function checkFormValid(form) {
code...
}
 
form c'est le formulaire que je lui envoie pour travailler dessus,
quand j'appelle ma fonction (avec le onchange d'un textfield) ca donne ceci :
 
...onchange="checkFormValid(this.form)"...
 
cela ne fonctionne pas ainsi aussi?
 
EDIT :  
 
avec document.get... ca fonctionne ;)
merci  
 
j'ai envoyé le formulaire à la fonction pour pouvoir utiliser form.elements[...] pour boucler sur les éléments du formulaire...


Message édité par JlS666 le 18-10-2010 à 17:20:43
n°72374
Ashe
reenignE esreveR
Posté le 18-10-2010 à 17:05:32  
 

onchange ce sera appele que quand y aura plus le focus sur le champs
Sinon:
<form>
<input onchange="checkFormValid( this.parentNode );" />
</form>
 
Apres c'est ptet juste que ton valid est jamais == 1
(puis y a true et false en js, pour info)


---------------
pcx360 | Binary Genetics | Dreaming Prophet
“Entropy isn’t what it used to be.”
n°72375
JlS666
Posté le 18-10-2010 à 17:22:20  
 

si si Ashe, mon valid est bien à 1 puisque je recois l'alert ("valid" ) ;)
problème à priori réglé en utilisant le document.get...
 
je re tout à l'heure avec d'autres questions si je bloque encore :P
Thx LostSoul

n°72376
JlS666
Posté le 18-10-2010 à 20:26:46  
 

Me revoilà...
 
alors, j'ai un autre problème^^
 
j'utilise des variables de session pour le login,
je les déclare de cette manière au moment du login (sur ma page login.php):
 
...
if(!isset($_SESSION['userLoggedIn'])){        
session_start();
$_SESSION['userLoggedIn'] = array();        
$_SESSION['userLoggedIn'][0] = $recUser[0];        
$_SESSION['userLoggedIn'][1] = $recUser[1];        
$_SESSION['userLoggedIn'][2] = $recUser[2];        
header('Location:./index.php');
}
else{
session_close();
session_start();
$_SESSION['userLoggedIn'] = array();        
$_SESSION['userLoggedIn'][0] = $recUser[0];        
$_SESSION['userLoggedIn'][1] = $recUser[1];        
$_SESSION['userLoggedIn'][2] = $recUser[2];        
header('Location:./index.php');
}
...
 
 
(désolé je vois que l'affichage est foireux...)
les $rec[x] sont les résultats d'une requête mySql où :
$rec[0] = l'id utilisateur
$rec[1] = le login
$rec[2] = le password
 
jusque là tout va bien, je suis bien renvoyé sur ma page index.php
MAIS je me sers à nouveau des variables de session sur cette nouvelle page et j'obtiens une erreur :
 
Notice: Undefined variable: _SESSION in C:\chemin\index.php on line 109
 
 
la ligne 109 en question :
 
...
$sql = "SELECT * FROM proj WHERE owner=".$_SESSION['userLoggedIn'][0];
...
 
tout me semble en ordre, je ne trouve pas l'erreur... surtout que quelques lignes au-dessus je fais appel à cette même variable de Session sans aucune erreur... :/


Message édité par JlS666 le 18-10-2010 à 20:30:19
n°72377
Ashe
reenignE esreveR
Posté le 18-10-2010 à 20:32:35  
 

le session_start il doit etre tout en haut (sinon c'est un peu difficile d'utiliser $_SESSION dans le if)
Accessoirement le session_close sert a rien
edit: techniquement le if/else sert a rien vu que tu fais pareil dans les deux mais bon :D
edit2: et vu l'horreur SQLienne (genre je modifie le cookie histoire de foutre "; DROP TABLE proj;" au lieu du truc que t'as mis, histoire de suicider ta DB), ce serait bien d'utiliser mysqli et:
$stmt = $conn->prepare( 'SELECT * FROM proj WHERE owner = ?' );
$stmt->bind( 'i', $_SESSION['userLoggedIn'][0] );
(dans l'idee)
Apres ya plein d'autres problemes mais bon, une chose a la fois :o

Message cité 1 fois
Message édité par Ashe le 18-10-2010 à 20:35:40

---------------
pcx360 | Binary Genetics | Dreaming Prophet
“Entropy isn’t what it used to be.”
n°72378
JlS666
Posté le 18-10-2010 à 20:36:23  
 

ben ce que je me suis dit en faisant cela c'est que si l'utilisateur se logg avec un autre compte lorsqu'il arrive dans ce if le tableau de session existe déjà donc j'utilise .close() pour le terminer... c'est une erreur? le _close est utilisé dans quels cas alors?

n°72379
Ashe
reenignE esreveR
Posté le 18-10-2010 à 20:40:51  
 

Ca existe pas session_close, c'est session_destroy
Mais c'est a peu pres aussi inutile qu'un session_close
Si tu veux te delogger, tu fais un unset de tes trucs (et virer le cookie si tu utilises un cookie)


---------------
pcx360 | Binary Genetics | Dreaming Prophet
“Entropy isn’t what it used to be.”
n°72380
JlS666
Posté le 18-10-2010 à 20:45:07  
 

ben je n'utilise pas de cookie, juste une session^^
donc en gros ma session je la _destroy uniquement quand je me délog... ok...
par contre ca ne résout pas mon problème^^
même en démarrant ma session en haut de ma page login.php j'ai toujours ce message d'erreur...^^
et pour le mysqli je ne crois pas que ca change énormément, tout ce que je fais ici c'est mettre mes requêtes mysql dans une string temporaire ($sql) et ensuite je l'appelle en faisant un mysql_query($sql);
c'est fonctionnel puisque je crée ma bd ainsi et je fais des manipulations dessus... c'est juste qu'ici, on dirait que quand il change de page les variables de session disparaissent... :/

n°72381
charlydk
The power of Tiret...
Posté le 18-10-2010 à 21:12:38  
 

Ashe a écrit :

edit2: et vu l'horreur SQLienne (genre je modifie le cookie histoire de foutre "; DROP TABLE proj;" au lieu du truc que t'as mis, histoire de suicider ta DB), ce serait bien d'utiliser mysqli et:
$stmt = $conn->prepare( 'SELECT * FROM proj WHERE owner = ?' );
$stmt->bind( 'i', $_SESSION['userLoggedIn'][0] );
(dans l'idee)


Sauf que dans les serveurs PHP actuellement l'option "magic_quotes_gpc" est mise à ON par défaut ce qui ajoute des \ aux " et ' qui se trouvent dans la variable. Cela n'empêche bien sûr pas d'utiliser mysqli mais il n'y aurait à priori pas d'injection SQL possible dans son cas...


---------------
FERMETURE DU FORUM MATBE  => retrouvons-nous sur http://www.iwyt.net  :)
n°72382
Ashe
reenignE esreveR
Posté le 18-10-2010 à 21:47:58  
 

charlydk a écrit :


Sauf que dans les serveurs PHP actuellement l'option "magic_quotes_gpc" est mise à ON par défaut ce qui ajoute des \ aux " et ' qui se trouvent dans la variable. Cela n'empêche bien sûr pas d'utiliser mysqli mais il n'y aurait à priori pas d'injection SQL possible dans son cas...


y a pas de " ou de ' dans cke j'ai tape


---------------
pcx360 | Binary Genetics | Dreaming Prophet
“Entropy isn’t what it used to be.”
n°72383
charlydk
The power of Tiret...
Posté le 18-10-2010 à 22:02:53  
 

Ah, je croyais que les " étaient compris dedans  :d

 

EDIT: sinon dans la doc ya ça...

Citation :

mysql_query() envoie une seule requête (les requêtes multiples ne sont pas supportées) à la base de données


Ce qui empêcherait ton code de s'exécuter, non? ou je me goure encore?  :p


Message édité par charlydk le 18-10-2010 à 22:35:29

---------------
FERMETURE DU FORUM MATBE  => retrouvons-nous sur http://www.iwyt.net  :)
n°72384
Ashe
reenignE esreveR
Posté le 18-10-2010 à 23:45:41  
 

waip, ca empeche pas (y a quasi aucun controle, d'ailleurs mysql balance la requete en clair sur le reseau chaque fois qu'elle est executee, meme quand elle est preparee avec mysqli)
edit: apres, a part le fait d'ecrire du code un minimum correct (ce serait deja un net progres), simplement foutre les bons droits sur l'utilisateur permettrait de pas faire de DELETE/TRUNCATE/DROP, ou betement d'avoir un utilisateur pour la lecture seule et un autre pour l'ecriture, etc...
edit2: et n'importe quelle personne qui connait + au php que faire un echo 'booh'; desactive les magic quotes
edit3: et pour un exemple plus parlant si celui que j'ai donne l'est pas, suffit d'imaginer un 'DELETE FROM truc WHERE id = ' . $_SESSION['chose'] ou jfout un "id" dans $_SESSION

Message cité 1 fois
Message édité par Ashe le 18-10-2010 à 23:52:13

---------------
pcx360 | Binary Genetics | Dreaming Prophet
“Entropy isn’t what it used to be.”
n°72385
Naunaud128
Crawling Up A Hill
Posté le 19-10-2010 à 00:06:56  
 

(les magic_quotes :/)


---------------
Let the changes in
n°72386
JlS666
Posté le 19-10-2010 à 09:13:12  
 

euh... il n'est pas question de sécurité ici... les injections sql seront à priori impossibles dans mon code suite à des vérifications de contenus sur les champs et aussi parce que j'utilise des id générés automatiquement...
 
ce que je voudrais savoir c'est si oui ou non ma session peut "disparaître" quand je renvoie vers une autre page... parce qu'ici on dirait que les variables de session n'existent plus... (même en sortant mon session_start de la boucle ;) )

n°72387
Ashe
reenignE esreveR
Posté le 19-10-2010 à 10:02:07  
 

Le session_start faut le mettre partout ou tu veux utiliser les sessions, si t'es pas dans le meme .php elles vont pas revenir par magie
Mais vu que t'es un expert en securite, tu dois le savoir [:bbloup:3]


---------------
pcx360 | Binary Genetics | Dreaming Prophet
“Entropy isn’t what it used to be.”
n°72388
LostSoul
Belgian Beer Forever (en slip)
Posté le 19-10-2010 à 10:04:14  
 

moi j'y connais rien à php donc je dis plus rien :sol:


---------------
Le cheval, c'est bon, mangez-en!  
[ www.in-wonderland.net | www.start64.com | www.majorgeeks.com | updt-bdnq ]
n°72389
JlS666
Posté le 19-10-2010 à 10:12:40  
 

LOL super Ashe, dis moi où tu as vu que je disais que j'étais un expert en sécurité^^ xD
je vérifie tous mes champs et j'empêche l'entrée de mots qui pourraient être utilisés comme requêtes sql c'est tout^^ puis de toute facon ici le but n'est pas de mettre le code en ligne donc l'aspect sécurité est pour moi (pour l'instant) facultatif...

n°72390
Ashe
reenignE esreveR
Posté le 19-10-2010 à 10:20:55  
 

Waip, autant tout reecrire plus tard, ca fait gagner du temps :D


---------------
pcx360 | Binary Genetics | Dreaming Prophet
“Entropy isn’t what it used to be.”
n°72391
LostSoul
Belgian Beer Forever (en slip)
Posté le 19-10-2010 à 10:24:22  
 

de toute façon PHP cay MAL


---------------
Le cheval, c'est bon, mangez-en!  
[ www.in-wonderland.net | www.start64.com | www.majorgeeks.com | updt-bdnq ]
n°72392
JlS666
Posté le 19-10-2010 à 10:24:47  
 

ben je suis loin d'être expert donc du coup OUI je finirai certainement par tout réécrire plus tard, ici c'est vraiment dans un but d'apprentissage que je travaille sur ce code... sans aucune prétention lol.
ca roule pour l'instant, merci pour votre aide, je re-UPperai surement dès que j'aurai un autre souci... (dans peu de temps vu mon niveau :P )

n°72393
Ashe
reenignE esreveR
Posté le 19-10-2010 à 10:29:25  
 

Et donc dans ce but d'apprentissage tu preferes dire que ce que tu as fait fonctionne sans probleme contrairement a ce qu'on te dit, je vois je vois [:bbloup:3]


---------------
pcx360 | Binary Genetics | Dreaming Prophet
“Entropy isn’t what it used to be.”
n°72394
JlS666
Posté le 19-10-2010 à 10:52:38  
 

Ben je te le redis, ce que j'ai fait fonctionne Ashe...
(notamment grâce à votre aide @ toi & LostSoul)
 
En même temps c'est facile de juger quand je ne donne que quelques lignes de code... -.-'

n°72395
LostSoul
Belgian Beer Forever (en slip)
Posté le 19-10-2010 à 10:54:36  
 

Non mais Ashe il est toujours comme ça, faut pas faire attention :sol:


---------------
Le cheval, c'est bon, mangez-en!  
[ www.in-wonderland.net | www.start64.com | www.majorgeeks.com | updt-bdnq ]
n°72396
charlydk
The power of Tiret...
Posté le 19-10-2010 à 10:54:59  
 

Ashe a écrit :

waip, ca empeche pas (y a quasi aucun controle, d'ailleurs mysql balance la requete en clair sur le reseau chaque fois qu'elle est executee, meme quand elle est preparee avec mysqli)
edit: apres, a part le fait d'ecrire du code un minimum correct (ce serait deja un net progres), simplement foutre les bons droits sur l'utilisateur permettrait de pas faire de DELETE/TRUNCATE/DROP, ou betement d'avoir un utilisateur pour la lecture seule et un autre pour l'ecriture, etc...
edit2: et n'importe quelle personne qui connait + au php que faire un echo 'booh'; desactive les magic quotes
edit3: et pour un exemple plus parlant si celui que j'ai donne l'est pas, suffit d'imaginer un 'DELETE FROM truc WHERE id = ' . $_SESSION['chose'] ou jfout un "id" dans $_SESSION


Ca m'intéresse ce sujet... (bien que je ne fasse plus vraiment de php mais bon, c'est bon pour la culture générale)
 
Dans le cas de mysqli et de l'exemple que tu as donnée, ce serait le même problème niveau sécurité si on utilise un delete à la place d'un select, non? car ici aussi tu passes direct l'id... Il faut, je suppose, faire d'autre vérifs préalables, non?
$stmt = $conn->prepare( 'SELECT * FROM proj WHERE owner = ?' );  
$stmt->bind( 'i', $_SESSION['userLoggedIn'][0] );


---------------
FERMETURE DU FORUM MATBE  => retrouvons-nous sur http://www.iwyt.net  :)
n°72397
Ashe
reenignE esreveR
Posté le 19-10-2010 à 11:11:56  
 

le i du bind c'est pour integer (qui meurt miserablement si tu lui files un truc qui n'est pas un entier)
Puis accessoirement c'est une autre facon de construire la requete donc dans la plupart des cas il va rien parser et simplement mettre le string tel quel (si il est pas parse comme etant une requete ca risque pas de faire grand chose)
Apres c'est juste de la securite au niveau de ta DB, ca empeche pas de par exemple sur un forum taper comme message <script>... </script> avec du JS dedans, si tu valides pas les donnees tu vas te retrouver avec des jolis xss et autres sur ton site au moment d'afficher le post... sauf que si tu utilises du xsl c'est impossible et du coup y a plus rien a valider...


---------------
pcx360 | Binary Genetics | Dreaming Prophet
“Entropy isn’t what it used to be.”
n°72404
JlS666
Posté le 20-10-2010 à 12:35:37  
 

Yop!
 
je reviens vers vous pour une erreur (probable) de syntaxe dans une requête mysql... voilà ma requête :
 
"UPDATE user SET
login='".$_POST['loginToModify']."',
password='".$_POST['passwordToModify']."',
name='".$_POST['nameToModify']."',
firstName='".$_POST['firstNameToModify']."',
email='".$_POST['emailToModify']."',
level='".$_POST['userLevelList']."'
WHERE pk_user ='".$_POST['idToModify']."'";
 
je cherche mais je ne sais pas où mon erreur se situe...

Message cité 1 fois
Message édité par JlS666 le 20-10-2010 à 12:40:11
n°72405
LostSoul
Belgian Beer Forever (en slip)
Posté le 20-10-2010 à 12:39:41  
 

le mieux ce serait ptet de l'afficher avant de l'exécuter, tu verrais direct où est l'erreur :whistle:


---------------
Le cheval, c'est bon, mangez-en!  
[ www.in-wonderland.net | www.start64.com | www.majorgeeks.com | updt-bdnq ]
n°72406
JlS666
Posté le 20-10-2010 à 12:40:34  
 

bonne idée :D

n°72407
Ashe
reenignE esreveR
Posté le 20-10-2010 à 13:41:02  
 

(ou d'afficher l'erreur de mysql, qui dira directement ou ca pose probleme)
(mais encore une jolie requete facilement exploitable, ca fait plaisir)


---------------
pcx360 | Binary Genetics | Dreaming Prophet
“Entropy isn’t what it used to be.”
n°72408
LostSoul
Belgian Beer Forever (en slip)
Posté le 20-10-2010 à 13:54:52  
 

y'a pas un moyen d'écrire plus proprement ses requêtes en php au fait ?


---------------
Le cheval, c'est bon, mangez-en!  
[ www.in-wonderland.net | www.start64.com | www.majorgeeks.com | updt-bdnq ]
n°72409
Ashe
reenignE esreveR
Posté le 20-10-2010 à 13:59:57  
 

[fixed]$stmt = $conn->prepare( 'UPDATE user SET login = ?, password = ?, name = ?, firstName = ?, email = ?%2

n°72410
Ashe
reenignE esreveR
Posté le 20-10-2010 à 13:59:57  
 

[fixed]$stmt = $conn->prepare( 'UPDATE user SET login = ?, password = ?, name = ?, firstName = ?, email = ?%2

n°72411
Ashe
reenignE esreveR
Posté le 20-10-2010 à 13:59:57  
 

[fixed]$stmt = $conn->prepare( 'UPDATE user SET login = ?, password = ?, name = ?, firstName = ?, email = ?%2

n°72412
Ashe
reenignE esreveR
Posté le 20-10-2010 à 13:59:57  
 

[fixed]$stmt = $conn->prepare( 'UPDATE user SET login = ?, password = ?, name = ?, firstName = ?, email = ?%2

 Page :   1  2
Page Précédente
  FORUM Matbe.com
  OS, Software, Réseaux
  Programmation

  PHP besoin d'aides, conseils, etc... :)