OVH Cloud OVH Cloud

enctype et perte de variable

2 réponses
Avatar
kloy
Bonjour,
Jai un truc super bizare dans un script php (Version 4.3.11 sous debian
woody)

Je fais une fiche de mise a jour d'un hotel ou il y a plusieurs champs et 6
photos...

mon code :

<HTML><HEAD></HEAD><BODY>
<?
include ('../connect.inc.php');

$Query="select * from Hotels where id='{$_GET['id_hotels']}'";
$Rep=mysql_query($Query);
$row=mysql_fetch_array($Rep);
$Id=$row['id'];
?>
<form action="enr_detailhotels.php" method="POST"
ENCTYPE="multipart/form-data">
<input type="text" name="nomhotel" value="<?=$row['Nom']?>"><BR>
<input type="text" name="localisation"
value="<?=$row['Localisation']?>"><BR>
<input type="text" name="style" value="<?=$row['Style']?>">
<input type="file" name="photos1"><BR>
<input type="file" name="photos2"><BR>
<input type="file" name="photos3"><BR>
<input type="file" name="photos4"><BR>
<input type="file" name="photos5"><BR>
<input type="file" name="photos6"><BR>
<input type="hidden" name="gauche" value="<?=$row['Gauche']?>">
<input type="hidden" name="corps" value="<?=$row['Corps']?>">
<input type="hidden" name="droite" value="<?=$row['Droite']?>">
<input type="hidden" name="id_hotels" value="<?=$_GET['id_hotels']?>">
<input type="hidden" name="id_pays" value="<?=$_GET['id_pays']?>">
<input type="checkbox" name="Croisière" value="1" > Croisière<BR>
<input type="checkbox" name="Safari" value="2" > Safari<BR>
<input type="checkbox" name="Golf" value="3" > Golf<BR>
<input type="checkbox" name="Spa" value="4" > Spa<BR>
<input type="checkbox" name="Villas à louer" value="5" > Villas à louer<BR>
<input type="checkbox" name="Lagons" value="6" > Lagons<BR>
<input type="checkbox" name="Désert" value="7" > Désert<BR>
<input type="checkbox" name="Week-end" value="8" > Week-end<BR>
<input type="checkbox" name="Gastronomie" value="9" > Gastronomie<BR>
<input type="checkbox" name="Lune de Miel" value="10" > Lune de Miel<BR>

<input type="submit" value="Enregistrer"></center>

</form>
</BODY></HTML>

Lorsque je click sur le bouton submit, il ne me prend pas la premirere
variable : nomhotel
si je met le code suivant dans mon script enr_detailhotels.php
$headers = apache_request_headers();

foreach ($headers as $header => $value) {
echo "$header: $value <br />\n";
}

foreach ($_REQUEST as $header => $value) {
echo "$header: $value <br />\n";
}

voici ce que j'obtiens...


Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
application/x-shockwave-flash, application/vnd.ms-excel, application/msword,
*/*
Accept-Encoding: gzip, deflate
Accept-Language: fr
Cache-Control: no-cache
Connection: Keep-Alive
Content-Length: 3394
Content-Type: multipart/form-data;
boundary=---------------------------7d5fb21ac506f2
Host: ....
Referer: http://..../admin/detailhotelstest.php?id_hotels=18
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
localisation: Sabi Sands
style: Réserve privée
......

Autres info : lorsque je vire le enctype, j'ai bien ma variable nomhotel,
mais je pert mes fonctioanlités d'upload d'images....

La je dois dire que je seche completement, c'est pourtant du grand standart
!!!

Merci pour l'aide que vous pourrez m'apporter...

Nico

2 réponses

Avatar
Guillaume Bouchard
kloy wrote:
Bonjour,


Bonjour.

<HTML><HEAD></HEAD><BODY>


Manque pas un title. Aller je suis chiant, les balises html sont
préferables en minuscules.

<?
include ('../connect.inc.php');

$Query="select * from Hotels where id='{$_GET['id_hotels']}'";


Esseye d'eviter les SELECT *. Les bonnes habitudes font que l'on met
explicitement le nom des champs utilisés.

Et paaf le chien. Eu pardon, paaf la faille de sécurité potentielle.

Il ne faut *JAMAIS* utiliser les variables provenant de l'exterieur sans
aucun traitement.

$Rep=mysql_query($Query);


mysql_query($Query) or die(mysql_error().$Query);
(Le mieux serait de faire une fonction perso avec une constante pour
régler l'affiche ou non de l'erreur.)

$row=mysql_fetch_array($Rep);
$Id=$row['id'];
?>

<form action="enr_detailhotels.php" method="POST"
ENCTYPE="multipart/form-data">
<input type="text" name="nomhotel" value="<?=$row['Nom']?>"><BR>


Evite d'utiliser les short_open_tags. C'est un réglage qui n'est pas
activé partout et qui fera que ton script ne sera pas portable.

La je dois dire que je seche completement, c'est pourtant du grand standart
!!!


Je t'avoue que je bloque aussi.

Ecoute, dans l'attente d'une reponse plus précise de la part de
quelqu'un d'autre, esseye de nettoyer ton code comme je viens de te
l'expliquer, Rajoute error_reporting(E_ALL) en haut et soumet un nouveau
message avec :

1) Le résultat html de la page (que l'on voit à quoi ressemble ce que tu
as generé)
2) Les champs de la requetes SQL utilisés.

Merci pour l'aide que vous pourrez m'apporter...


J'avoue que là, je n'apporte pas grand chose.

--
Guillaume.

Avatar
kloy
Merci pour l'aide que vous pourrez m'apporter...


J'avoue que là, je n'apporte pas grand chose.


apparemment, c'est un bug connu et pas mal référencé sur PHP, si on fiat une
recherche avec "enctype" sur google groupe, on trouve pas mal de message
similaire, mais pas avec la version 4.3.11... on les voyait pas mal sur du
4.3.6... mais bon, je vais scinder mon code en 2... d'un coté avec les
champs textes et une pages spéciales upload d'images....

merci quand même...

Nico