2017-04-08 64 views
0

我在一個php頁面上有多個表單。登錄表單,註冊表單和發佈狀態表單在一個index.php頁面上。 當我點擊一個表單的提交按鈕時,所有表單似乎都被提交。 當我沒有登錄,並嘗試使用發佈狀態表單發佈狀態,我得到一個'未登錄'的錯誤,但我看到其他形式時,我得到如下的php代碼錯誤...單個php頁面中的多個帖子形式導致問題

注意:未定義指數:uname 注意:未定義指數:通過

我應該如何處理? 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 */ 
    } 
?> 

每個按鈕提供不同的名稱,以便您可以檢查哪些按鈕設置。