php 使用ajax发送密码过去,接收端发现密码被裁剪了
没怎么用过PHP。特来此论坛问下。
现在遇到的问题是,用户输入用户名与密码,进行登录,如果密码简单点,是可以传过去的。但如果密码是ab@;&1这种,则发现服务端得到的密码值被裁剪了,变成ab@;了。但是代码中紧接着,下面的部分也是这么操作的,居然又可以,实在没找出两处的差异,求解惑。
client部分的PHP
function getFirstU8Accid(){ var sUserName = document.getElementById("user_name").value.toLowerCase(); var sPassword = document.getElementById("password").value; sUserName = escape(sUserName); if(sUserName=="") { return(""); } var sUrl = '/Server/a.php?t='+escape(Date())+'&a='+sUserName+'&b='+sPassword; var xml = CreateXMLHttp(); xml.open("GET",sUrl,false); xml.send(); var sLoginUser = xml.responseText; //处理.......} //具体调用处如下代码所示 //此处调用getFirstU8Accid()失败,具体错误是服务端的PHP并没有得到完整的密码内容。 Accid = getFirstU8Accid(); try{var guid = obj.GetClientGUID();}catch(e){return " Error:failed to call GetClientGUID,error message:" + e.message;} var sUrl = '/Server/b.php?t='+escape(Date())+'&a='+user+'&b='+password+'&c='+sDomain; var xml = CreateXMLHttp(); xml.open("GET",sUrl,false); xml.send(null); //此处能正常返回,因为b.php中的代码能正常获取到密码内容 return xml.responseText;[/color]a.php b.php中的代码大概如下,其实基本一样,只是b中参数多了,多了一个解析的。[code=php]<?php $langs=$_COOKIE['LANGUAGES'];$langs=empty($langs) ? 'cn' : $langs;$language=include"lang-$langs.php";require("CmxConsts.php");require("CmxCommon.php");try { $sUserName = $_GET["a"]; $sUserName = str_replace("|YJ|","&",$sUserName); $sUserName = str_replace("|YJJ|","#",$sUserName); //下面获取的密码就被裁剪了。 $sPassword = $_GET["b"]; //...................?>
给我的感觉,就是第一次失败后,再做第二次,只是多带了参数,就成功了。虽然服务端a,b两个PHP文件,但其实没啥区别。
回复讨论(解决方案)
& 字符在 url 参数串中是作为字段分隔符出现的,如果你的值中有该字符,则需要做 url 编码处理(%26)
版主真快哈,可是第二次提交时,好像也没有做处理啊。
另外,URL编码处理,有没有通用的代码呢?我是中英繁三种语言的,会有影响不?PHP不熟。我也刚用没多久,请问有相关的资料或小例子没?
js 不是有 encodeURI、encodeURIComponent 方法吗
问题解决了。第一处处理时,对密码没有escape操作,而接收处则进行了unescape处理。而第二处是配对的。谢谢版本的提示。
var sUrl = '/Server/a.php?t='+escape(Date())+'&a='+sUserName+'&b='+sPassword;
改?
var sUrl = '/Server/a.php?t='+escape(Date())+'&a='+encodeURIComponent(sUserName)+'&b='+encodeURIComponent(sPassword);

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Laravel simplifie la gestion des données de session temporaires à l'aide de ses méthodes de flash intuitives. Ceci est parfait pour afficher de brefs messages, alertes ou notifications dans votre application. Les données ne persistent que pour la demande ultérieure par défaut: $ demande-

L'extension PHP Client URL (CURL) est un outil puissant pour les développeurs, permettant une interaction transparente avec des serveurs distants et des API REST. En tirant parti de Libcurl, une bibliothèque de transfert de fichiers multi-protocol très respectée, PHP Curl facilite Efficient Execu

Laravel fournit une syntaxe de simulation de réponse HTTP concise, simplifiant les tests d'interaction HTTP. Cette approche réduit considérablement la redondance du code tout en rendant votre simulation de test plus intuitive. L'implémentation de base fournit une variété de raccourcis de type de réponse: Utiliser illuminate \ support \ faades \ http; Http :: faux ([[ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

Alipay Php ...

Voulez-vous fournir des solutions instantanées en temps réel aux problèmes les plus pressants de vos clients? Le chat en direct vous permet d'avoir des conversations en temps réel avec les clients et de résoudre leurs problèmes instantanément. Il vous permet de fournir un service plus rapide à votre personnalité

L'article traite de la liaison statique tardive (LSB) dans PHP, introduite dans PHP 5.3, permettant une résolution d'exécution de la méthode statique nécessite un héritage plus flexible. Problème main: LSB vs polymorphisme traditionnel; Applications pratiques de LSB et perfo potentiel

L'article examine l'ajout de fonctionnalités personnalisées aux cadres, en se concentrant sur la compréhension de l'architecture, l'identification des points d'extension et les meilleures pratiques pour l'intégration et le débogage.

L'article traite des fonctionnalités de sécurité essentielles dans les cadres pour se protéger contre les vulnérabilités, notamment la validation des entrées, l'authentification et les mises à jour régulières.
