2012-09-15 63 views
0

我正在創建一個簡單的消息傳遞應用程序,用戶可以在其中登錄或註冊並與我完全通信。他們的用戶名和密碼存儲在一個.txt文件中(存儲每個人的密碼),並且我們的對話被逐行存儲在唯一的用戶名.txt中Html表格縮進

當用戶註冊或登錄時,我想將它們從表單重定向到單獨的文本區域,以顯示下面的對話。但是,當重定向用戶時,我不知道如何將他們的用戶名(usrNm)發送到下一個php文件,以顯示我們對話的內容(文件是他們的用戶名)。我試過包括(index.php)無濟於事。如何在不傳遞html的情況下包含index.php。什麼是最好的方法來做到這一點?

我也搞不清楚使用'' VS ""的一般規律,相信""允許變量是內''作品一切?我也被告知在html <input type="text" ..文本應該在引號中,如果它沒有引號的工作有什麼好處?如果你想開導我,另一個小問題是在第30行。所有建議非常感謝!

//index.php 
<?php 
    echo "Login or register. "; 
    //Ensures form exists and instantiates neccesary variables 
    if (isset($_POST['usrNm'],$_POST['pass'],$_POST['passConf'])) { 
     $usrNm = $_POST['usrNm']; 
     $pass = $_POST['pass']; 
     $passConf = $_POST['passConf']; 
     $rec = file('userPass.txt'); 
     //Parses username from users txt file 
     function usrName($indx){ 
      global $rec; 
      $usrName = substr($rec[$indx], 0, stripos($rec[$indx], ' ')); 
      return $usrName; 
     } 
     //Parses password from users txt file 
     function passWrd($indx){ 
      global $rec; 
      $passWrd = trim(substr($rec[$indx], stripos($rec[$indx], ' '))); 
      return $passWrd; 
     } 
     //Attempts to log user in 
     if(!empty($usrNm)&&!empty($pass)&&empty($passConf)) { 
      for($i=0;$i<count($rec);$i++) { 
       //Logs user in 
       if (($usrNm==usrName($i))&&($pass==passWrd($i))) { 
        //Outputs admin screen 
        if ($usrNm=='rich') { 
         for ($x=1; $x<count($rec); $x++) { 
          //How to evaluate usrName($x) between link tags? 
          $usrNameLink = usrName($x); 
          echo "<a href='$com.php'>$usrNameLink</a> "; 
         } 
         break; 
        } 
        else header('Location: com.php'); 
       } 
       //Wrong password 
       elseif (($usrNm==usrName($i))&&($pass!=passWrd($i))) { 
        echo 'Wrong password.'; 
        break; 
       } 
       //Username doesn't exist 
       elseif (($i==count($rec)-1)&&($usrNm!=usrName($i))) { 
        echo 'Username doesn\'t exist.'; 
       } 
      } 
     } 
     //Attempts to register user. 
     elseif (!empty($usrNm)&&!empty($pass)&&!empty($passConf)) { 
      for($i=0;$i<count($rec);$i++) { 
       //Username taken 
       if ($usrNm==usrName($i)) { 
        echo 'Username taken.'; 
        break; 
       } 
       //Registers user: updates user txt file and creates txt file that saves correspondence between the user and me 
       elseif (($i==count($rec)-1)&&($usrNm!=usrName($i))&&($pass==$passConf)) { 
        $handle = fopen('userPass.txt', 'a'); 
        $handle2 = fopen("$usrNm.txt", 'a'); 
        fwrite($handle, $usrNm.' '.$pass."\r\n"); 
        fwrite($handle2, 'Richard: Here you can send me messages.'); 
        fclose($handle); 
        fclose($handle2); 
        header('Location: com.php'); 
       } 
       //Passwords don't match 
       elseif (($i==count($rec)-1)&&($usrNm!=usrName($i))&&($pass!=$passConf)) { 
        echo 'Passwords don\'t match.'; 
       } 
      } 
     } 
     //User didn't fill in the password field 
     else{echo 'Fill in the required fields.';} 
    } 

?> 
<form action="index.php" method="post"> 
    Username:<input name="usrNm" type="text"></input><br> 
    Password:<input name="pass" type="password"></input><br> 
    Confirm Password (only for registration):<input name="passConf" type="password"></input><br> 
    <input name="submit" type="submit"></input> 
</form> 







//com.php 
<?php 
    include('index.php'); 
    if (isset($_POST['msg'])) { 
     if (!empty($_POST['msg'])) { 
      echo $usrNm; 
     } 
    } 
?> 
Welcome! 
<form action="com.php" method="post"> 
    <textarea name="msg" cols="64" rows="4" type="text"></textarea><br> 
    <input name="send" type="submit"></input> 
</form> 

回答

0

你是正確的,雙引號分析變量,而單引號沒有。關於該段落中的第二個問題,請參閱here以瞭解有關使用引號包裝屬性值的規則。除了在價值中能夠擁有特殊角色之外,這樣做並沒有真正的好處。我也建議閱讀this

至於該段(迷你問題)你的第三個問題,我想提出以下建議:

echo "<a href='$com.php'>".usrName($x)."</a>"; 

如果您只想直接在在線使用該功能。

至於你的第一個問題,我不知道有任何這樣的方式來包含一個文件,而不通過HTML。 This可能是這樣的答案,但它沒有在我的最終測試,所以我不能告訴你。

+0

非常感謝!我會開始工作。 – user1656125

+0

如果此答案符合要求,請點擊向下箭頭中勾選的複選標記以接受它。 – Daedalus

0

如果您正在尋找發送用戶名到下一個php文件,你可以通過在這樣的變量:

echo "<a href='$com.php?usrName=$usrNameLink&someOtherVariable=2'>$usrNameLink</a> "; 

而且

else header('Location: com.php?usrName=$usrNameLink&someOtherVariable=2'); 

然後在接下來的PHP頁面使用$_GET['usrName']檢索它就像你是POST變量

除此之外,代達羅斯已涵蓋所有其餘的!