PHP質問:A session had already been started - PHPプロ!Q&A掲示板

2694

  • 0P

PHP質問:A session had already been started

質問日時 / 2010年4月29日 21:00    回答数 / 2件

Questioner:  flatworld  このエントリーをはてなブックマークに追加 

キーワード / PHP質問    session    started   

下記のソースで下記のエラーが出た。どう解決しますか。
エラー:Notice: A session had already been started - ignoring session_start() in D:\Apache2\htdocs\board.php on line 12
 

ソース:
<?php 
session_start();
$code = mt_rand(0,1000000);
$_SESSION['code'] = $code;
?>
<html>
<head>
<title>掲示板</title>
</head>
<body>
<?php
session_start();
if (isset($POST['OK']))
{
 if ($POST['OK']==$_SESSION['code'])
 {
  extract($_POST,EXTR_OVERWRITE);
  if (!empty($name) and !empty($grade) and !empty($content))
  {
   $link_ID = mysql_connect("localhost","root","******");
   mysql_select_db("talk"); 
   $content=addslashes(nl2br($content));
   $str="insert into board (name,grade,content) values('$name','$grade','$content')"; 
   mysql_query($str,$link_ID); 
   mysql_close($link_ID);
  }
 }
 else
 {
  echo "<script>alert('Error!');</script>";
 }
}
?>
<h3 align="center">掲示板</h3>
<?php
$link_ID = mysql_connect("localhost","root","******"); 
mysql_select_db("talk");
$str="SELECT * FROM  board order by id desc";
$result=mysql_query($str,$link_ID);
mysql_close($link_ID);
$l = mysql_num_rows($result);
for ($i=1;$i<=$l;$i++)
 {
 list($sn, $name, $grade,$content,$time)= mysql_fetch_array($result);
 echo "$name $grade $time #$sn";
 echo "<br><br>";
  echo $content; 
  echo "<hr>";
 }
?>

<form action="board.php" method="post">
<table width="357" border="0">
 <tr>
  <td width="160" valign="top">名前: <input type="text" size="10"
   name="name"></td>
  <td width="203" valign="top">
  <div align="right">クラス: <input type="text" size="16" name="grade">
  </div>
  </td>
 </tr>
 <tr>
  <td colspan="2">内容:<br>
  <br>
  <textarea rows="5" cols="50" name="content"></textarea></td>
 </tr>
 <tr>
  <td colspan="2" align="center"><input type="submit" value="メッセージ">
       <input type="reset" value="再入力"></td>
 </tr>
</table>
<input type="hidden" name="OK" value="<?=$code?>"></form>
</body>
</html>


From http://bbs.flatworld.jp/node/618

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┣A01fedora6 As of PHP 4.3.3, calling session_start() while t
┗A02shimix>$code = mt_rand(0,1000000); >$_SESSION['code'] =

回答一覧

並び替え:

A01
answererfedora6 [4月30日 01:35]


As of PHP 4.3.3, calling session_start() while the session has already been started will result in an error of level E_NOTICE. Also, the second session start will simply be  ignored. 

So in one file, just  calling session_start() once.


###########################
If you also show the notice  ,when you calling session_start() once.
 
It occurs when your PHP.INI file has session.autostart turned on. 
----------------------------
You'll need to turn this off.

Or

if (!isset($_SESSION)) {
    session_start();
}
 
----------------------------

この意見に回答する

ツリーへ TOPへ

A02
answerershimix [4月30日 09:07]

>$code = mt_rand(0,1000000);
>$_SESSION['code'] = $code;

このコードは

>if (isset($POST['OK']))

のときには実行されてはマズイのではないですか?if ($POST['OK']==$_SESSION['code'])が何をチェックしているのかを考えればわかりそうですけど。

#まぁ、それ以前に「$POST」ってどういう変数なのか・・

  1. <html>
  2. <head>
  3. <title>掲示板</title>
  4. </head>
  5. <body>
  6. <?php
  7. session_start();
  8. if (isset($_POST['OK']))
  9. {
  10.   :
  11.   (略)
  12.   :
  13. } else [
  14.     $code = mt_rand(0,1000000);
  15.     $_SESSION['code'] = $code;
  16. }

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
PHPでのRSS表示までの流れについて
 このエントリーをはてなブックマークに追加 
A
get_headers()だとフィードを重複取得したり、宜しく無い様なので、 この件は忘れて、フィード内の以下の値をチェックしてください。 RSS1.0: channel>d:date RSS2.0: channel>lastBuildDate ATOM: modifi...

>>続きを読む

phpファイルをどう分けるか、といった問題は経験のある人に相談すると安心できますね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)