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

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

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

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

Q&A

解決済

2回答

1085閲覧

phpの実行がうまくいかない

yuji2321

総合スコア15

PHP

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

0グッド

0クリップ

投稿2018/12/08 07:59

以下のphpを実行すると

if($_REQUEST['action']=='rewrite'){
$_POST = $_SESSION['join'];
$error['rewrite']=true;
}

の部分に対して
Notice: Undefined index: action in /home/ubuntu/public_html/indexSample.php on line 38
というエラーが出ます。

actionについては下のコードのhtmlに書いてあるform actionのことだと思うのですが、form action=""として空文字として指定しているのになぜこのエラーが出るのか分かりません。

ご回答よろしくお願いします。

<?php session_start(); if(!empty($_POST)){ //エラー項目の確認 if($_POST['name']==''){ $error['name']='blank'; } if($_POST['email']==''){ $error['email']='blank'; } if(strlen($_POST['password'])<4){ $error['password']='length'; } if($_POST['password']==''){ $error['password']='blank'; } $fileName=$_FILES['image']['name']; if(!empty($fileName)){ $ext=substr($fileName, -3); if($ext !='jpg' && $ext !='gif'){ $error['image']='type'; } } if(empty('$error')){ //画像をアップロードする $image=date('YmdHis') . $_FILES['image']['name']; move_uploaded_file($_FIlES['image']['tmp_name'],'../member_picture' . $image); $_SESSION['join']=$_POST; $_SESSION['join']['image']=$image; header('Location: check.php'); exit(); } } //書き直し if($_REQUEST['action']=='rewrite'){ $_POST = $_SESSION['join']; $error['rewrite']=true; } ?> <?php // ↓の name テキストボックスの value に入る値を $name に設定する。 // $_POST['name'] が無ければ ""(空文字)が設定される。 $name = ""; if (isset($_POST['name'])) { $name = $_POST['name']; } $email = ""; if (isset($_POST['email'])) { $email = $_POST['email']; } $password = ""; if (isset($_POST['password'])) { $password = $_POST['password']; } ?> <!doctype html> <main> <p>次のフォームに必要事項をご記入ください。</p> <form action="" method="post" enctype="multipart/form-data"> <dl> <dt>ニックネーム<span class="required">必須</span></dt> <dd> <!-- value に↑で定義した$name を設定 --> <input type="text" name="name" size="35" maxlength="255" value="<?php echo htmlspecialchars($name, ENT_QUOTES);?>"> <?php if(isset($error, $error['name']) && $error['name']=='blank'): ?> <p class="error">*ニックネームを入力してください</p> <?php endif; ?> </dd> <dt>メールアドレス<span class="required">必須</span></dt> <dd> <input type="text" name="email" size="35" maxlength="255" value="<?php echo htmlspecialchars($email, ENT_QUOTES);?>"> <?php if(isset($error, $error['email']) && $error['email']=='blank'): ?> <p class="error">*メールアドレスを入力してください</p> <?php endif; ?> </dd> <dt>パスワード<span class="required">必須</span></dt> <dd> <input type="password" name="password" size="10" maxlength="20" value="<?php echo htmlspecialchars($password, ENT_QUOTES);?>"> <?php if(isset($error, $error['password']) && $error['password']=='blank'): ?> <p class="error">*パスワードを入力してください</p> <?php endif; ?> <?php $error = ['password' => '']; if($error['password']=='length'): ?> <p class="error">*パスワードは4文字以上で入力してください</p> <?php endif; ?> </dd> <dt>写真など</dt> <dd> <input type="file" name="image" size="35"> <?php $error = ['image' => '']; if($error['image'] == 'type'): ?> <p class="error">*写真などは「.gif」または「.jpg」の画像を指定してください</p> <?php endif; ?> <?php if(!empty($error)):?> <p class="error">*恐れ入りますが、画像を改めて指定してください</p> <?php endif; ?> </dd> </dl> <div><input type="submit" value="入力内容を確認する"></div> </form> </main>

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

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

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

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

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

guest

回答2

0

actionについては下のコードのhtmlに書いてあるform actionのことだと思うのですが、

違います。
一度 $_REQUEST がどのようなものであるのかと、HTML の form の基本的な仕様を確認してみてから PHP のプログラムを作成することをオススメします。

投稿2018/12/08 08:06

ssasaki

総合スコア1167

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

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

0

ベストアンサー

無い変数を参照しているからです。あと、$_POSTに代入したりすると問題が起こりやすいのでやめましょう。

PHP

1if(isset($error) && isset($_SESSION['join']) && $_REQUEST['action']=='rewrite'){ 2 $_POST = $_SESSION['join']; 3 $error['rewrite']=true; 4}

【$_GET, $_POSTなどを受け取る際の処理 - Qiita】
https://qiita.com/mpyw/items/2f9955db1c02eeef43ea

投稿2018/12/08 08:07

kei344

総合スコア69398

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問