さくらスタンダードで動かない。

このQ&Aのポイント
  • さくらレンタルサーバのスタンダードプランに移動してから、enter.phpが正しく動作しなくなりました。
  • 入力エラーの確認はできるが、入力フォームが表示されず画面が切り替わらない問題が発生しています。
  • mail.phpのURLを直接入力すると正しく表示されますが、問題の原因がわかりません。
回答を見る
  • ベストアンサー

enter.php:さくらスタンダードで動かない。

下記のenter.phpのコードですが、さくらレンタルサーバのスタンダードプランに移動してから正しく動作しなくなりました。 さくらで設定しているPHPのバージョン:PHP 5.2.17 [標準のPHP] (CGI版) モジュール版は利用不可能です。 現在の動作としては、「確認画面へ進む」ボタンを押すと、入力エラーの確認はきちんとできます。入力内容に問題がなければ、mail.phpへページが移動するはずなのですが、enter.phpからmail.phpへ画面が切り替わらず入力フォームも表示されなくなり、enter.phpの背景のみ表示されてしまいます。 そこで、mail.phpのURLをブラウザーのアドレスバーに直接入力すると、mail.phpが正しく表示されます(データはenter.phpからmail.phpにちゃんと送られているようです。)。 どなたか、どこが悪いか教えてください。 <enter.php> <?php session_start(); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> </head> <body> <?php if (isset($_SESSION['input_data'])) { $input_data = $_SESSION['input_data']; $_SESSION = array(); session_destroy(); } if (isset($_POST['confirm'])) { $isErr = false; if (strlen(trim($_POST['inquiry'])) == 0) { $isErr = true; $error_inquiry = '内容を入力してください。'; } if (!$isErr) { $_SESSION['input_data'] = $_POST; header('Location: http://www.example.com/contact/mail.php'); exit; } else { $input_data = $_POST; } } ?> <form action="enter.php" method="post"> <table> <?php if (isset($error_inquiry)) { echo $error_inquiry;} ?> <tr> <td> * </td> <td> 内容 </td> <td> <textarea name="inquiry" cols="35" rows="20"><?php echo htmlspecialchars($input_data['inquiry'], ENT_QUOTES, 'UTF-8') ?></textarea> </td> </tr> <tr> <td colspan="3"> <div> <input type="submit" name="confirm" value="確認画面へ進む"> </div> </td> </tr> </table> </form> </body> </html>

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

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

  • ベストアンサー
  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.3

さっきの回答に書けばよかった。連投すみません。 問題の切り分けとして、header関数一行だけのスクリプト書いて 動くかどうか試してみてください。

kitty1000
質問者

お礼

bm_hiroさん ご回答、ありがとうございました。 解決しました。 php.iniの「output_buffering」が「Off」だったので、「On」に変更するだけで解決しました。元々、コードには何の問題も無かったと言うことです。

その他の回答 (2)

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.2

> さくらレンタルサーバのスタンダードプランに移動してから正しく動作しなくなりました。 との事でしたので、前の所では動いていたんだろうな~と思い、深く考えていませんでしたが、header()の前に何か出力されていちゃいけないんじゃなかったんでしたっけ? 空白一個でも改行一つでもBOMでも。 http://php.net/manual/ja/function.header.php

kitty1000
質問者

補足

bm_hiroさん ご回答、ありがとうございました。

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.1

とりあえず、解決になっていませんので聞き流しでお願いします。 そちらの説明とソースをざ~っと読んだだけですが、現象から判断するに「header('Location: http://www.example.com/contact/mail.php');」で、コケてるんじゃないかな~。と思いました。 俺なら とりあえず 試しにリダイレクトさせずに 何か テキトーにprint させるだけとかにしてみて どうなるかを見ます。 > (データはenter.phpからmail.phpにちゃんと送られているようです。)。 データそのものは セッションに入れてるみたいですから、URL直打ちでも ちゃんと動作してくれるんでしょうね。と推測。 さくらレンタルサーバの事を知らないので、これ以上は にんともかんとも。

kitty1000
質問者

お礼

補足部分がないので、お礼部分に補足します。 どうやら、header関数がうまく動いていないようです。 enter.phpを下記のコードに変更しましたが、だめです。 <?php session_start(); ?> <?php if (isset($_POST['confirm'])) { $isErr = false; if (strlen(trim($_POST['inquiry'])) == 0) { $isErr = true; $error_inquiry = '内容を入力してください。'; } if (!$isErr) { $_SESSION['input_data'] = $_POST; $input_data = $_POST; header('Location: http://www.example.com/contact/mail.php'); exit; } else { $input_data = $_POST; } } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> </head> <body> <form action="enter.php" method="post"> <table> <?php if (isset($error_inquiry)) { echo $error_inquiry;} ?> <tr> <td> * </td> <td> 内容 </td> <td> <textarea name="inquiry" cols="35" rows="20"><?php echo htmlspecialchars($input_data['inquiry'], ENT_QUOTES, 'UTF-8') ?></textarea> </td> </tr> <tr> <td colspan="3"> <div> <input type="submit" name="confirm" value="確認画面へ進む"> </div> </td> </tr> </table> </form> </body> </html>

kitty1000
質問者

補足

bm_hiroさん ご回答、ありがとうございました。 >現象から判断するに「header('Location: http://www.example.com/contact/mail.php');」 >で、コケてるんじゃないかな~。と思いました。 そのようです。 「確認画面へ進む」ボタンをクリックすると、mail.phpへ飛ばず、header関数のある位置でページのコードが切れた状態でenter.phpが再び表示されてしまいます。 ためしに、header関数が含まれている「<?php」から「?>」まで全体を <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> より上へ記述してみましたが、改善されませんでした。 どなたか、理由がお分かりの方、いますか? ついでにmail.phpの仮コードも記載しておきます。 <mail.phpコード> <?php session_start(); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> </head> <body> <?php if (!isset($_SESSION['input_data'])) { echo('再度入力画面からやり直してください。'); echo('</body></html>'); exit; } else { $input_data = $_SESSION['input_data']; } ?> <form action="mail.php" method="post"> <table> <tr> <td> * </td> <td> 内容 </td> <td> <?php echo nl2br(htmlspecialchars($input_data['inquiry'], ENT_QUOTES, 'UTF-8')); ?> </td> </tr> <tr> <td colspan="3"> <div> <input type="submit" name="back" value="戻る"> </div> </td> </tr> </table> </form> </body> </html>

関連するQ&A

  • php メールフォーム プルダウンメニュー

    プルダウンメニューを使用して、フォーム→確認→送信と順々に値を受け取りたいのですが、form.phpではプルダウンメニューは表示されますが、form.phpで選択したプルダウンメニューがconfirm.phpでは表示されません。 confirm.phpでも表示されてなおかつ送信をしたら受け取れるようにしたいのです。 初心者なので、いろいろと勉強をしながら、本を読んだり、調べたのですが、まったくわからずです。どなたかご教授お願いします。 form.php <form method="post" action="confirm.php"> <table cellpadding="0" cellspacing="0" border="0"><tr><td>項目</td><td>入力欄</td><td>記入例</td></tr> <tr><td><label for="name">名前</label></td><td><input type="text" size="50" name="name" id="name" value="<?php print h(@$_SESSION['name']); ?>" /></td><td>例:goo 太郎</td></tr> <tr><td><label for="mail">生年月日</label></td><td> <select name="year[]"><option value="1970">1970</option><option value="1971">1971</option><option value="1972">1972</option><option value="1973">1973</option><option value="1974">1974</option></select>年 <select name="month[]"><option value="01">01</option><option value="02">02</option><option value="03">03</option><option value="04">04</option><option value="05">05</option><option value="06">06</option></select>月 <select name="day[]"><option value="01">01</option><option value="02">02</option><option value="03">03</option><option value="04">04</option><option value="05">05</option><option value="06">06</option></select>日 </td><td>例:1990年01月01日</td></tr> <tr><td colspan="3" style="text-align:center;"><input type="hidden" name="aaa" value="<?php print h($aaa); ?>" /><input type="submit" value="確認" /></td></tr> </table></form> confirm.php session_start(); $_POST = checkInput($_POST); if (isset($_POST['aaa']) && isset($_SESSION['aaa'])) { $aaa = $_POST['aaa']; if (!in_array($aaa, $_SESSION['aaa'])) { die('不正アクセスの疑いがあります。'); } } else { die('不正アクセスの疑いがあります。'); } $name = isset($_POST['name']) ? $_POST['name'] : NULL; $kana = isset($_POST['kana']) ? $_POST['kana'] : NULL; $mail = isset($_POST['mail']) ? $_POST['mail'] : NULL; $comment = isset($_POST['comment']) ? $_POST['comment'] : NULL; $error = array(); ★★★各項目のチェック★★★ $_SESSION['name'] = $name; $_SESSION['kana'] = $kana; $_SESSION['mail'] = $mail; $_SESSION['comment'] = $comment; $_SESSION['error'] = $error; <table class="form" cellpadding="0" cellspacing="0" border="0"> <tr><td>項目</td><td>入力欄</td><td class="title_color" style="border-left:1px solid #ffffff;">記入例</td></tr> <tr><td>名前</td><td class="title_back2"><?php print h($name);?></td><td>例:goo 太郎</td></tr> <tr><td>生年月日</td><td>★★★★★ここにform.phpからのプルダウンメニューを受け取りたい★★★★★</td><td>例:1990年01月01日</td></tr> </table> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td><form action="form.php" method="post"><input type="submit" value="戻る" /></form></td> <td><form action="send.php" method="post"><input type="hidden" name="aaa" value="<?php print h($aaa);?>" /><input type="submit" value="送信" /></form></td> </tr></table>

    • ベストアンサー
    • PHP
  • [PHP初心者] フォームのエラーチェック

    PHPやデータベースに全く疎い者です。 皆様にご指導頂きたく投稿致します。質問内容もレベルが低いですがどうが宜しくお願いします。 メールフォームにてフォームのボタンを押下し、 エラーチェックをして、エラー項目を同一画面上の上の辺りに表示させたいのですが、、参考書を読んだり、過去スレを拝見しても、どうもわかりません。 <body> //↓この辺をどう書けばいいのか、さっぱりなんです。 <?php if(isset($_POST['mailform'])) { if($_POST['name'] == "") { echo("名前を入力して下さい。<br>"); }} ?> //↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ <form method="POST" action="kakunin.php"> <table border="0" cellpadding="5"> <tr> <td colspan="2"></td> </tr> <tr> <td>名前</td> <td><input type="text" name="name" size="20"></td> </tr> <tr> <td>メールアドレス</td> <td><input name="mail" type="text" id="mail" size="20"></td> </tr> <tr> <td>項目</td> <td>     <input type="checkbox" name="check[]" value="PHP">PHP <input type="checkbox" name="check[]" value="Perl">Perl <input type="checkbox" name="check[]" value="ASP">ASP <input type="checkbox" name="check[]" value="JSP">JSP</td> </tr> <tr> <td>お問い合わせ内容</td> <td><textarea rows="5" name="naiyou" cols="40"></textarea></td> </tr> <tr> <td colspan="2"><input name="mailform" type="submit" id="mailform" value="::入力内容を確認::">  <input type="reset" name="Submit" value="リセット"></td> </tr> </table> </form> </body>

    • 締切済み
    • PHP
  • <?php

    <?php session_start(); $_SESSION['name'] = $_POST['name']; $_SESSION['kana'] = $_POST['kana']; $_SESSION['nick'] = $_POST['nick']; $_SESSION['sex'] = $_POST['sex']; $_SESSION['pass'] = $_POST['pass']; $_SESSION['pass2'] = $_POST['pass2']; $_SESSION['mail'] = $_POST['mail']; if(empty($_SESSION['name'])) { $_SESSION['error'] = '名前を入力して下さい'; } if(empty($_SESSION['kana'])) { $_SESSION['error'] = 'フリガナを入力して下さい'; } if(empty($_SESSION['pass'])) { $_SESSION['error'] = 'パスワードを入力して下さい'; } if(empty($_SESSION['pass2'])) { $_SESSION['error'] = '確認用パスワードを入力して下さい'; } if($_SESSION['pass'] and $_SESSION['pass2'] and ($_SESSION['pass'] != $_SESSION['pass2'])){ $_SESSION['error'] = 'パスワードが一致しません'; } if (preg_match("/^[a-zA-Z0-9]{4,12}$/", $_SESSION["pass"])){ $_SESSION['error'] = 'パスワードは半角英数字で入力して下さい'; } if(isset($_SESSION["error"])) { header("Location: regist.php"); exit; } else { header("Location: index.php"); exit; } ?> で、PCからみるとエラーメッセージがでるのですが、自分の携帯(ドコモ)でみるとエラーメッセージが表示されていません・・・ なぜでしょうか?><; フォーム画面のソースは <?php if (isset($_SESSION["error"])) { echo $_SESSION["error"]; session_destroy(); } ?> </font> <font size="2"> <form action="error_check.php" name="form" method="post"> //ここからフォーム内容 です。 ご教授のほど宜しくお願い致します><;;;;;;; 補足 >GETで、セッション名に、session_id()で取得した値を渡してやる必要があります。 それはいったいどうやるんですか?><; 簡単でいいのでソースとか記述してくださればわかりやすいです><; お願い致します><;

    • 締切済み
    • PHP
  • PHPのログイン処理について

    PHPのログイン処理について教えてください。 「login_auth.phpファイル」 <?php //session開始 session_start(); session_regenerate_id(true); //エラーメッセージを格納する変数を初期化 $error_message=""; //ログインボタンが押されたかを確認 if(isset($_post["sub"])){ if($_post["auth_id"] == "auth" && $_post["auth_pass"] == "1234"){ //ログインが成功した証拠をセッションに保持する $_session["login_name"] = $_post["auth_id"]; //管理者トップへWebブラウザをリダイレクトさせる $login_url = "http://{$_server["http_host"]}/reservation/auth_top.php"; header("Location: {$login_url}"); exit; } $error_message = "IDかPASSが間違えています"; } ?> <html> <body> <?php if($error_message){ print '<font color="red">'.$error_message.'</font>'; } ?> <center> <hr size="2" color="blue" width="50%"><br><br> <font size="4"><b>管理者認証画面</b></font> <br><br><hr size="2" color="blue" width="50%"><br><br> ユーザID/パスワードを入力してください。 <form action="login_auth.php" method="post"> <table border="2"> <tr> <td bgcolor="cyan">ユーザID</td> <td><input type="text" name="auth_id" value=""></td> </tr> <tr> <td bgcolor="cyan">パスワード</td> <td><input type="password" name="auth_pass" value=""></td> </tr> </table> <input type="submit" name="sub" value="ログイン"> </form> <a href="javascript:window.close();" target=_parent>閉じる</a> </center> </body> </html> 「auth_top.phpファイル」 <?php //セッションを開始する session_start(); //ログインが成功した証拠である変数のチェックを行なう if (!isset($_SESSION["login_name"])) { //変数に値がセットされていない場合は不正な処理とみなし、ブラウザをログイン画面へリダイレクトさせます $no_login_url ="http://{$_server["http_host"]}/reservation/login_auth.php"; header("Location: {$no_login_url}"); exit; } ?> 管理者画面です。 この簡単なプログラムなんですが、IDとPASSを入力しても画面が切り替わりません。 今、そこで行き詰っています。 どなたか教えていただけないでしょうか??

    • 締切済み
    • PHP
  • 入力内容の確認を行う前に$_POSTの入力値の前後から半角及び全角の空白を取り除きたい。

    一つのファイルでフォームへの入力及び入力内容の確認ができるファイル(enter.php)を作成しているのですが、入力内容の確認を行う前に入力値の前後から半角及び全角の空白を取り除きたいです。 しかし、半角及び全角の空白を取り除く部分でプログラムが動作しなくなり、なぜかわかりません。具体的には、以下の部分が問題です。 //入力された値の前後の全角及び半角スペースを取る関数。 function remove_space(&$value) { $value = preg_replace('/^[  ]*(.*?)[  ]*$/u', '$1', $value); } 及び //下記で入力された値の前後の全角及び半角スペースを一気に取り除きたい(ここが問題。)。 array_walk($_POST, 'remove_space'); の部分です(これらの部分を取り除くとプログラムは問題なく動作します。)。 どうやら、function remove_spaceの部分よりもarray_walk($_POST, 'remove_space'); が間違っているようなのですが、どこが悪いかわかる方おられますか? 一様、一通りのコードを下記へ載せておきます。 /////////////////////////////enter.phpファイル <?php session_start(); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <body> <?php //入力された値の前後の全角及び半角スペースを取る関数。 function remove_space(&$value) { $value = preg_replace('/^[  ]*(.*?)[  ]*$/u', '$1', $value); } if (isset($_POST['confirm'])) { $isErr = false; //下記で入力された値の前後の全角及び半角スペースを一気に取り除きたい(ここが問題。)。 array_walk($_POST, 'remove_space'); if (strlen($_POST['my_name']) == 0) { $isErr = true; $error_person = '名前を入力してください。'; } if (strlen($_POST['hobby']) == 0) { $isErr = true; $error_person = '趣味を入力してください。'; } if (strlen($_POST['school']) == 0) { $isErr = true; $error_person = '学校を入力してください。'; } if (!$isErr) { $_SESSION['input_data'] = $_POST; header('Location: https://www.example.com/mail.php'); exit; } } ?> <form action="enter.php" method="post"> <input type="text" name="my_name"> <input type="text" name="hobby'" > <input type="text" name="school"> <input type="submit" name="confirm" value="確認画面へ進む"> </form> </body> </html> ///////////////////////////// よろしくお願いします。

    • ベストアンサー
    • PHP
  • 会員専用のログインページを作っているのですが、分からない事があります。

    会員専用のログインページを作っているのですが、分からない事があります。 1.フォームにIDとPASSWORDを入力 2.login.phpで会員データーベースに入りIDとPASSWORDが存在すれば会員専用ページに移動 ----form.html---- <form action="" method="post"> <table> <tr> <td>あなたのID:</td> <td><input type="text" name="usrid" size="15" value="<?php echo htmlspecialchars($_POST['usrid']); ?>" /></td> </tr> <tr> <td>パスワード:</td> <td><input type="password" name="usrpw" size="16" value="<?php echo htmlspecialchars($_POST['usrpw']); ?>" /></td> </tr> <tr> <td><input type="submit" value="ログイン" /></td><td> </td> </table> </form> ----login.php---- //MYSQLに接続 require_once('sql.php'); //セッションを開始します。 session_start(); $_SESSION["usrid"] = ""; //自分のID $_SESSION["usrpw"] = ""; //自分のPASS //変数の初期化 $usrid = ''; //ユーザーID $usrpw = ''; //パスワード //POSTされたとき if ($_SERVER["REQUEST_METHOD"]=="POST") { //ログインボタンが押されたとき if (isset($_POST["submit"])) { //POSTされたデータを取得 $usrid = htmlspecialchars($_POST["usrid"], ENT_QUOTES); //ID $usrpw = htmlspecialchars($_POST["usrpw"], ENT_QUOTES); //パスワード //入力内容チェック if (strlen($usrid)==0){$error = "ユーザIDが入力されていません";} if (strlen($usrpw)==0){$error = "パスワードが入力されていません";} //エラーがない場合 if (strlen($error)==0){ //meiboテーブルをチェック $mysql->query("SELECT usrid,usrpw FROM meibo"); if ($mysql->rows()>0){ //行が存在した場合 $row = $mysql->fetch(); if ($row["usrpw"] == $usrpw){ $_SESSION["usrid"] = $usrid; header("Location: http://$host/php/page.php"); exit; } } } $error = "ユーザIDかパスワードに誤りがあります"; } } 教科書を参考に作ったコードです。 フォームにIDとPASSを入力後ログインボタンを押してもそのままフォーム画面のままになってしまいます。 data.txtだと比較的簡単に出来たのですがMYSQLを使いだしたとたん分からなくなってしまいました。 どなたか親切な方、お教えください。

    • ベストアンサー
    • PHP
  • 悪戦苦闘PHP セッション変数

    毎日悪戦苦闘しながらすごしずつプログラムができるようになって来ました。今越えられないで困っている問題がありまして、ご教授していただきたくて投稿しました。下のようなプログラムを実行しますと Warning: session_register() [function.session-register]: Cannot send session cookie - headers already sent by (output started at C:\Apache Group\Apache2\htdocs\sample\test.php:3) in C:\Apache Group\Apache2\htdocs\sample\test.php on line 30 となってしまいます。なぜか昨日は上手く行っていたのですが、今日こんなエラーがでて解決できないでいます。ためしにtmpに保存されていたセッションファイルを削除してみたりしたのですがだめでした。原因が分かる方是非ご教授お願いいたします。 <?php //セッション変数の保存フォルダのパス session_save_path("C:/Apache Group/Apache2/htdocs/sample/tmp"); if(isset($_POST[simei]) and isset($_POST[pass])){ $con=sqlite_open("../SQLiteManager/php_db"); $sql = "select * from **** where **** = '$_POST[****]' and **** = '$_POST[*****]'"; $result = sqlite_query($con,$sql); $row = sqlite_num_rows($result); if($row==0){ $not= "正しくありません"; } else{ //////////セッション変数設定//////////// session_start(); session_register("simeix","passx"); $_SESSION[simeix]=$_POST[simei]; $_SESSION[passx]=$_POST[pass]; //////////////////////////////////////// header("location: abcdefg.php"); exit(); } } else{ echo "ハンドルネーム、パスワードを入力してください。"; } ?> <html> <body> <div id=a> <table><tr><td><font color="#ffffff"> <B>ログイン</b></font></td> </tr> <tr><td> <form action="acntop.php" method="post"> <font color="#ffffff">HDネーム:</font><input type="text" name="simei"value="" > <font color="#ffffff">パスワード:</font><input type="password" name="pass" value=""> <input type="submit" value="送信"> </form> </td> </tr></table> <?=$not;?> </div> </body> </html>

    • ベストアンサー
    • PHP
  • ログイン処理ができません。

    ただいまPHPを勉強している者です。 ログインしてマイページにとぶという事をやっているんですがうまくできません。 どなたかアドバイスいただけたらうれしいです。 *ソース* <?php //MySQLファイルのインクルード require_once("data/dbinfo.php"); session_start(); $_SESSION["my_no"]=0; $_SESSION["name"]=""; $_SESSION["mail"]=""; $error=""; $usr_mail =""; $usr_password=""; //POSTされた場合 if($_SERVER["REQUEST_METHOD"]=="POST"){ //ログインボタンが押された場合 if(isset($_POST["login"])){ //POSTされたデータを取得する //mail $usr_mail=htmlspecialchars($_POST["usr_mail"], ENT_QUOTES); //password $usr_password=htmlspecialchars($_POST["usr_password"], ENT_QUOTES); //入力内容をチェックする //mail if(strlen($usr_mail)==0){ $error="メールアドレスが入力されていません。"; } if(strlen($usr_password)==0){ $error="パスワードが入力されていません。"; } //エラーがなければ if(strlen($error)==0){ //registerテーブルをチェックする //registerのmailと入力usr_mailの一致を探す $mysql->query("SELECT * FROM register WHERE mail='$usr_mail'"); //行が存在した場合 if($mysql->rows()>0){ $row = $mysql->fetch(); //さらにパスワードの一致を確認 if($row["pass"] == $usr_password){ //セッションに格納する $_SESSION["my_no"]= $row["no"]; $_SESSION["name"]=$row["name"]; $_SESSION["mail"]=$usr_mail; //クッキーを保存 //mailを保存 setcookie("cooking[usr_mail]",$usr_mail); //passを保存 setcookie("cooking[usr_password]",$usr_password); //マイページへとぶ $login_url = "http://{$_SERVER["HTTP_HOST"]}/reservation/mypage.php"; header("Location: {$login_url}"); exit; } }else{//行が存在しない場合 $error = "メールアドレスかパスワードに誤りがあります"; } } } } ?> <html> <head></head> <body> <form action="<?=_SERVER["PHP_SELF"]?> method="post"> <td><b><i>*メールアドレス</i></b></td> <td><input type="text" name="usr_mail" value="<?=$usr_mail ?>" size=30></td> </tr> <tr> <td><b><i>*PASS</i></b></td> <td><input type="password" name="usr_password" value="<?=$usr_password ?>" maxlength="8"></td> </tr> </table><br> <input type="submit" name="login" value="ログイン"> </form> </body> </html> という感じなんですが・・・・

    • 締切済み
    • PHP
  • PHPに詳しい方、教えてください

    スクリプトの以下の部分の意味がわかりません。 「 if ○○○ : 」 は、どういう解釈すればよいのでしょうか。 わかるかたがいましたら、教えてください。よろしくお願いします。 <?php if (isset($error['name']) ? $error['name'] :''): ?> <p class="error">* ニックネームを入力してください</p> <?php endif; ?> --------スクリプトの解釈-------- $_POSTが空かどうかを確認し、空でなかったら、 $_POST['name'] が空かどうかを確認し、空だったら、、 $error[name] に"blank"という文字列を入れる //最初、読み込んだときは、$_POST の中身は空なので、上記の処理は行われない。 $error['name'] を確認し、値が入って入れば、$error['name']、入っていなかったら’’  ニックネームを入力してくださいと表示する。 ----------スクリプト------------------ <?php session_start(); if (!empty($_POST)){ //エラー項目の確認 if ($_POST['name'] == ''){ $error['name'] = 'blank'; } } ?> <p>次のフォームに必要事項をご記入ください。</p> <form action="" method="post" enctype="multipart/form-data"> <dl> <dt>ニックネーム<span class="required">必須</span></dt> <dd> <input type="text" name="name" size="35" maxlength="255" value="<?php echo isset($_POST['name']) ? htmlspecialchars($_POST['name'],ENT_QUOTES,'UTF-8') : ''; ?>" /> <?php if (isset($error['name']) ? $error['name'] :''): ?> <p class="error">* ニックネームを入力してください</p> <?php endif; ?> </dd> </dl> <div><input type="submit" value="入力内容を確認する"></div> </form>

    • ベストアンサー
    • PHP
  • PHPで問い合わせフォーム 受信すると文字化けする

    フォーム⇒ (1)確認  ⇒ (2)送信 と3つに分けて、phpファイルに書きました。 ためしに、送信してみると、成功はするものの、文字が化けてメールの内容が分かりません。 分からないので教えてください。 フォーム ↓ <form method="POST" action="kakunin.php"> <table border="0"> <tr> <td >お名前</td> <td><input type="text" name="name" size="20"></td> </tr> <tr> <td>メールアドレス</td> <td><input type="text" name="from" size="20"></td> </tr> <tr> <td>メールタイトル</td> <td><input type="text" name="title" size="20"></td> </tr> <tr> <td>メッセージ</td> <td><textarea rows="5" name="naiyou" cols="40"></textarea></td> </tr> <tr> <td colspan="2"><input type="submit" value=" お問い合わせ内容を確認 "></td> </tr> </table> </form> (1) kakunin.php ↓ 入力フォームから情報を受け取り確認 <?php // フォームの値を取得します。 if ($_SERVER["REQUEST_METHOD"] == "POST") { foreach($_POST as $k => $v){ // 「magic_quotes_gpc = On」のときはエスケープ解除 if (get_magic_quotes_gpc()) { $v = stripslashes($v); } $v = htmlspecialchars($v); $$k = $v; } } else { exit(); } // 値をチェックします。 $ErrFlg = 0; if ($name == "") { echo "<p>お名前を入力してください。"; $ErrFlg = 1; } if ($from == "") { echo "<p>メールアドレスを入力してください。"; $ErrFlg = 1; } if ($title == "") { echo "<p>メールタイトルを入力してください。"; $ErrFlg = 1; } if ($naiyou == "" ) { echo "<p>メッセージを入力してください。"; $ErrFlg = 1; } if ($ErrFlg) { exit(); } ?> 内容を確認して送信ボタンをクリックしてください <form method="POST" action="mail.php"> <table border="0"> <tr> <td width="100">お名前</td> <td width="300"><?php echo $name?></td> </tr> <tr> <td width="100">メールアドレス</td> <td width="300"><?php echo $from?></td> </tr> <tr> <td width="100">メールタイトル</td> <td width="300"><?php echo $title?></td> </tr> <tr> <td width="100">メッセージ</td> <td width="300"><?php echo nl2br($naiyou) ?></td> </tr> <tr> <td colspan="2"><input type="submit" value="送信"></td> </tr> </table> <input type="hidden" name="name" value="<?php echo $name ?>"> <input type="hidden" name="from" value="<?php echo $from ?>"> <input type="hidden" name="title" value="<?php echo $title ?>"> <input type="hidden" name="naiyou" value="<?php echo $naiyou ?>"> </form> (2) mail.php ↓のコード 送信 <?php // メール送信先を指定します。 $to = "xxxxxxxxxx■ gmail.com"; // フォームの値を取得します。 if ($_SERVER["REQUEST_METHOD"] == "POST") { foreach($_POST as $k => $v){ // 「magic_quotes_gpc = On」のときはエスケープ解除 if (get_magic_quotes_gpc()) { $v = stripslashes($v); } $v = htmlspecialchars($v); $$k = $v; } } else { exit(); } // メール本文を組み立てます。 $naiyou = "お名前:$name\n メールアドレス:$from\n タイトル:$title\n 内容:$naiyou\n"; if ($name != "" and $from != "" and $title != "" and $naiyou != "" ) { if (mb_send_mail($to, $title, $naiyou, "From:$from")) { echo "メールを送信しました"; } else { echo "メール送信失敗です"; } } ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう