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

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

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

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

Q&A

解決済

2回答

11942閲覧

リロード禁止にしたいです

Kuriaki

総合スコア85

PHP

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

0グッド

0クリップ

投稿2017/03/30 01:44

編集2017/03/30 02:07

リロード禁止にしたいですが、うまく行かないです。
昔メール二重送信を禁止するときに使ってたコードを使ってますが、うまく行きませんでした。
やりたいことは、info.phpがブラウザで表示したときにf5を押してもリロードしないようにしたいです。
回答よろしくお願いいたします。

index.php

php

1<?php 2session_start(); 3$_SESSION['ticket']=SHA1(uniqid().mt_rand()); 4?> 5<html> 6<head> 7 8<title>DB</title> 9<link rel="stylesheet" type="text/css" href="css.css"> 10</head> 11<body> 12 13<form method="post" name="form" action="insert.php" > 14<input type="text" name="name"> 15<input type="submit"> 16</form> 17 18<table border="2" cellspacing="10" width="200px"> 19 <tr> 20 <th scope="col">ID</th> 21 <th scope="col">入力値</th> 22 <th scope="col">詳細</th> 23 </tr> 24 25<?php 26 27if(isset($_GET['error'])) { 28 $error = $_GET['error']; 29 if(strpos($error, '1') !== FALSE) { 30 echo '<span style="color: #ee0000">入力して下さい!</span>'; 31 } 32} 33 34$link = mysql_connect('localhost', 'root', ''); 35if (!$link) { 36 die('接続失敗です。'.mysql_error()); 37} 38 39 40 41$db_selected = mysql_select_db('kk', $link); 42if (!$db_selected){ 43 die('データベース選択失敗です。'.mysql_error()); 44} 45 46 47 48mysql_set_charset('utf8'); 49 50$result = mysql_query('SELECT id,name FROM user'); 51if (!$result) { 52 die('クエリーが失敗しました。'.mysql_error()); 53} 54 55 56 57while ($row = mysql_fetch_assoc($result)) { 58 ?> 59 60 <tr> 61 <td><?php print(htmlspecialchars($row['id']));?></td> 62 <td><?php print(htmlspecialchars($row['name']));?></td> 63 <td id="ss"><a href="info.php?id=<?php print $row['id']; ?>">詳細</a></td> 64</tr> 65 66<?php 67} 68$close_flag = mysql_close($link); 69 70?> 71</table> 72</body> 73</html>

insert.php

php

1<?php 2session_start(); 3 4 5$data = $_POST['name']; 6if($data === "") { 7$error = "1"; 8 header('Location:http://localhost/db2/index.php?error='.$error); 9}else{ 10 11$link = mysql_connect('localhost', 'root', ''); 12if (!$link) { 13 die('接続失敗です。'.mysql_error()); 14} 15 16print('<p>接続に成功しました。</p>'); 17 18$db_selected = mysql_select_db('kk', $link); 19if (!$db_selected){ 20 die('データベース選択失敗です。'.mysql_error()); 21} 22 23print('<p>kkデータベースを選択しました。</p>'); 24 25// MySQLに対する処理 26 27mysql_set_charset('utf8'); 28 $data = mysql_real_escape_string($data); 29 $sql = "INSERT INTO user(name,ins_date) VALUES ('$data',now())"; 30 31 $result_reg = mysql_query($sql); 32 if(!$result_reg){ 33 echo "SQL失敗<br />"; 34 exit; 35 }else{ 36 echo "SQL成功<br />"; 37 } 38$close_flag = mysql_close($link); 39 40if ($close_flag){ 41 print('<p>切断に成功しました。</p>'); 42 header('Location:http://localhost/db2/index.php'); 43} 44} 45 46?>

info.php

php

1<?php 2 session_start(); 3if (isset($_POST['ss'],$_SESSION['ticket']) && $_SESSION['ticket']==$_POST['ticket']) { 4 unset($_SESSION['ticket']); 5}else{ 6 header('Location:index.php'); 7 exit(); 8} 9 10?> 11<html> 12<head> 13 14<title>DB</title> 15 16<link rel="stylesheet" type="text/css" href="css.css"> 17</head> 18<body> 19 20 21 <?php 22 23$link = mysql_connect('localhost', 'root', ''); 24if (!$link) { 25 die('接続失敗です。'.mysql_error()); 26} 27 28 29 30$db_selected = mysql_select_db('kk', $link); 31if (!$db_selected){ 32 die('データベース選択失敗です。'.mysql_error()); 33} 34 35mysql_set_charset('utf8'); 36 37?> 38 39<?php 40$id = $_GET['id']; 41$result = mysql_query("SELECT * FROM user WHERE id='$id'"); 42mysql_real_escape_string($id); 43 44if (!$result) { 45 die('クエリーが失敗しました。'.mysql_error()); 46} 47 48while ($row = mysql_fetch_assoc($result)) { 49 50 51 ?> 52<table border="1" cellspacing="10" width="200px"> 53 <tr> 54 <th>日付</th> 55 <td><?php 56 print date('Y年n月j日 H時i分s秒', strtotime($row['ins_date']));?></td> 57 </tr> 58 <tr> 59 <th>ID</th> 60 <td><?php print(htmlspecialchars($row['id']));?></td> 61 </tr> 62 <tr> 63 <th>入力値</th> 64 <td><?php print(htmlspecialchars($row['name']));?></td> 65 </tr> 66 </table> 67 68 69<?php 70} 71mysql_free_result($result); 72$close_flag = mysql_close($link); 73 74?> 75<a href="index.php"><input type="submit" value="トップページへ" style="margin-top:20px; margin-left:80px"></a> 76</body> 77</html>

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

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

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

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

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

kei344

2017/03/30 02:01

「うまくできない」とは「何をしたときに」「どうなると思って」「どうなったのか」を、出ているエラーなどと併せて、具体的に記述されたほうが回答を得られやすいと思います。
Kuriaki

2017/03/30 02:07

@kei344さん ありがとうございます。
kei344

2017/03/30 02:12

したいことを補足するのではなく、「うまくできない」の状況を補足して欲しいのですが・・・。また、原理的にリロード操作自体を禁止することは難しいため、F5のくだりは削除したほうが良いと思います。
guest

回答2

0

なんのためにリロードを禁止したいのでしょうか?
なんらかの登録処理をしたら別のページに飛ばしてしまえば
リロードしても登録データの二重処理は発生しません
(いわゆる登録完了ページ)

あえてやるならクッキーやセッションを参照して
リロードされても処理が走らないようにするくらいですかね

投稿2017/03/30 02:13

yambejp

総合スコア114821

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

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

0

ベストアンサー

リロードを禁止したいページでそのページを読み込んだときだけに設定されるSESSIONを用意しておき、
そのSESSIONの中に値があったら、他ページに飛ばすなり、エラー表示にするなりしたらよいと思います。

考え方としては・・・

PHP

1 2if(isset($_SESSION['xxxx'])){ 3 //別ページ遷移もしくはエラー表示 4}else{ 5 $_SESSION['xxxx'] = "適当な文字列"; 6}

投稿2017/03/30 02:10

s.t.

総合スコア2021

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問