2017-04-08 6 views
0

1つのPHPページに複数のフォームがあります。 1つのindex.phpページ上のログインフォーム、サインアップフォーム、およびポストステータスフォーム。 1つのフォームの送信ボタンを押すと、すべてのフォームが送信されているようです。 私はログインしていない状態でポストステータスフォームを使用してステータスをポストしようとすると、「ログインしていません」というエラーが表示されますが、他のフォームが表示されたときには次のようにPHPコードエラーが発生します...複数の投稿フォームが1つのPHPページで問題を引き起こしています

通知:未定義インデックス:uname 通知:未定義インデックス:pass

どうすればよいですか? if(isset($_POST['submit']))が原因で問題が発生しているようです。私はかなりPHPに新しいです。もし私が間違っているなら、私を助け、訂正してください。

マイコード:

<div id="myModal1" class="modal1"> 
      <div class="modal-content"> 
       <span class="close" onclick="login_modal_hide()">&times;</span> 
       <section id="signin"> 
        <h1>Sign In</h1> 
        <form method="POST"> 
         <input type="text" name="username" placeholder="Username"><p></p> 
         <input type="password" name="password" placeholder="Password"><p></p> 
         <input type="submit" value="SIGN IN"><p></p> 
         <a href="#">Forgot Password?</a> 
         <?php 
          session_start(); 
          include("config.php"); 
          if($_SERVER["REQUEST_METHOD"] == "POST") { 
           $uname = mysqli_real_escape_string($dbc,$_POST['username']); 
           $pass = mysqli_real_escape_string($dbc,$_POST['password']); 

           $query = "SELECT uname FROM users WHERE uname = '$uname' and pass = '$pass'"; 
           $result = mysqli_query($dbc,$query); 
           $row = mysqli_fetch_array($result,MYSQLI_ASSOC); 
           //$active = $row['active']; 

           $count = mysqli_num_rows($result); 
           if($count == 1) { 
           $_SESSION['uname']="uname"; 
           $_SESSION['login_user'] = $uname; 

           header("location: welcome.php"); 
           }else { 
            echo "<p class='error'>Your Login Name or Password is invalid</p>"; 
           } 
          } 
         ?> 
        </form> 
       </section> 
      </div> 
     </div> 
     <!-- Modal SignUP form --> 
     <div id="myModal2" class="modal2"> 
      <div class="modal-content"> 
       <span class="close" onclick="signup_modal_hide()">&times;</span> 
       <?php 
        $unameErr = $passErr = $emailErr = ""; 
        if(isset($_POST['submit'])) { 
         $uname = test_input($_POST['uname']); 
         $email = test_input($_POST['email']); 
         $pass = $_POST['pass']; 

         if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $emailErr = "Invalid email format"; } 
         else if(!preg_match('/^[A-Za-z][A-Za-z0-9]{2,31}$/',$uname)) { $unameErr = "Invalid username format (Must start with letter; 3-32 characters; Letters and numbers only)"; } 
         else if(!preg_match('/^(?=.*\d)(?=.*[A-Za-z])[[email protected]#$%]{8,12}$/', $pass)) { $passErr = "Invalid Password format (Must contain at least 1 number and 1 letter; Must be 8-12 characters)"; } 
         else { 
          $dbc = mysqli_connect('localhost', 'root', '', 'DATA') or die('Error connecting to MySQL server!'); 
          $query = "INSERT INTO users (uname, email, pass, status, xp) VALUES('$uname', '$email', '$pass', '0', '100')"; 
          $result = mysqli_query($dbc, $query) or die('Error querying database!'); 
          echo 'Thanks for Signing UP! Welcome '.$uname.'!'; 
          mysqli_close($dbc); 
         } 

        } 
        function test_input($data) { 
         $data = trim($data); 
         $data = stripslashes($data); 
         $data = htmlspecialchars($data); 
         return $data; 
        } 
       ?> 
       <h1>Sign UP</h1> 
       <section id="signup"> 
        <form method="post" action=""> 
         <input type="text" id="uname" name="uname" placeholder="Username" required><p class="error"><?php echo $unameErr;?></p> 
         <input type="text" id="email" name="email" placeholder="Email address" required><p class="error"><?php echo $emailErr;?></p> 
         <input type="password" id="pass" name="pass" placeholder="Password" required><p class="error"><?php echo $passErr;?></p> 
         <p><input type="checkbox" id="agreement" name="agreement" required>I agree to the <a href="#">Terms</a> and <a href="#">Privacy</a></p> 
         <input type="submit" value="Sign UP!" name="submit"> 
        </form> 
       Already have an account? <a href="javascript:void(0);" onclick="signup_modal_hide(); login_modal();">Log In</a> 
       </section> 
      </div> 
     </div><div class='panel'> 
      <form method='post' action=''> 
       <textarea id='qdesc' name='content' placeholder='Your Answer...' required></textarea> 
       <input type='submit' value='Post Answer' name='submit'> 
      </form> 
     </div><?php 
if(isset($_POST['submit'])) { 
     if(isset($_SESSION['login_user'])){ 

      $content = $_POST['content']; 

      $dbc = mysqli_connect('localhost', 'root', '', 'DATA') or die('Error connecting to MySQL server!'); 
      $query = "INSERT INTO answers (whoanswered, content, votes, answeredto) VALUES('$login_session', '$content', '0', '$q')"; 
      $result = mysqli_query($dbc, $query) or die('Error querying database!'); 
      echo 'Post complete!'; 
      //header("refresh:5; url=./qview.php?q="echo $q;""); 
      mysqli_close($dbc); 
     } 
    }?> 
+0

コードを表示してください –

+0

@YuJiaaoはここに私のコードです... – user7704928

答えて

0

すべてのボタンを提出して、設定されたボタンをチェック、これをやって最初の名前を試してみてください。

のような:

<input type="submit" name="signup" value="Sign UP!"> 

<?php 
    if($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['signup'])) { 
      /* Your code here */ 
    } 
?> 

あなたが設定されているボタンをチェックできるように、各ボタンに別の名前を付けます。

関連する問題