-3

設定に移動せずに mainpage.php にアクセスすると、ページですべての変数に対して未定義の変数エラーが表示されますが、設定に何かを入力して送信すると、表示されなくなります。とにかく、ここまでのコードです。

メインページ.php

<html>
<head><title></title></head>
<body>
<a href="logout.php">Logout</a>
<a href="settings.php">Settings</a>

</form>
</body>
</html>

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$bio = $_POST['bio'];
$hobbies = $_POST['hobbies'];
$past = $_POST['past'];
$work = $_POST['work'];
echo $bio;
echo $email;
echo $name;
echo $hobbies;
echo $past;
echo $work;
?>

設定.php

<html>
<head><title></title></head>
<body>
<a href="logout.php">Logout</a>
<a href="mainpage.php">Main Page</a>

<form action="mainpage.php" method="post">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
Bio: <input type="text" name="bio"><br>
Hobbies: <input type="text" name="hobbies"><br>
Past School: <input type="text" name="past"><br>
Work History: <input type="text" name="work"><br>
<input type="submit">
</form>

<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Choose Profile Picture:</label>
<input type="file" name="file" id="file"> 
<input type="submit" name="pic" value="Submit">
</form>

</body>
</html>

未定義のエラーを取り除く方法を見つけることができないようです。誰かが私が信じている isset を提案しました。

4

2 に答える 2

1

あなた$_POSTは空です

mainpage.php - ファイルのアップロードと入力フィールドが 2 つの異なるフォームに属し、2 つの送信ボタンがありました。情報が同時に送信されることはありません。送信ボタンが 1 つだけのフォームを 1 つのフォームにまとめました。

<html>
<head><title></title></head>
<body>
<a href="logout.php">Logout</a>
<a href="mainpage.php">Main Page</a>

<form action="upload_file.php" method="post" enctype="multipart/form-data">
   Name: <input type="text" name="name"><br>
   E-mail: <input type="text" name="email"><br>
   Bio: <input type="text" name="bio"><br>
   Hobbies: <input type="text" name="hobbies"><br>
   Past School: <input type="text" name="past"><br>
   Work History: <input type="text" name="work"><br>
   <!--input type="submit"-->
<!--/form-->

<!--form action="upload_file.php" method="post" enctype="multipart/form-data"-->
   <label for="file">Choose Profile Picture:</label>
   <input type="file" name="file" id="file">   
   <br/>
   <input type="submit" name="pic" value="Submit"> 
</form>

</body>
</html> 

upload_file.php - ファイル情報と入力情報は 2 つの異なる配列に属します。

<?php  

   // the reason we should check for each $_POST variable and not just
   // if (!empty($_POST)) { ... }
   // is because you will still get errors if one of those keys do not
   // exist inside of $_POST... if you do $file = $_FILE['file'] there
   // will be an error.  however, $_POST is always going to exist, so 
   // we don't need to check it.  the keys may or may not exist, though

   $name    = isset($_POST['name'])    ? $_POST['name']  : '';
   $email   = isset($_POST['email'])   ? $_POST['email'] : '';
   $bio     = isset($_POST['bio'])     ? $_POST['bio']   : '';
   $hobbies = isset($_POST['hobbies']) ? $_POST['hobbies'] : '';
   $past    = isset($_POST['past'])    ? $_POST['past']  : '';
   $work    = isset($_POST['work'])    ? $_POST['work']  : ''; 

   echo "bio:  $bio<br/>";
   echo "email:  $email<br/>";
   echo "name:  $name<br/>";
   echo "hobbies:  $hobbies<br/>";
   echo "past:  $bio<br/>";
   echo "work:  $work<br/>";  

   print "<pre>";

   if (isset($_POST))
   {
      print "this is the \$_POST information:\n"; 
      print_r($_POST); 
   }
   else { print "no post information sent."; }

   print "\n\n";

   if (isset($_FILES))
   {
      print "this is the \$_FILE information:\n"; 
      print_r($_FILES);
   }
   else { print "no file information sent."; }

   print "</pre>"; 
?> 

したがって...免責事項$_POSTです。値を操作するときはSQLインジェクションに注意してください。

出力は次のようになります...(の構造を見ることができます$_POST $_FILE

bio: three
email: two
name: one
hobbies: four
past: three
work: 
this is the $_POST information:
Array
(
    [name] => one
    [email] => two
    [bio] => three
    [hobbies] => four
    [past] => 
    [work] => 
    [pic] => Submit
)


this is the $_FILE information:
Array
(
    [file] => Array
        (
            [name] => Capture.PNG
            [type] => image/png
            [tmp_name] => C:\wamp\tmp\php1D7E.tmp
            [error] => 0
            [size] => 12968
        )

)

(また、この質問に出くわした将来のユーザーのために更新し続けることに注意してください)

于 2013-11-07T03:23:00.667 に答える
0

空の $_POST のチェックを使用する

if (!empty($_POST)){
    $name = $_POST['name'];
    $email = $_POST['email'];
    /* ... */
}
于 2013-11-07T03:24:10.327 に答える