2009-08-28 9 views
0

Existe-t-il des considérations spéciales essayant de lire les données d'un formulaire HTML où l'élément est un type d'entrée = "Mot de passe"? Quand une page ColdFusion POST mon gestionnaire avec des données de formulaire, je reçois null pour le mot de passe au lieu de la valeur tapée.Récupération de l'entrée type = mot de passe Request.Form ["strPassword"] donne la valeur null

Voici la ligne clé du bloc plus ci-dessous:

string password = context.Request.Form [ "strPassword"];

J'ai un fichier de code HTTPHandler.ashx qui effectue un téléchargement d'un fichier lorsqu'il est publié. Voici l'extrait clé de ce code:

 string username = context.Request.Form["strUsername"]; 
     if (String.IsNullOrEmpty(username)) 
     { 
      IdentifyInvoker = GetUserInfo(); 
      brokerService = new Broker.FileService(); 
     } 
     else 
     { 
      string password = context.Request.Form["strPassword"]; 
      string domain = context.Request.Form["strDomain"]; 
      IdentifyInvoker = GetInvokerInfoFromForm(username, password, domain); 
      brokerService = new Broker.FileService(username,password,domain); 
     } 

La forme à partir de laquelle le code ci-dessus est affiché (de ColdFusion) ressemble à ceci:

<b>User Name</b> <input type="text" name="strUsername" id="strUsername" size="13" /> 
<b>Password</b> <input type="Password" name="strPassword" id="strPassword" size="15" /> 
<b>Domain</b> <input type="text" name="strDomain" id="strDomain" size="13" value="cbmiweb" /> 

Je suis capable de piéger ce avec le débogueur et a été choqué de voir qu'après cela: string password = context.Request.Form ["strPassword"];

... password = null

Dans la fenêtre immédiate, assez sûr:

?context.Request.Form["strPassword"] 
null 

Si j'examine toute la collection de formulaire dans le débogueur, je vois les valeurs propres disposées (séparés par &) et aucun des éléments de données importants est nul (mais étrangement les données contiennent un signe plus en face du signe égal)! Voici un extrait de la fenêtre immed:

& strUserName = johna & strPassword + = xxxxxxxx & strDomain + = cbmiweb}

J'ai un client ASP.NET qui POSTs à ce même HTTPHandler et qui fonctionne très bien. Ici, les mêmes données de formulaire montre sans interférence des signes PLUS:

& strUserName = johna & strPassword = xxxxxxxx & strDomain = cbmiweb}

Toutes les idées sur ce qui cause cela et comment récupérer les données de formulaire quand il est formaté avec les signes PLUS intervenants?

EDIT: La forme ASP.NET et la forme ColdFusion spécifient enctype = "multipart/form-data" mais cette dernière incorpore ces signes PLUS.

+0

pouvez-vous s'il vous plaît poster votre code coldfusion? –

+0

Je vais le demander ... mais mon collègue ColdFusion a corrigé le problème en vous basant sur votre confirmation que la présence du + dans Response.Form était à l'origine du problème. –

Répondre

1

Plus signe est le problème, il ne devrait pas avoir été là, est votre demande de transfert coldfusion à votre page ou il utilise son moteur de requête interne http pour le faire?

Le signe plus apparaît en raison de l'espace blanc, s'il vous plaît vérifier dans votre coldfusion si n'importe quelle concaténation de chaîne a causé des espaces blancs à insérer dans vos données affichées?

+1

Pour clarifier, le schéma d'encodage d'URL utilisé remplace les caractères d'espace dans l'URL par "+": http://en.wikipedia.org/wiki/Percent-encoding#The_application.2Fx-www-form-urlencoded_type – Schrockwell

+0

oui vous avez raison , et c'est pourquoi j'ai demandé le code coldfusion –

Questions connexes