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

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

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

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

PHP

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

Q&A

解決済

2回答

1673閲覧

セッションでの受け取りができない

chintao1224

総合スコア156

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

PHP

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

0グッド

0クリップ

投稿2017/08/31 14:05

編集2017/08/31 22:15

php7、postgresql9.6を使っています。

pg_connectでエラー時にメッセージ表示の画面に遷移しようと考えています。

php

1session_start(); 2@$cn=pg_connect("host=127.0.0.1 dbname=TestDB user=test password=test"); 3if ($cn==false) { 4$_SESSION['message']="データベースへの接続に失敗しました。<br>理由:" . $php_errormsg; 5header("Location:message.php"); 6sessin_destroy(); 7exit; 8}

message.php

1<?php session_start(); ?> 2<html> 3 <head> 4 <meta http-equiv="content-type" content="text/html; charset=utf-8"> 5 <title>メッセージ</title> 6 <link rel="stylesheet" href="style.css" type="text/css"> 7 </head> 8 <body> 9 <h1>メッセージ</h1> 10 <hr> 11 <br><br> 12 <div align="center"> 13 <table border="0"> 14 <tr> 15 <td class="msg_field"> 16 <?php $_SESSION['message'] ?> 17 </td> 18 </tr> 19 <tr><td><br></td></tr> 20 <tr> 21 <td class="msg_buttons" align="center"> 22 <input type="button" value=" 閉じる " onclick="window.close(); return false;"> 23 </td> 24 </tr> 25 </table> 26 </div> 27 </body> 28</html>

画面には遷移されるのですが、メッセージが表示されません。
閉じるボタンだけです。

どうしてメッセージが取れないのか分かりません。

どなたか教えてもらえないでしょうか。

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

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

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

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

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

A.Ichi

2017/08/31 22:54 編集

重複の為削除
A.Ichi

2017/08/31 22:49

<?php echo $_SESSION['message'] ?>または、 <?= $_SESSION['message'] ?> とされてみては?
chintao1224

2017/09/02 02:20

うまくいきました。ありがとうございました。
guest

回答2

0

ベストアンサー

echo $_SESSION['message']

echoがないからですね。

投稿2017/08/31 22:53

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

chintao1224

2017/09/02 02:21

うまくいきました。ありがとうございました。
guest

0

PHP

1session_start(); ← これ、ありますか? 23$_SESSION['message']="データベースへの接続に失敗しました。<br>理由:" . $php_errormsg; 4header("Location:message.php"); 5sessin_destroy(); ← ここのような… 6exit;

投稿2017/08/31 14:20

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

chintao1224

2017/08/31 22:16

sessin_destroy();をコメントアウトしたんですが、同じ現象でした。
Tomak

2017/09/02 00:27 編集

コメントアウトしたなら、関係ないですが「sessin_destroy();」スペル間違ってます。。。 誤解されているかもしれないので、コメント入れておきます。 「session_destroy()」をコールするとセッション機能はそれ以降使用できなくなります。 また、「header('Location:message.php')」すると、直ちにリダイレクト要請がブラウザに送信されて指定の「Location」先にリダイレクトされます。このコードー以降はすべての画面出力が無視されます。(←修正しました)
退会済みユーザー

退会済みユーザー

2017/09/01 23:55

> また、「header('Location:message.php')」すると、直ちにリダイレクト要請がブラウザに送信されて指定の「Location」先にリダイレクトされます。このコードー以降はすべて無視されます。 されませんよ。実際に実行してみてから言っていますか?
退会済みユーザー

退会済みユーザー

2017/09/01 23:59

http://php.net/manual/ja/function.header.php header() メソッドは生のHTTPヘッダを送信するだけの命令であり、実際にリダイレクトするかどうかはPHP側が決めることじゃないです。 ですからヘッダーが出力された後も、以下のコードは exit 等がなされるかコードの終端に達するまで、サーバー側では実行され続けます。
Tomak

2017/09/02 00:24

> また、「header('Location:message.php')」すると、直ちにリダイレクト要請がブラウザに送信されて指定の「Location」先にリダイレクトされます。このコードー以降はすべて無視されます。 はい、そうですね(汗;;;) 「このコードー以降はすべての画面出力が無視されます。」でした。コメント修正しておきます。
chintao1224

2017/09/02 02:23

勉強になります。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問