回答編集履歴
2
加筆
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
見直し
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インジェクション攻撃を喰らいますし。
|