質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1167閲覧

掲示板の文字列検索です。

1981225

総合スコア67

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2022/05/12 20:22

編集2022/05/13 08:06

掲示板の文字列検索です。
掲示板の書き込みが61件だった場合以下サイトの
コードでは検索できなかったのですが!

全体のプログラムは都合上お見せできないのですが!
私の環境は以下で見れます。
http://afurieitohannei.la.coocan.jp/sns/Sampledatocx.htm

検索の心臓部は以下じゃないかと思います!?
まだ素人なりの解析途中です。
http://afurieitohannei.la.coocan.jp/sns/keizi_search.htm
以上ですが
WHERE tbj1.mess LIKE "%$se_d%"
を もっと改良すれば いいのかな?

他 何か案がありましたら教えていただけないでしょうか?
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2022/05/12 21:36

できなかったのですが!と言われてもなんのことやらわからんので、 具体的にどういう動作になってるんか説明しましょう
m.ts10806

2022/05/13 00:11

>他 何か案がありましたら 勘でやってる限りちゃんと動くものは作れないので地道に基礎をやって自身が書いたコードを説明できるようになってください。 全くその傾向が見られないので誰も回答しないのです。
1T2R3M4

2022/05/13 08:19

文字数制限にはかからなさそうな内容ですが、 なぜ毎回外部サイトに誘導するのでしょうか。 アクセス数を稼ぐ目的なのでしょうか。
m.ts10806

2022/05/13 08:42

サブドメインがそれっぽいですね。 釣りが大好きなようで。とりあえず広告目的として通報しました。
guest

回答1

0

ベストアンサー

データベースは何を使っているでしょうか。

SQLにおいて、MYSQLやマイクロソフトの実装以外で、
文字列を示すにはシングルクォーテーションを使います。
「'」で文字列をくくります。
「"」でくくっても動く場合があっても、「'」でくくっておけば確実で無難です。

WHERE tbj1.mess LIKE "%$se_d%"

とのことですが、

WHERE tbj1.mess LIKE '%$se_d%'

なら文法エラーにはならない気がします。
で、
実際に変数を展開した後のSQL文字列の内容は確認しているのでしょうか。
var_dump()を駆使するなどして変数の中身を地道にチェックしていくのが、なにげに近道のように思える昨今です。

が、その前に、POSTやGETなど外部から来る値を
直接SQL文字列の中に展開するのは、
SQLインジェクション攻撃に利用されてしまいますのでやってはいけません
安全なウェブサイトの作り方 - 1.1 SQLインジェクション:IPA 独立行政法人 情報処理推進機構

PDOを使っているか使っていないかにかかわらず、
プリペアドステートメント、バインドパラメータという用語で調べれば、
安全にSQL文字列内に変数を展開できるかがわかるかと思います。

PDOですと
PHP: PDO::prepare - Manual
PHP: PDOStatement::bindValue - Manual
PHP: PDOStatement::execute - Manual
など使用します。

投稿2022/05/13 00:14

編集2022/05/13 05:15
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2022/05/13 00:42

仮にMySQLならダブルクォーテーションでも通るので、そのまま別のDBでやろうとしてミスってる人は多いですね。 https://dev.mysql.com/doc/refman/5.6/ja/string-literals.html >文字列は、単一引用符 (「'」) または二重引用符 (「"」) で囲まれたバイトまたは文字のシーケンスです
退会済みユーザー

退会済みユーザー

2022/05/13 01:24

結局、全体のソースコードを見ないと、再現してみないとわからないんですよね。 そこんところ、質問者さんに理解していただきたいところ。
1981225

2022/05/13 09:37

ご回答下さいましてありがとうございます。 Ans:WHERE tbj1.mess LIKE '%$se_d%' 了解です。  直ぐに試しいところですが、試験的に61件書き込ん だ分のデータベースを全部削除して、現在2件しか書き 込んでいませんので試すことができません。 他 攻撃に対する内容ですが、将来的にかなり助かります。 私環境を質問内容に追加しました。 ご参考なれば幸いです。  今後ともよろしくお願いいたします。
1981225

2022/05/13 09:47

追伸です。 私のSQLの書籍にもシングルクォーテーションく ' あいうえ' で囲んでありました。 恐らく、現在私が勉強している書籍がミスっていると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問