Du PHP3 à la version PHP5

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Du PHP3 à la version PHP5

Re: Du PHP3 à la version PHP5

par moogli » 27 janv. 2012, 08:10

Et j'ajouterais, au vue du : de page en page, de regarder du côté des sessions.

Quand a ton exemple pourquoi faire une référence de plus alors que tu peux utiliser le tableau dans la chaîne de caractère par simple concaténation.
Je te conseil aussi fortement d'utiliser mysql_real_escape_string pour sécuriser un minimum t'es requêtes la c'est ouvert au injection SQL, xss etc etc.

@+

Re: Du PHP3 à la version PHP5

par xTG » 26 janv. 2012, 21:37

Fais un var_dump($_POST); et tu verras réellement les variables transmises.
Regardes aussi dans $_GET suivant comment est configuré ton formulaire...

Re: Du PHP3 à la version PHP5

par elgringo67 » 26 janv. 2012, 21:33

Bonsoir J'avais bien compris ...
Mais je prendre l'exemple suivant :
Ce que je faisais et qui fonctionnait avant..
<?php
// connection bdd
include "connexion.php" ;
$sql="select email,numero_client from particulier where email='$email' and numero_client='$numero_client' ";
$resultat=mysql_query($sql);
$nbre=mysql_num_rows($resultat);
if (!$nbre)
{
include("noacces.php");
}
else
{
session_start();
$_SESSION['email']=$_POST['email'];
$_SESSION['numero_client']=$_POST['numero_client'];
exit(header('Location:accueil_particulier.php?'.session_name().'='.session_id()));
}
mysql_close($db);
?>
Maintenant il faut déclarer les variables pour que cela fonctionne et encore!!!:
<?php
// connection bdd
include "connexion.php" ;
$email = $_POST['email'];
$numero_client = $_POST['numero_client'];
etc..

Le souci que rien ne se passe une fois quand on accède à la page suivante :
le $numero_client et $email ne s'affichent pas..et pourtant il interroge bien la base de donnée.
Le passage des variables ne se fait pas PK! quand je fais un echo pour tester rien !
:oops:
Qu'est ce que je dois faire pour que de page en page je ne perds pas mes variables
C'est quoi la discipline que je dois avoir quand j'ai des formulaires ou des résultats à des requêtes à afficher !
Mes questions paraissent longues et confuses..mais j'essaie d'expliquer les difficultés que je rencontre..
Merci de votre patience..

Re: Du PHP3 à la version PHP5

par sirakawa » 26 janv. 2012, 09:45

Merci pour votre reponse.
Mais concretement imaginez j'ai un script de ce genre:

<?php
include"connexion.php";

$sql="select * from particulier where numero_client='$numero_client' ";
$resultat= mysql_query($sql);
while($particulier=mysql_fetch_array ($resultat))
{
$id=$particulier['idparticulier'];
$nom=$particulier['nom'];
$prenom=$particulier['prenom'];
$adresse=$particulier['adresse'];
$cp=$particulier['cp'];
$ville=$particulier['ville'];
$tel=$particulier['tel'];
$email=$particulier['email'];
$numero_client=$particulier['numero_client'];
}

echo" <font color=black>Numero client : $numero_client </font> ";

?>

Que dois-je faire pour l'ameliorer pour passer en PHP5?
Il faut que je declare les variables du style:
$email = $_POST['email']; 
$numero_client = $_POST['numero_client'];
Mais est ce suffisant?
Merci pour tout
Je vois mal le rapport entre la question initiale la réponse avisée de Moogli et ce bout de code.
En effet, si les valeurs sont extraites d'une BDD, comme c'est le cas, la façon dont PHP en lit les valeurs n'a pas changé et n'est jamais passée par $_POST, qui a toujours servi à lire les valeurs passées par un formulaire...

Re: Du PHP3 à la version PHP5

par elgringo67 » 26 janv. 2012, 06:56

Merci pour votre reponse.
Mais concretement imaginez j'ai un script de ce genre:

<?php
include"connexion.php";

$sql="select * from particulier where numero_client='$numero_client' ";
$resultat= mysql_query($sql);
while($particulier=mysql_fetch_array ($resultat))
{
$id=$particulier['idparticulier'];
$nom=$particulier['nom'];
$prenom=$particulier['prenom'];
$adresse=$particulier['adresse'];
$cp=$particulier['cp'];
$ville=$particulier['ville'];
$tel=$particulier['tel'];
$email=$particulier['email'];
$numero_client=$particulier['numero_client'];
}

echo" <font color=black>Numero client : $numero_client </font> ";

?>

Que dois-je faire pour l'ameliorer pour passer en PHP5?
Il faut que je declare les variables du style:
$email = $_POST['email']; 
$numero_client = $_POST['numero_client'];
Mais est ce suffisant?
Merci pour tout

Re: Du PHP3 à la version PHP5

par moogli » 25 janv. 2012, 21:30

Salut,

La solution pérenne est de recoder les scripts "correctement". Pourquoi ?
Simplement parce qu'il n'y a pas que les register_globals qui ont changé depuis. Des fonctions tombent en désuétude, d'autre apparaissent ainsi que de nouvelle manière de faire.
Si tu fait ça tu ne devrais plus etre emmerdé.
Donc utilisations des super globales $_SESSION, $_POST, $_GET et $_COOKIE. Les tags php c'est <?php et non <?

Après il y a des solutions plus ou moins crado comme :
- créer les variables sans aucun contrôle du genre $truc = $_POST['truc']
- utiliser la fonction extract.

@+

Du PHP3 à la version PHP5

par elgringo67 » 25 janv. 2012, 20:00

Bonsoir
J'ai programmé des sites en php3 ( sous 1.6 d'eayphp comme serveur apache-mysql etc..), évidemment register_globals était activé, maintenaant avec les hébergements web le register est à off..
Mes scripts ne fonctionnent pas correctement, les passages de variables ne se font pas ou partiellement, non parlons des sessions, des formulaires etc..
Qu'est ce que vous me conseillez pour ne pas refaire tous mes scripts...?
Quelle est l'astuce..?
Je sais qu'ils faut déclarer les variables ( ex: $_POST['email'] ) etc..
Mais ce n'est pas suffisant..
Que faire.
Merci pour tous vos conseils.
Bonne soirée.