teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

加筆

2021/05/18 06:43

投稿

退会済みユーザー
answer CHANGED
@@ -41,11 +41,12 @@
41
41
 
42
42
  mysqli_close($link);
43
43
 
44
+ header('Location: http://~~~/~~~/index.php');
44
- ?>
45
+ exit();
45
- ここらへんに結果表示用のHTMLを記述
46
- $row_count にINSERT INTO文によって挿入されたレコード数が入ってくるはずなので、
47
- それを使って結果表示の分岐に使ったらいいんじゃないかなと。
48
46
  ```
49
47
  みたいな感じ?(あくまで机上のコード)
50
48
  POSTやGETなどで外部から来た値を直接SQL文文字列に連結しないでくださいね、
51
- 今話題のSQLインジェクション攻撃を喰らいますし。
49
+ 今話題のSQLインジェクション攻撃を喰らいますし。
50
+
51
+ index.phpが入力フォームで、index1.phpがデータベースへの登録処理(のみ)の構造かな。
52
+ だとすると、header()関数でリダイレクトさせるような出力をすれば良さそうな気がする。

1

見直し

2021/05/18 06:42

投稿

退会済みユーザー
answer CHANGED
@@ -13,4 +13,39 @@
13
13
 
14
14
  やったことを丁寧に説明してください。
15
15
  質問者さんがやったこと、遭遇したことが再現できません。
16
- 話はそれから。
16
+ 話はそれから。
17
+
18
+ ---
19
+
20
+ ```php
21
+ <?php
22
+
23
+ $local = 'localhost';
24
+ $user_name = 'root';
25
+ $pass = '';
26
+ $db_name='ph23_sample';
27
+
28
+ $name = $_GET['name'];
29
+ $age = $_GET['age'];
30
+
31
+ // ホントはここに$nameや$ageの検証処理を置くべき
32
+
33
+ $link = mysqli_connect($local, $user_name, $pass, $db_name);
34
+ mysqli_set_charset($link,'utf8');
35
+
36
+ //これがベース!!
37
+ $stmt = mysqli_prepare($link, "INSERT INTO sample(name, age) VALUES (?, ?)");
38
+ mysqli_stmt_bind_param($stmt, "si", $name, $age);
39
+ mysqli_stmt_execute($stmt);
40
+ $row_count = mysqli_stmt_affected_rows($stmt);
41
+
42
+ mysqli_close($link);
43
+
44
+ ?>
45
+ ここらへんに結果表示用のHTMLを記述
46
+ $row_count にINSERT INTO文によって挿入されたレコード数が入ってくるはずなので、
47
+ それを使って結果表示の分岐に使ったらいいんじゃないかなと。
48
+ ```
49
+ みたいな感じ?(あくまで机上のコード)
50
+ POSTやGETなどで外部から来た値を直接SQL文文字列に連結しないでくださいね、
51
+ 今話題のSQLインジェクション攻撃を喰らいますし。