情况描述:
前端输入的内容是:;?9W/U\|"s6u|:M
然而传递到后端再保存到数据库时就成了:;?9W/U|"s6u|:M
这是为什么呢?
这是怎么回事呢?
1:我发现在insert到数据库之前都还是正确的
2:然后单独使用heidisql工具去更改这个值,它显示的sql语句是:
<code><span> UPDATE<span><span>`bitstorm_http_node`<span>.<span>`config_user_pwd`<span><span>SET<span><span>`Password`<span>=<span>';?9W/U\\|"s6u|:M'<span><span>WHERE<span><span>`Id`<span>=<span>14<span>; </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code>
我们发现程序在insert操作之前,它在值中添加了转义付去转义特殊符号'\'
可以究竟为什么会转义?难道是字符串的单引号双引号在作祟吗?
如果把字符放在单引号'之间,除了单引号本身'之外的绝大多数字符会解释成和写在代码中一样的形式。
放在双引号之间的字符串支持插入替换(内嵌在字符串中的变量会被替换成其内容),而且也会替换转义字符,例如用换行符替换\n,用tab替换\t,\换成\\。同样,\|它会解释成|
如果把上面的PHP中的代码的sql置于单引号中,则会是无效的sql语句:
Invalid query
INSERT INTO `bitstorm_http_node`.`config_user_pwd` (`Id`, `Domain_Name`, `Username`, `Password`) VALUES (0, "mdc-mon-tg-zabvip01.ubisoft.onbe", "cheng.wang", ";?9W/U\|"s6u|:M");
解决办法:
在PHP中:并不是每一段被转义的数据都要插入数据库的,如果所有进入 PHP 的数据都被转义的话,那么会对程序的执行效率产生一定的影响,会产生性能问题。
在运行时调用转义函数(如 addslashes())更有效率。
所以很明显,这里插入数据库我们需要转义,所以在需要转义的地方调用addslashes()函数来手动转义即可
<span>$pwd</span> = <span>addslashes</span>(<span>$pwd</span><span>);/<span><span>/加这行代码后保存到数据库就对了,OK,解决问题 </span></span></span><span>if</span>(<span>$zabbixHelper</span>==<span>false</span><span>){ </span><span>return</span><span>$this</span>->returnError("Invalid input: Can not login zabbix using this username and password."<span>); } </span><span>$sql</span> = "INSERT INTO `bitstorm_http_node`.`config_user_pwd` (`Id`, `Domain_Name`, `Username`, `Password`) VALUES (0, '" . <span>$domainName</span> . "', '" . <span>$username</span> . "', '" . <span>$pwd</span> . "');"<span>; </span><span>$this</span>->callSqlQuery(<span>$sql</span>));
最后,在PHP中,有时候json编码后也需要转义:
$parameters = addslashes(json_encode($args));
以上就介绍了字符串在传递过程中发生了变化,包括了插入数据方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

この記事では、PHPについて説明し、その完全なフォーム、Web開発での主要な使用、PythonとJavaとの比較、および初心者の学習のしやすさについて説明します。

PHPは、$ \ _ postおよび$ \ _を使用してフォームデータを処理し、検証、消毒、安全なデータベースインタラクションを通じてセキュリティを確保します。

この記事では、PHPとASP.NETを比較して、大規模なWebアプリケーション、パフォーマンスの違い、セキュリティ機能への適合性に焦点を当てています。どちらも大規模なプロジェクトでは実行可能ですが、PHPはオープンソースであり、プラットフォームに依存しませんが、ASP.NET、

PHPの症例感度は変化します:関数は鈍感であり、変数とクラスは感度があります。ベストプラクティスには、一貫した命名と、比較のためにケース非感受性関数を使用することが含まれます。

この記事では、PHPのページリダイレクトのさまざまな方法について説明し、ヘッダー()関数に焦点を当て、「すでに送信されているヘッダー」エラーなどの一般的な問題に対処します。

記事では、PHPでヒントを示すタイプについて説明します。これは、機能内の予想データ型を指定する機能です。主な問題は、タイプの施行を通じてコードの品質と読みやすさを改善することです。

この記事では、PHPのデータベースアクセスの拡張機能であるPHPデータオブジェクト(PDO)について説明します。これは、データベースの抽象化やより良いエラー処理など、準備されたステートメントとMySQLIに対する利点を通じてセキュリティを強化する上でのPDOの役割を強調しています。

記事では、PHP APIの作成とセキュリティについて説明し、LaravelなどのフレームワークやBest Security Practicesなどのフレームワークを使用して、エンドポイントの定義からパフォーマンスの最適化までの手順を詳細に説明します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

メモ帳++7.3.1
使いやすく無料のコードエディター

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ホットトピック









