[PHP] Probléme: Passer plusieurs paramètres au travers d'un formulaire

ziapat

Nouveau membre
Bien le bonjour à vous tous :)
J'ai un petit soucis.

J'ai un formulaire avec une "textarea" que je remplis à l'ouverture par le biais d'un contenu mysql...

bon je vais tout mettre ici, ça sera plus clair pour certains.

Sachez que je travaille sous easy php 1.7, donc avec php4.3.x il me semble. en tout cas >php4.1
Ma table "compteur" est de la sorte:
- id : int(11)
- txt : text

(il y a deux autres entrées mais elles ne sont pas utilisées ici)

De plus, mon formulaire est en method=get car la méthode post ne marche que sur les uploads, je pense que c'est à cause de mon "register_globals" qui est sur off (comme tous les register_globals sont sur off par défaut depuis php4.2)
Bref si vous avez une solution pour ça également :)

formulaire.php:
[cpp]<form method="get" action="accmod.php" enctype="text/plain">
<p>
<textarea name="acc" id="acc" cols="100" rows="15">
<?
//connexion bdd mysql
$BD_serveur = "localhost";
$BD_utilisateur = "root";
$BD_motDePasse = "";
$BD_base = "mysql";
mysql_connect($BD_serveur, $BD_utilisateur, $BD_motDePasse);
mysql_select_db($BD_base);

$requete = "SELECT * FROM compteur"; //lecture table compteur
$resultat = mysql_query($requete);
$enreg=mysql_fetch_array($resultat); //table->tableau
echo $enreg["txt"] ; //écrit le contenu txt
?></textarea>
</p>
<p>
<input type="submit" name="submit" value="Enregistrer la requête">
<input type="reset" name="submit2" value="Rétablir la version précédente">
</p>
</form>[/cpp]

Jusque là aucun soucis,
l'url obtenue apres soumission du formulaire est de la forme:


Seulement, mon problème c'est que j'essaie de faire passer un autre parametre.
Voila comme je m'y prends :
je remplace :
Code:
<form method="get" action="accmod.php" enctype="text/plain">
par
[cpp]<form method="get" action="accmod.php?id=<?php echo ($id=$_GET["id"]); ?>" enctype="text/plain">[/cpp]
de façon à faire passer id aussi. (sachant qu'id est présent sous la forme "formulaire.php?id=1")

malheureusement apres la validation du form et en arrivant sur accmod.php, id a disparu :(

une idée? ;)

PS: mon hebergeur auquel je n'ai pas encore accés, n'a que php 4.1. Je pense donc que register_globals sera sur ON.
Si oui, le désactiver?
Est-ce potentiellement dangereux, même dans le cadre d'une console d'administration (ce script permet en effet de modifier le site).
Il est possible que je ne puisse pas avoir accés à la modification de cette variable. Que faire alors pour rester sécurisé?

Merci pour vos réponses!
 

ziapat

Nouveau membre
Sinon le input hidden marche :) Merci bcp!
Je sais pas comment j'ai pu faire pour ne pas y penser... >_<
 

zecolin

Habitué
[cpp]$truc = $_POST["nomduchampdeformulaire"];[/cpp]
logiquement, si tu fais des formulaires avec method="post", ça devrait marcher
$_POST pour les formulaires avec methode post,
et $_GET pour les valeurs passées par l'url
 

ziapat

Nouveau membre
Merci bcp à vous! Je vais réessayer POST même si je suis sûr d'avoir bien utilisé $_POST (j'avais bien lu php.net avant ;)


Sinon autre question:

J'ai plusieurs scripts php qui accédent à une base de donnée mysql et qui contiennent donc tous les parametres de connexion (user, password, bdd etc).
Or, je modifie régulièrement ces fichiers et les teste en localhost, comme sur mon serveur.
Pour éviter de changer à chaque fois les paramétres de connexion, j'ai mit un include au début de tous ces fichiers, qui pointe vers un fichier contenant les parametres de connexion. Ce fichier de parametres est donc différent sur le serveur et en localhost mais les scripts php sont identiques évidemment et ils ont la même instruction include.

Mon soucis étant :
Si le fichier de parametres porte l'extension .php, il est analysé et donc son contenu est invisible.
Par contre, s'il porte une autre extension (ou pas d'extension du tout) il est lisible par le browser et mes mots de passe et login sont visibles

Je l'ai donc mit en .php, mais je pense que la faille de sécurité subsiste puisqu'il suffit de faire appel à ce script depuis l'extérieur afin de récupérer les données.

Suffit-il d'avoir un nom compliqué pour cet include, de façon à ce qu'il soit impossible de tomber dessus par hasard?
Ou faut-il avoir des variables au nom tordu? Si c'est le cas, sont elles récupérables à partir d'un script extérieur?

Bref, je pense que la solution idéale serait de refuser l'accés aux script .php depuis un autre nom de domaine que le mien en modifiant le .htaccess
Comment faire?

Est-ce que cela risque de compromettre l'utilisation de liens vers mon site pointant sur un fichier php, ou l'entrave se situe-t-elle juste au niveau des include?

Merci :)
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 061
Membres
1 586 286
Dernier membre
petitangebleu1977
Partager cette page
Haut