部分的なプログラムは以下です。
/** スレッド名の変数$su_dにデータがあればtbj0に挿入 **/
①$su_d=isset($_GET["su"])? htmlspecialchars($_GET["su"]):null;
if($su_d<>""){
$s->query("INSERT INTO tbj0 (sure,niti,aipi) VALUES ('$su_d',now(),'$ip')");
}
②if($su_d<>"")
*************************
以上で質問があります。
①t($_GET["su"])? に テスト と言う 文字列が送信された場合 ②が受け取る。
受け取った②は
②if($su_d<>"")→「テスト<>""」で<>"" の比較演算子で 空文字ではない と判断
した場合 $s->query("・・・ 送られ 処理される。
と 流れはわかります。
私的に ①が②を判断しているように見れます。なので②は不要だと思われます。
私は実戦経験がないので 素人目線 でしか ものを言えないのですが 理解に苦しん
でいます。
そうなっているから そうなんだ と 覚えてもいいのですが 何か気になります。
あえいて if($su_d<>"") を 設けないと いけない理由 なんでしょうか?
以上よろしくお願いいたします
以下は 以上の全体のプログラムです。
ファイル名[keizi_top.php]
/********* データベース情報等の読み込み *********/
require_once("data/db_info.php");
/********* データベースへ接続、データベース選択 **/
$s=new pdo("mysql:host=$SERV;dbname=$DBNM",$USER,$PASS);
/********* タイトル、画像等の表示 ************/
print <<<eot1
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>SQLカフェのページ</title>
</head>
<body style="background-color:silver">
<img src="pic/jk.gif" alt="女子のイラスト">
<span style="color:purple;font-size:35pt">
SQLカフェ掲示板だよ
</span>
<p>見たいスレッドの番号をクリックしてください</p>
<hr>
<div style="font-size:20pt">(スレッド一覧)</div>
eot1;
/********* クライアントIPアドレス取得 *********/
$ip=getenv("REMOTE_ADDR");
/********* スレッド名の変数$su_dにデータがあればtbj0に挿入 *********/
$su_d=isset($_GET["su"])? htmlspecialchars($_GET["su"]):null;
if($su_d<>""){
$s->query("INSERT INTO tbj0 (sure,niti,aipi) VALUES ('$su_d',now(),'$ip')");
}
$re=$s->query("SELECT * FROM tbj0");
while($kekka=$re->fetch()){
print <<<eot2
<a href="keizi.php?gu=$kekka[0]">$kekka[0] $kekka[1]</a>
<br>
$kekka[2]作成<br><br>
eot2;
}
/********* スレッド作成フォーム、検索ページへのリンク *********/
print <<<eot3
<hr>
<div style="font-size:20pt">(スレッド作成)</div>
新しくスレッドを作るときは、ここでどうぞ!
<br>
<form method="GET" action="keizi_top.php">
新しく作るスレッドのタイトル
<input type="text" name="su" size="50">
<div><input type="submit" value="作成"></div>
</form>
<hr>
<span style="font-size:20pt">(メッセージ検索)</span>
<a href="keizi_search.php">検索するときはここをクリック</a>
<hr>
</body>
</html>
eot3;
?>
No.1ベストアンサー
- 回答日時:
$su_d=isset($_GET["su"])? htmlspecialchars($_GET["su"]):null;
上記の意味は
$_GET["su"]に値が設定されていれば、それを特殊文字をHTMLエンティティに変換し、$su_dに設定する。
$_GET["su"]に値が設定されていなければ、nullを$su_dに設定する。
になります。
従って、
if($su_d<>""){
}
で判断しているのは、nullが設定されたケースをはじく為です。
($_GET["su"]に値が設定されていないケースをはじく為です)
では、そもそも、
$su_d=isset($_GET["su"])? htmlspecialchars($_GET["su"]):null;
を実行した時点で、$_GET["su"]に値が設定されていないケースがあるかということになりますが、
この作者は、そのケースがあると判断したと思われます。
私も、phpでの実戦経験がない為、そのケースがあるかどうかはわかりません。
「テスト と言う 文字列が送信された場合」はそうなりますが、
空文字が送信された場合もありうると作者は、判断したのではないでしょうか。
詳しくご回答くださいまして ありがとうございました。
流れ的なことが 詳しくわかりました。
htmlspecialchars — 特殊文字を HTML エンティティに変換する
ですね
あと isset も ありますので 変数がセットされている
かの判断 もしているので 複雑ですが ここでは
Aンス:空文字が送信された場合もありうる ~ですが
試しに スペースの 数個 入れただけの いわゆる
ここで言う 空文字 でしょうか ね
入れて 送信したところ ちゃんと (スレッド一覧)
に 表示されてしまいました。
以下
8 が 大文字 スペースを 数個 入れて送信
9 が 小文字 スペースを 数個 入れて送信
これって どうなんでしょうか?
if($su_d<>"") で判断 した場合 空白を 文字 と
判断 しているので 機能して いない のではないでしょうかね?
以下(スレッド一覧)です。
--------------------------------------
8
2022-03-26 17:01:12作成
9
2022-03-26 17:01:42作成
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- PHP isset — 変数が宣言されていること、そして null とは異なることを検査 1 2022/03/27 17:34
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- PHP php ログイン 1 2022/11/01 00:24
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
前後の全角スペースを削除する...
-
phpでfopen()やfputs()が使えない
-
日付と年月日を選択するコード...
-
phpの画面表示が真っ白です
-
PHPの勉強中の初心者です。
-
CSSの画像をPHPで毎月自動で変...
-
PHP(smarty)についての質問(文...
-
フォントの色を変えるには?
-
PHPのWARNINGをcatchするには
-
onedrive にexcelファイルをア...
-
PHP8を使うと、大量のWarningが...
-
バッチを用いたフォルダの自動移動
-
CSV出力にHTMLが入ってしまう
-
「クラス関数」「メンバ関数」...
-
index.phpって何ですか? 具体...
-
現在位置より2つ上のディレク...
-
透過PNGが透過されない!!
-
PHP 文字列を代入した配列を変...
-
PHPのif文でその処理を途中で抜...
-
$_SESSION 有効期限をブラウザ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
日付と年月日を選択するコード...
-
htmlのエラーについて(デバッグ)
-
文字コードの出力を変更したい
-
文字化けについて
-
前後の全角スペースを削除する...
-
XAMPP1.7.1上でPHPを実行すると...
-
php エラー
-
パスワード認証ページ作りたい...
-
PHP(smarty)についての質問(文...
-
ここでの ②if($su_d<>"")の比較...
-
phpの画面表示が真っ白です
-
mb_convert_variablesで変換出...
-
どうしたら確認ができますか!?
-
html内のphpスクリプトについて
-
機種依存文字の文字化けについて
-
エラー Warning: Cannot modif...
-
【PHP?】header("location : ...
-
javascriptからphpへ変数
-
ローカル環境で動くのに本番環...
-
PEARのXML/Unserializer.phpが...
おすすめ情報