PHPで作成したページがMacで動作しない

このQ&Aのポイント
  • 現在運営しているPHPで作成したアンケートフォームについて問い合わせがありました。入力画面で入力した後、確認画面が表示されないという問題が発生しているようです。サファリでの動作は正常だったため、ブラウザによる非互換性の可能性が考えられます。PHPはサーバサイドスクリプトであり、ブラウザに依存しない言語ですが、一部のブラウザで使用できない関数や処理方法が存在することがあります。また、Macのネスケでのみ動作しない理由や対処法についてもアドバイスをいただきたいです。
  • 運営しているPHPで作成したアンケートフォームに問い合わせがありました。問題は、入力画面で入力した後、確認画面が表示されないことです。サファリでの動作は問題なかったため、ブラウザの非互換性が考えられます。PHPはサーバサイドスクリプトであるため、ブラウザによる影響は限定的ですが、一部の関数や処理方法は特定のブラウザで使用できないことがあります。また、Macのネスケでのみ動作しない理由や対処法についてアドバイスをいただきたいです。
  • PHPで作成したアンケートフォームについて問い合わせがありました。入力画面で入力した後、確認画面が表示されないという問題が報告されています。サファリでの動作は問題なかったため、ブラウザの非互換性が疑われます。PHPはサーバサイドスクリプトであるため、ブラウザの違いに影響を受けにくいですが、一部の関数や処理方法はブラウザに依存することがあります。また、Macのネスケでのみ問題が発生している理由や対処法についてのアドバイスをいただきたいです。
回答を見る
  • ベストアンサー

PHPで作成したページがMacで動作しない

タイトルのようなものはあるのでしょうか? というのも、現在運営しているPHPで作成したアンケートフォームについて問い合わせがきました。 アンケートフォームは全てPHPファイルで、入力→確認→メール送信→完了を行っています。 また、入力された値はそれぞれ$_SESSION['hoge']で管理しています。 問い合わせ内容は、入力画面で入力した後確認画面がいくら待っても表示されないというものでした。 とりあえずの対応としてサファリで行ってもらった結果、問題なく登録できたとのことです。 phpはサーバサイドスクリプトなので、ユーザーの使用ブラウザまであまり考慮していなかったのですが、ブラウザによって使えない関数・処理方法などはあるのでしょうか? また、上記のアンケートフォームについて、Macのネスケでだけ使えない理由・対処法についてもアドバイスいただけますでしょうか。

noname#102084
noname#102084
  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
noname#39970
noname#39970
回答No.1

ネスケ・・・かクッキーを無効化してたりするとかそういう類では? あとネスケ、4.xだとしたら古すぎて使ってるタグやCSSが対応できない物だったとかそういうオチかもしれない。

noname#102084
質問者

お礼

ご回答ありがとうございます。 お礼が大変遅くなってしまったこと、深くお詫びいたします。 クッキー関連は私も疑ってみたのですが、10回に2回ほどは上手くいったので困っていたのです。 結局原因はわからなかったので、 「Macのネスケでは1度で正常に完了できない場合があります」 と逃げておきました; すぐにご回答いただいたにも関わらずこれほど遅くなってしまい、本当に申し訳ございませんでした。 ありがとうございました。

関連するQ&A

  • 完全なセッション破棄をしたい

    現在運営中のアンケートフォームを改善したいと思い、質問させていただきます。 現在のアンケートフォームは、入力画面.php→確認画面.php→メール送信.php→完了画面.htmlの4ファイルで構成していて、画面としては3画面です。 また、入力値についてはセッション管理をしています。 メール送信後は、以下の命令でセッション破棄・完了画面.htmlの呼び出しを行っております。 $_SESSION = array(); session_destroy(); header("Location: 完了画面.html"); ところが、セッションが完全に破棄されておりません。 具体的にあげますと、完了画面でブラウザの戻るをクリックして確認画面.phpへ戻り、「ページの有効期限が切れています」と表示されるためリロードを行うと値が入った確認画面が表示されてしまうのです。 ページの有効期限が切れていますうんぬんはかまわないのですが、リロードした時に破棄したはずの値がなぜ表示されてしまうのでしょうか。 また、最終的に求めている「同じ内容が二重送信されないようにする」のために、どのように修正すればよいでしょうか。 アドバイス、お願いいたします。

    • ベストアンサー
    • PHP
  • PHPのメールフォーム(お問合せフォーム)について

    PHPのメールフォーム(お問合せフォーム)について 今、PHPでメールフォームを作っています。 (よくあるお問合せフォームです。) 書籍やウェブサイトを参考に 見よう見まねで、一通り作ってみました。 ただ、メールフォームを作るのは初めてなので 自分が作ったのものが公開できるレベルなのか (一般的なレベルに達しているかどうか)不安な感じです。 そこで、メールフォームについて詳しい方いらっしゃいましたら メールフォームを作る際に、押さえておくポイントについて 箇条書きで構いませんので、簡単に教えていただけないでしょうか。 例えばこんな感じで↓ ------------------- ・データの受け渡しはセッションを使う ・入力されたデータは必ずチェック ・Nullバイト攻撃対策をする ・セッションハイジャック対策する -------------------- ■私が作ってみたメールフォームの入力項目は下記のとおりです。 ------------------- <入力項目> 名前 電話番号 郵便番号 住所 メールアドレス メールアドレス(確認のため2回入力) お問合せ内容 ------------------- ■流れとしては下記のとおりです。 ------------------- 1)入力画面 ↓ 2)確認画面 ↓ 3)完了画面 ↓ 4-1)サイト運営者に入力内容が記載されたメールを送信。 4-2)ユーザーにサンクスメールを送信。 -------------------

    • ベストアンサー
    • PHP
  • PHPで、日付をチェック

    PHPで、飲食店の予約フォームを作っています。 ファイルは下記の通り。 hoge1.php (フォームに入力) hoge2.php (確認画面) hoge3.php(送信完了画面) check.php入力内容のチェック このフォームで、予約日が前日以内の場合、 「電話にてご予約ください。」 と、エラー表示させたいのですが。 お手数ですが、ご教示ください。 未熟者ですが、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • php フォーム開発 IE9のみセッション消滅

    フォーム機能での、「入力画面」>「確認画面」>修正するボタン>「入力画面」 という流れの中の、ブラウザIE9でのセッションの消滅について質問させてください。 はまってしまってから3日になります。とうとう力尽きました。 IE9以外の下位バージョンやFireFoxでは問題なく動きます。 まず、環境から。 xmpp 1.7.3 PHP 5.3.1 MySQL 5.1.41 Smarty 3.0.7 ※同一ドメインで、フォームを複数運営させるため、 各フォームのそれぞれの項目(ラジオ,チェックボックス,テキストエリアなど)を管理画面から一意の値と共にDBに格納しています。 各フォームを表示する際は、その一意の値を呼び出して出力しています。 次に、処理の流れです。 (1)「入力画面」では、各入力項目をDBから取得し、少し整形してフォーム画面を出力しています。 Smartyを使っていますので、テンプレートへ アサインする形です。 ※この際、$_SESSION["f"]["no"]に、フォームを大別する一意の値を入れています。 閲覧者が入力した内容は、自身「入力画面.php」にポストして、 空の判別後、$_SESSION["f"]["別の一意の数値"]に保存します。 その直後、エラーチェック関数にそのセッションを通して、通過すれば「確認画面」へリダイレクトします。 /*下記のように*/ $url = "http://".$_SERVER["HTTP_HOST"].dirname($_SERVER["SCRIPT_NAME"])."/確認画面.php"; header("Location: ".$url); exit; (2)「確認画面」では、 「入力画面」を経由したかどうかをphpの先頭でチェックします。 上述の$_SESSION["f"]["別の一意の数値"]を使って、同じエラーチェック関数で審査を行い、 通過すれば「確認画面」を表示するようにしています。 ※実際は、このチェックの前に$_SESSION["f"]["no"]を使ってDBから値を取得したりしています。 /*下記のように*/ $p[2]=フォーム取得関数($_SESSION["f"]["no"]);//DBからフォームに関する個別の値を取得。 if(count($p[2])!=0){ if(エラーチェック関数($_SESSION["f"])){ //エラー 入力画面経由ではないので 「入力画面」へ戻す $url = "http://".$_SERVER["HTTP_HOST"].dirname($_SERVER["SCRIPT_NAME"])."/入力画面?no=".$_SESSION["f"]["no"]; header("Location: " . $url); exit; } }else{ //エラー フォーム関連パーツを取得できないので 「入力画面」へ戻す $url = "http://".$_SERVER["HTTP_HOST"].dirname($_SERVER["SCRIPT_NAME"])."/入力画面?no=".$_SESSION["f"]["no"]; header("Location: " . $url); exit; } (3)問題なければ、 「確認画面」が表示されます。 (4)内容を修正するのであれば、 「修正するボタン」を押して >「入力画面」へと遷移させます。 /*下記のように*/ <テンプレート内> <form action="確認画面.php" method="post"> <input type="submit" name="modify" value="   修正する   "> </form> <確認画面.php内> if(isset($_POST["modify"]){ $url = "http://".$_SERVER["HTTP_HOST"].dirname($_SERVER["SCRIPT_NAME"])."/入力画面?no=".$_SESSION["f"]["no"]; header("Location: ".$url); exit; } (5)確認画面からゲットでnoの値を受ける(入力画面にて) <入力画面.php内> if(isset($_GET["no"]) && is_numeric($_GET["no"])){ //$_GET["no"]つまり$_SESSION["f"]["no"]を使ってDBの値取得 } そしてセッションを維持したままなので、前回の入力項目を修正することができる。 これらの一連の流れは、IE9以外だと正しく動きます。 IE8も含めIE7 IE6 でも正常に動きます。 しかし、(4)の段階で、$_SESSION["f"]["no"]の値が消滅している為か、「入力画面」へと戻ることができません。 細かく言えば、(2)や(3)の段階(最初の「確認画面」へと遷移した時点)では、$_SESSION["f"]["no"]値は生きているようです。 (4)の段階の修正するボタンを押すと消滅しているようです。 <form action="確認画面.php" method="post"> <input type="submit" name="modify" value="   修正する   "> </form> これをポストして、自身「確認画面.php」に再度アクセスすると、 $_SESSION["f"]["no"]が消滅しているようです。 ただ、おかしなことに、確認画面.php内のどこかに print_r(変数); 入れてやると、一応_SESSION["f"]["no"]の値は維持されるようで、 元の入力画面へと遷移できてしまいます。 ※ただ、元の入力画面に戻ったときには、_SESSION["f"]["no"]は消えているようです・・・・。 ※print_rが発動したphpファイルだけが大丈夫なようです。 いろいろネットで検索をかけました。 ドメインにアンダーバーを使ってはダメだとか、session_idやname のことも調べましたが、 どうも該当している問題ではなさそうなんです。 セッションについて理解が深くない自分ですが、session_idが関連づいていない? 他のブラウザやバージョンでは問題なしだが、 IE9のみ特殊な仕様で、header("Location: " . $url);を使うとセッションを関連付けしてくれない? ということなのかなと推測していますが。 もう自分の力量ではどうにもならず・・・・。 そもそも上記のプログラムの流れで、 他のフォームも沢山作ってきましたが、いままでこのような問題には遭遇しませんでした。 正しく稼動しています。 「入力画面」から「確認画面」へは、セッションを使って安全に遷移したいので、 他の方法をとるのは厳しいかなと・・・。 どうぞお力をお貸しください。 何卒よろしくお願いします。

    • 締切済み
    • PHP
  • php3からphpを呼び出し、POSTデータを渡す方法

    何時もお世話になります。 今回質問させて頂きたいことは php3のスクリプトからphpスクリプトを呼び出し、さらに phpスクリプトはPOSTデータを渡す方法は無いか教えて頂きたいです。 環境は FreeBSD4 apache_1.3.33 php-3.0.18-i18n-ja-3 php-4.3.7 です。 仮に呼び出し元のphp3のファイルをexample.php3 呼び出し先のphpのファイルをhoge.php として解説します。 example.php3から include、require等の関数で hoge.phpを呼び出した場合、hoge.phpは php3として実行される様なのでこの方法は×。 example.php3でvirtual()関数を使い、hoge.phpを呼び出せば 解決かと思ったのですがPOSTデータをhoge.phpに 渡す方法が無いためこの方法も×。 php3ではSESSIONが使えないため、SESSION + virtual()関数という 方法も×。 ということでちょっと手詰まりの状態です。どなたか解決方法をご存知の 方ご教示頂ければと思います。

    • ベストアンサー
    • PHP
  • インラインフレーム内のセッション

    通常のHTMLファイルのインラインフレーム内に、別サーバーからPHPファイルを取得して表示しています。 そのPHP自体は簡単なアンケート(フォーム→入力内容確認→送信)なんですが、このフォーム→入力内容確認の遷移がうまくいきません。 セッションでフォーム内の値と送信ボタンの値(sub)を保持し、確認のファイルに if(@$_SESSION['sub']!=TRUE){ header("location:form.php"); exit(); }else{ (以下略) } と記述することで、もしURL直打ちの場合はフォームの入力画面に飛ばされるようにしてあるのですが、インラインフレームの中でフォームに入力して送信ボタンを押すと、強制的に同じ画面に戻ってしまうのです。 直接ブラウザで該当のPHPを見たときは、何の問題もなく動くので、プログラム自体にエラーがあるわけではないと思うのですが・・・。 どうも確認ファイルのif(@$_SESSION['sub']!=TRUE)で、セッションがうまく保持されていないためにheaderで飛ばされてしまっているらしいのですが、インラインフレーム内でセッションを利用するときはどうすればいいのでしょうか?

    • ベストアンサー
    • PHP
  • PHPでのフォーム

    お問い合わせフォームを作りたいと考えているのですが、 みなさま、いったいどのようなロジックで作られるのか、 ご意見をいただきたいと思います。 単純に考えて、ひとつのファイルに入力画面、エラー画面、確認画面、 完了画面をすべて入れてしまい、ユーザーのアクションによって出し分ける方がなんかいいのかなーなんて素人ながらに思うのですが、 よく見るフォームは入力画面用のphpとエラー画面用のphpと確認画面用のphpとファイルを分けているものがほとんどのようですが、 いかがなものでしょうか。 とても漠然とした質問で申し訳ないのですが、 前者後者のメリットデメリットなどご意見いただければと思います。

    • ベストアンサー
    • PHP
  • PHPによる問い合わせフォームのデーターの受け渡し

    Webサイトを作成しており、現在は問い合わせフォームに取り組んでおります。 そこで、問い合わせフォームで入力したデータを送信した後の、確認画面が上手くできません。 PHPのファイルには以下のように記載しました。 しかし、実際のブラウザの問い合わせフォームのページから送信ボタンを押しても、全く何も表示されておりません。真っ白のままです。 そういえば、問い合わせフォームのページ全体のデザインのまま、データを引き継ぐにはどうしたら良いのでしょうか? PHPファイルに何か特別なコードを記載する必要があるのでしょうか? ちなみに、htmlファイルとphpファイルのhead情報は同じです。 何かアドバイスをして下さる方、お願いします!! <?php $name=$_POST['name']; if($name=='') { print'入力されておりません。'; } else { print $name; } ?>

    • ベストアンサー
    • PHP
  • セッション PHPとHTML

    form1.htmlのaction先にorder.phpを指定し、そのorder.phpで$_POSTを使ってform1.htmlのフォーム情報を取得します。その後、order.phpはheader(Location)でform2.htmlをブラウザ上に表示させます。 form2.htmlはaction先が同じorder.phpになっており、ifで動作を制御しています。form2.htmlのsubmitボタンを押すと、画面上にorder.phpにより、今まで2つのフォームで入力した内容が表示されます(order.phpはsessionですべての変数を保持しています)。 この時「form1の内容を訂正」「form2の内容を訂正」というリンクないしボタンを設けて、該当フォームに飛べるようにしたいのです。 このリンク/ボタンで該当フォームに飛んだ場合、入力内容がフォームに表示されるようにするには、どのようにすればいいのでしょうか? いまいちsessionの詳しい使い方が分からなくて困っています・・・。

    • ベストアンサー
    • PHP
  • PHP 確認画面から入力画面に戻ると入力したデータが消える。

    PHPプログラム初心者です。 現在フォームに入力したデータをPHPのmail()関数を使用して特定のメールアドレスへ送信するプログラムを作成しています。 プログラムの流れとしては、 入力画面 ↓ 確認画面 ↓ 送信完了画面(メールでデータ送信) ここで問題があるのですが、確認画面で入力ミスが見つかりブラウザーの「戻る」ボタンで入力画面に再度戻った場合、入力したデータが全て消えてしまいます(ブラウザーはIE。)。どうすれば、確認画面から入力画面に戻っても入力したデータが消えないようにできるのでしょうか? データの引渡しをGETではなくPOSTにすればよいだけですか? また、現在データの引渡しにはセッションではなくtype=hiddenを使用しているのですが、これも関係しているのでしょうか? よろしくお願いします

    • ベストアンサー
    • PHP