2011-06-15 4 views
-5

je forme suivante:problème avec enctype = 'multipart/form-data'

echo "<br><form action ='maketext.php' method='post' enctype='multipart/form-data'> 
       <br> 
       $table <br><br><br> 
       <b>$subject</b> <br> 
       Сообщение: <b>$message</b> <br> 
       <input name='userfile[]' type='file' /><br /> 
       <input name='userfile[]' type='file' /><br /> 
       <input name='userfile[]' type='file' /><br /> 
       <input type ='submit' name ='Send' size = '10' value = 'Send'> 
       <input type ='hidden' name ='subject' value=$subject> 
       <input type ='hidden' name ='sms' value=$flagSms> 
       <input type ='hidden' name ='email' value=$flagEmail> 
       <input type ='hidden' name ='message' value=$message> 
       </form>"; 

Je nai problèmes avec les fichiers, mais j'ai un problème avec le codage de $subject et d'autres variables. Je pense que c'est parce que enctype='multipart/form-data'. Il passe vraiment et variables et fichiers à travers un formulaire?

+1

pas compréhensible – dynamic

+1

Quel est le problème ici? –

+2

S'il vous plaît nous montrer comment vous essayez d'accéder aux données de votre script PHP. –

Répondre

1

Vous avez pas de guillemets autour de vos entrées. Si l'une de ces valeurs contient des espaces ou des métacaractères html, votre formulaire va "casser".

par exemple.

$subject = "hi there"; 

produira

<input type='hidden' name='Subject' value=hi there /> 

Lorsque ce formulaire est soumis, vous vous retrouverez avec Send=hi, et there ne seront pas transmis comme il est considéré comme un attribut HTML inconnu dans la balise d'entrée.

Vous devez avoir quelque chose comme ceci:

<?php ?> 
<input type="hidden" name="Subject" value="<?php echo htmlspecialchars($send) " /> 

Deux choses à noter:

  1. Je ne fais pas ça dans un écho. Alors que l'écho peut produire des blocs multilignes de texte, c'est beaucoup trop douloureux, et c'est un gaspillage de ressources processeur pour analyser cette chaîne en tant que code PHP et la sortir ensuite. Au lieu de cela, il vous suffit de quitter le mode PHP et de le sortir directement en tant que html brut.

  2. J'ai traité $ send via htmlspecialchars(). Cela «échappe» à tous les caractères spéciaux qui pourraient être considérés comme faisant partie du balisage HTML et non comme faisant partie des données que vous transmettez.

2

Je pense que votre principal problème est que vos variables $ sujet etc ne sont pas placés dans

' ' 

essayer

echo "<br><form action ='maketext.php' method='post' enctype='multipart/form-data'> 
       <br> 
       $table <br><br><br> 
       <b>$subject</b> <br> 
       Сообщение: <b>$message</b> <br> 
       <input name='userfile[]' type='file' /><br /> 
       <input name='userfile[]' type='file' /><br /> 
       <input name='userfile[]' type='file' /><br /> 
       <input type ='submit' name ='Send' size = '10' value = 'Send'> 
       <input type ='hidden' name ='subject' value='$subject'> 
       <input type ='hidden' name ='sms' value='$flagSms'> 
       <input type ='hidden' name ='email' value='$flagEmail'> 
       <input type ='hidden' name ='message' value='$message'> 
       </form>"; 
Questions connexes