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

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

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

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

Q&A

解決済

1回答

2118閲覧

セッションに関するエラーの原因が分かりません

newyee

総合スコア213

PHP

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

0グッド

0クリップ

投稿2019/03/02 10:49

PHPの学習として、会員制の簡易な交流サイトを作成しているのですが、エラーが発生してしまい、原因が分からない為、ご質問させていただきました。

php

1<?php 2error_reporting(E_ALL); 3ini_set("display_errors",1); 4 5if(isset($_POST['name']) && isset($_POST['pass'])){ 6 7 //pwハッシュ化 8 $hash_pass = password_hash($_POST['pass'], PASSWORD_DEFAULT); 9 $name = $_POST['name']; 10 $dsn = 'mysql:host=localhost;dbname=online_bbs;charset=utf8'; 11 $user = 'root'; 12 $password = ''; 13 14 try{ 15 $db = new PDO($dsn,$user,$password); 16 $db->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); 17 $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 18 $stmt = $db->prepare(" 19 INSERT INTO users(name,password) 20 VALUES(:name,:pass) 21 "); 22 $stmt->bindValue(':name',$name,PDO::PARAM_STR); 23 $stmt->bindValue(':pass',$hash_pass,PDO::PARAM_STR); 24 $stmt->execute(); 25 /*$stmt = $db->prepare(" 26 SELECT * FROM users WHERE name = :name AND password=:pass 27 "); 28 $stmt->bindValue(':name',$_POST['name'],PDO::PARAM_STR); 29 $stmt->bindValue(':pass',$hash_pass,PDO::PARAM_STR); 30 stmt->execute();*/ 31 32 //正しく追加されていた場合セッション追加 33 34 if($_SESSION['id'] = $db->lastinsertid()){ 35 session_regenerate_id(true); 36 37 38 39 40 41 }else{ 42 echo '登録に失敗しました'; 43 } 44 45 46 47 48 }catch(PDOExcption $e){ 49 die('エラー:' . $e->getMessage()); 50 } 51 52} 53 54?> 55 56 57<!DOCTYPE html> 58<html> 59<head> 60 <meta charset="utf-8"> 61 <title>user_create</title> 62</head> 63<body> 64 <form action="create_user.php" method="post"> 65 <p>名前:<input type="text" name="name"></p> 66 <p>パスワード:<input type="password" name="pass"></p> 67 <input type="submit" value="登録"> 68 </form> 69</body> 70</html>

上記コードは、ユーザーの新規登録処理の部分なのですが、実行しますと、以下のエラーが発生してしまいます。
「Warning: session_regenerate_id(): Cannot regenerate session id - session is not active in C:\xampp\xampp\htdocs\online_bbs\create_user.php on line 35」
どなたか、ご助言頂けましたら幸いです。よろしくお願いします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/03/02 10:54

エラーに来てかかれていることが読み取れないのでしょうか、それとも読んでないのでしょうか?
newyee

2019/03/02 10:57

エラーの内容が読み取れていない状況です...
退会済みユーザー

退会済みユーザー

2019/03/02 11:10

セッションがアクティブじゃないよってエラーに書かれてます
退会済みユーザー

退会済みユーザー

2019/03/02 11:12

session is not active を検索したら解決法は見つかるはずです
newyee

2019/03/02 11:13

そこに関しては、エラーの内容を見た限りでは、なんとなく理解はできるのですが、何故アクティブになっていないかが分からないんですよね...
退会済みユーザー

退会済みユーザー

2019/03/02 11:14

アクティブにしていないからです
newyee

2019/03/02 11:23

session_start();とコードの先頭に追加しましたら、エラーが消えました。 ありがとうございました。
guest

回答1

0

自己解決

session_start()と追記しましたらエラーが解決されました。

投稿2019/03/02 11:27

newyee

総合スコア213

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問