問題タブ [addslashes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
259 参照

php - PHPとMySqlを使用して一重引用符と二重引用符の挿入の問題を処理する簡単で効率的な方法は何ですか?

私は主にPhp 5.4+ および MySql 5.5+ バージョンで作業しています。私はすべてのプロジェクトでCodeigniterを使用しています。

私が直面している問題は

ときどき (一部の運用サーバーでは) POST 変数に ' または " 引用符が含まれていると、データベース エラーが発生します。

PHPとCIには、これらの文字列をaddslashesmysql_escape_sequenceなどで処理するための優れた機能がありますが

  1. ユーザーによって投稿されている可能性のあるすべての変数について、これらの条件を確認するのはそれほど簡単ではありません

  2. 毎回、addslashes を使用する必要があります。例: It\'s であり、出力を提供しているときに、出力 It's にストリップスラッシュを再度適用する必要があります。しかし、大きな値を扱うのは難しいです。

  3. データベースはデータをそのまま保存するため、これらの文字列を検索するのは困難です。

何日も苦労して、utf8mb4_general_ciを使用する方がutf8よりも有利であることがわかりました

したがって、CIのDatabase.phpに次のものがあることを確認しました

また、それぞれの列のデータ型を「LONGTEXT」に変更し、その照合を「utf8mb4_general_ci」に変更しました

驚いたことに、それらはいくつかのサーバーで機能しました。

しかし、まだ一部のサーバーで同じ問題が見つかりました。サーバー構成がそれらの稼働中のサーバーと一致していることを確認したにもかかわらず、これは少しイライラします。

すべての php および mysql 開発者は、このシナリオでどのように作業していますか? どのような予防策を講じていますか?

提案してください!!

0 投票する
3 に答える
1441 参照

php - GET および POST 要求で文字をエスケープする必要がありますか?

PHP は、しばらくの間、着信 GET および POST リクエストを独自にエスケープすることを読みました。二重エスケープは役に立ちません。文字列をまったくエスケープする必要がありますか?

たとえば、次のような単純な入力を処理します。

後で、保存してデータベースから取得するときに、入力に次のような最後の値を入力します。

誰かがフィールドに引用符を入力すると、次のようなものが返され、フォームが破棄されます。

0 投票する
1 に答える
1707 参照

url-encoding - Facebook共有リンクのPHPエスケープ引用符とurlencode

私は自分のウェブサイトで Facebook 共有リンクを使用して、Facebook で記事を公開しています。

一部のリンクでは機能し、他のリンクでは機能しません。リンクを介して渡されるタイトルとテキストはフランス語 (多くの引用符と特殊文字) であり、リンクを扱うページは UTF8 です。

コンテンツを urlencode してリンクを作成する前に「mysql_real_escape_string」を使用するだけで、すべての FB リンクを機能させることに成功しました。

なぜ「mysql_real_escape_string」なのですか?

「htmlentities」、「htmlspecialchars」、および「addslashes」が機能しなかったため、これはテストでした。明らかな欠点は、「mysql_real_escape_string」関数はデータベースとは関係がないため、そこでは何もしないことです。実際、この機能は「ユーザーに対して拒否されました...」というエラーメッセージが表示されます。

とにかく、私はこの機能を使用する予定はありませんが、「addslashes」は機能しないのに、Facebook 共有リンクが 100% 機能するというのは奇妙なことです。私は、addslashes は "mysql_real_escape_string" の純粋な PHP バージョンだと思っていましたが、何か違うところがあります。

私の問題に対する純粋なPHP代替ソリューションはありますか?

0 投票する
1 に答える
2119 参照

php - PHP の addslashes() が MySQL 挿入で機能しない

SQL Server から MySQL にテーブルを取り込むために、PHP でインポート スクリプトを作成しています。すべての char/varchar 値を単一引用符で囲んで挿入しています。これは、スクリプトが単一引用符を含む値に遭遇するまで正常に機能します。明らかな解決策は を使用することaddslashes()ですが、それは私にとってはうまくいきません。htmlspecialchars()私も同様に試しましmysqli_real_escape_stringたが、どちらもうまくいきませんでした。問題のあるキャラクターを完全に削除しようとしましたがstr_replace("'", "", $value)、成功しませんでした。最後に、値を一重引用符ではなく二重引用符で囲んでみましたが、値の二重引用符をエスケープできない行に遭遇すると、同じエラーが発生しました。

エラーが発生するまで、スクリプトはそれぞれ 1,000 行の複数のチャンクを正常に挿入するので、INSERT ステートメントの形式が間違っていないことがわかります。クエリ全体をログに記録し、一重引用符がエスケープされていないことを確認しましたが、問題のある行と必要に応じてバックスラッシュを含めて INSERT を手動で実行できます。

私はここで困惑しています。見逃したトラブルシューティングのヒントはありますか?

重複した質問や類似の質問がないか確認しましたが、自分の状況に当てはまるもので、まだ試していないものは見つかりません。これに対する以前の回答を見落としていた場合は、お知らせください。

コードは次のとおりです。

0 投票する
0 に答える
21 参照

php - PHP SQL Server ODBC でアドスラッシュを使用できない

編集私はMS SQLを使用しています。MySQLにクエリを実行してから、MS SQLに挿入します

データベースからデータを照会し、それを別のデータベースにアップロードするスクリプトを作成しました。スクリプトは次のようになります

それからこれ

それから私はいくつかのエラーがあります

これはエスケープされていない文字列である可能性がありますが、すでに持っています。クエリをエコーし​​ようとしたとき:

O'Nielll がエスケープされていないように見えますか、それとも私の見積もりに問題がありますか? これを修正する方法は?ありがとう

0 投票する
1 に答える
5673 参照

php - PHP のアップグレード - get_magic_quotes_gpc を削除する必要があります

「get_magic_quotes_gpc」の後方互換性がない php 5.3 から 5.4 にアップグレードしています。コードが機能することは理解していますが、毎回 FALSE を返すだけです。

しかし、コードからこれを削除する時が来たと思います。

典型的な例を次に示します。

これを修正する方法を研究してきましたが、これが私が思いついたものです:

私はここで頭を少し超えています。これはすべてSQLインジェクションなどに関係していることを私は知っています。私の解決策は合理的/容認できるものですか?

前もって感謝します。

<<<< 編集 - 追加情報 >>>>

返信ありがとうございます。実際、約 18 か月前に PDO への変換を多数行いました (主に、この種のスタックオーバーフローに関するアドバイスによるものです :)

そのため、冗長で無意味なコードが実行されている可能性があります。これは、URL から変数を取得する、上に投稿したコードの下で何が起こっているかの全体像です。

以前はそこにあった (get_magic_quotes_gpc) が、コメント アウトされて (addslashes) に置き換えられていることがわかります。しかし、その変数は PDO クエリに渡されます。

最初の 4 ~ 5 行のコードをすべて削除して、次のようにすることはできますか。

0 投票する
2 に答える
523 参照

jsp - JSP で置換関数を使用して一重引用符をエスケープする方法

JSPでREPLACE関数を使用して、PHPのaddslashes()のように一重引用符をエスケープする方法を知りたいだけです

私のコードは

ありがとう