出るエラーの内容を解決する方法

このQ&Aのポイント
  • Linux + Apache 2.0 + PHP Version 4.3.2を使用している際に携帯からアクセスすると、セッションIDに不正な文字が含まれるエラーが発生します。
  • セッションIDに使われる文字列が不正なため、エラーが発生します。そのため、セッション変数を触らない限りこのエラーは発生しません。
  • エラーの詳細な原因や解決方法についての情報が不足しており、困っています。ご経験のある方に助言をお願いします。
回答を見る
  • ベストアンサー

The session id contains invalid characters,valid characters are only a-z, A-Z an

お世話になります。  Linux + Apache 2.0 + PHP Version 4.3.2 を使用しています。    携帯から使用していると、ごくたまに 「Warning: session_start(): The session id contains invalid characters, valid characters are only a-z, A-Z and 0-9 in」というエラーが出てしまいます。  セッションIDとして使われる文字列が不正という事だと思うのですが、人為的にセッション変数を触らない限り、このような事は起きないものかと認識しておりましたが、違うのでしょうか?  その辺の記述が探し出せず、困っています。   この辺り、ご経験がある方、ご教示いただけると助かります。

  • PHP
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • wp_
  • ベストアンサー率54% (132/242)
回答No.2

idをGETで渡しているのであれば、単純にGETの最大長を超えているとかですかね。 公式サイトである場合、各社ともuidを取得するためにパラメータをGWで勝手に付加したりしますし // 公式サイトでsession_id引き回しなどはしないと思いますけども^^;; 意図しないところでパラメータが切れたりなどする可能性はあります。 GWの仕様が現在どうなっているか知りませんが、パラメータ名が既に定義されているものだったりすると 上書きされてしまったりする可能性もありますね。(uidとか) ともあれ、エラーケースのsession_idにascii以外の文字が本当に入っているかどうか、 実際に渡っている文字列は何なのか確認する必要があるかと思います。 正常なidでかつエラーが出る状況・・・だとcoreのbugかも知れませんね・・・

motacilla
質問者

お礼

お礼遅くなりました。  有難うございます!!  パラメタの上書きについては考えてませんでしたのでとても参考になりました!!

その他の回答 (1)

  • wp_
  • ベストアンサー率54% (132/242)
回答No.1

お使いの端末はなんでしょう。 携帯はほとんどの端末でcookieが使えません。 使える端末でも制限が厳しいです。 cookieが使用できないので当然sessionも使用できません。

motacilla
質問者

補足

有難うございます。  セッションIDはcookieを使わず、GETまたはPOSTで引き継ぐ仕様にしております。  ごくまれに上記エラーが出る以外では、通常通り使用出来ているのですが・・・  ちなみにエラーが確認出来たのはソフトバンクらしいのですが(他のものでも起こっているかも知れません)、もちろんGETのURLについたセッションIDを手動で書き換えたり、フォームのhidden属性のセッションIDを書き換える等は、していないのです。

関連するQ&A

  • 携帯のPHPで・・

    宜しくお願いします 携帯サイトを製作していますが、ドコモでは全く問題ないのですがボーダフォンの実機で確認すると下記のようなエラーが連発します。 (1)Warning: session_start(): The session id contains invalid characters, valid characters are only a-z, A-Z and 0-9 in~ (2)Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at ~ (3)Warning: Unknown(): The session id contains invalid characters, valid characters are only a-z, A-Z and 0-9 in Unknown on line 0 (2)ついてはセオリー通りsession_start();の前には何も書いていません。 環境はwindows,PHP4.3.2です 似たような経験をお持ちの方アドバイスお願いします

    • 締切済み
    • PHP
  • 【携帯】位置情報コンテンツ+セッション

    現在、会員制の位置情報コンテンツを作成しています。 ログインをして、セッションの維持のため、セッションIDをURLに付加しているのですが、 現在地を更新のために、 device:location?url=http://example.com/ にジャンプさせようと思います。 ですが、 device:location?url=http://example.com/<?=SID?> のようにセッションIDを渡すと、リンク先のページで、 http://example.com/?PHPSESSID=xxxxxxxxxx?datum=xxxxx&unit=xxxxx&lat=xxxxx&lon=xxxxx のようなURLになってしまい、エラーが出ます。 (エラー内容は、 Warning: session_start():The session id containsillegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in line 38 Warning: session_start():Cannot send session cachelimiter - headers already sent (outputstarted at line 38) in line 38 のように表示されます。) どのようにしてセッションを保持し、位置情報を取得することができるのでしょうか?

    • 締切済み
    • PHP
  • Apache単体でセッションIDを発行しログに記録できますか?

    GETパラメータで渡したセッションIDをApacheで引き継いで ページ遷移してもセッションIDをログ出力する事は可能でしょうか? ※Apacheモジュールを入れて設定することでもOKです。 又、GETパラメータでセッションIDを渡すのではなく、 ApacheでセッションIDを発行する事は可能でしょうか?

  • rmファイルの再生について

    今までmedia playey classicでrmファイルもすべて見れていたのですが、先日YourFileHostを見ようと別のプレイヤーをダウンロードしたら(その後不要になったのでまたアンインストロールをしたのですが…)突然rmファイルだけが見れなくなってしまいました。 realplayで見ようとしてもなぜかファイルが見つからないために見れないとなってしまいます。 一度media play classicをアンインストロールしてもう一度新しいのをダウンロードしようとしてもなぜか動かない?(ファイルはダウンロードできて、その後にセットアップ?とかが何も出てきません)ので、色々調べてReal Alternativeというのをダウンロードして見ようとしたら、今度は 「Media Player Classic is not able to play this RealMedea file because its filename contains illegal characters . Please rename the file so that the filename contains only ascil characters [a-z 0-9 space _.'()] と出てきました。一体どのようにすればrmのファイルを見れるのでしょうか? よろしくお願いします。

  • セッション情報の保持について

    ログイン画面(https)より 1.ID、PASSを入力し、ログインする 2.JAVAで入力されたID、PASSをセッション変数にセット 3.メニュー画面(http)を開く。そのときセッション変数を  確認してNullの場合はログイン画面に戻る といったシステムを作成しています。 しかしSSLの問題なのか、ブラウザを開いて1回目のログイン時は メニュー画面を開いたときにセッション変数がNullになっています。 2回目以降は問題なく処理されるのですが... SSLでセッションがクリアされるとかいうことはあるのでしょうか? よろしくお願いします。 OS:FreeBSD 4.7 Apache:1.3.33

  • RedHat Linux 8.0 同時セッション数について

    MachioSpotと申します。 よろしくお願い致します。 Linuxの同時セッション数の事で質問します。 現在、下記のサーバ構成で公開サーバを運用しております。   ・RedHat Linux8.0      + Apache Linuxデフォルトの同時セッション数が 1024 セッションと 何かで聞いた事がありますが、このセッション数を上げる ことはできないのでしょうか? 当方もシステムに詳しくないので不明瞭な質問だと思いますが 何卒よろしくお願いします。

  • ASPのSession変数を配列にしたいのですが。。。

    ASPのSession変数を配列にして使用したいのですが、どのように表記すればいいのでしょうか? Do Until rs.EOF ID=Session("ID(i)") i=i+1 rs.MoveNext Loop という感じに使用したいのですが。。。

  • セッション管理を携帯用とPC用

    セッション管理を携帯用とPC用で分けて作成しております。 携帯用では、ログイン後も、GETにセッションIDを付加しているので、自分のサイト内の他のURLにアクセスしても、セッションが引き継がれるのですが(2回目のsession_start()後OK) PC版の方がログインした後、セッションが他のURLに引き継がれません。(PHP PEARのAUTHを使用) 2回目のsession_start()後初期化されてしまうのですが、この問題は携帯と同じようにGETにセッションIDを付加するしか方法はないのでしょうか? セッション変数をグローバル変数に保持するなどは出来ないのでしょうか?

    • 締切済み
    • PHP
  • セッション関数について

    レンタルサーバー上にセッションを使用したプログラムを設置しており、正常に動作していたのですが、 先日より画面遷移時にセッションが継続でなくなりました。(セッション変数の値がNull) 原因として考えられる事としては、設置していたプログラムのソース自体はさわっていないのですが、 同じレンタルサーバーへcakePHPをインストールしようとしました。 しかし、インストール後、  Warning (2): session_start() [function.session-start]: ・・・・ ※こんな感じだったと思います。 みたいなエラーが表示されるようになり、よくわからなくなったのでcakePHP関連のファイルを全て削除しました。 以後、元々設定していたプログラムでセッションが使用できなくなったように思います。 以上のような状況なのですが何か対処等の分かる方はいませんでしょうか? よろしくお願い致します。

    • 締切済み
    • PHP
  • 負荷分散におけるセッションIDの共有

    Webサーバ(apache1.3系)を冗長構成にしている場合、 PHPのセッションIDを使用してのセッションIDの共有は、どのような方法がありますでしょうか? (どっちに振り分けられても、セッションが切れない方法です。) ※DBを使用する方法以外でお願いします。また、モバイルにも対応したいので、Cookieに格納しない方法以外でもお願いします。 参考URL等がありましたら、教えていただけたらとおもいます。 (Java+Tomcatをには、セッションのレプリケーションの機能があることはわかりました。) ロードバランサーの設定にそのような機能がありましたら、教えていただきたいです。

    • 締切済み
    • PHP

専門家に質問してみよう