2012-09-15 2 views
0

사용자가 로그인하거나 등록하여 독점적으로 통신 할 수있는 간단한 메시징 응용 프로그램을 만들고 있습니다. 사용자 이름과 암호는 .txt (모든 사용자를 저장하는) 줄에 저장되며 대화는 고유 한 사용자 이름에 한 줄씩 저장됩니다.Html 폼 들여 쓰기

사용자가 등록하거나 로그인하면 양식에서 벗어나 대화를 표시하는 독립형 텍스트 영역으로 리디렉션하십시오. 그러나, 사용자를 리다이렉션 할 때 우리의 대화 내용을 표시 할 수 있도록 사용자 이름 (usrNm)을 다음 php 파일로 보내는 방법을 모르겠습니다 (이 파일은 사용자 이름 임). 난 포함 (index.php) 아무 소용 시도했다. html을 전달하지 않고 index.php도 포함시키는 방법. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

내가 ''""를 사용하는 일반 규칙에 대한 혼란도 해요, "" 변수는 내부와 다른 모든 것들에 대한 '' 작품이 될 수 있습니다 생각? 나는 또한 <input type="text" html로 들었다. 텍스트가 따옴표로 묶여 있어야하며, 따옴표없이 작동하면 어떤 이점이 있습니까? 만약 당신이 나를 계몽하고 싶다면 또 하나의 미니 질문이 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 같은 답변 일 수도 있지만 내 말은 테스트되지 않았으므로 말할 수 없습니다.

당신은 사용자가 다음 PHP 파일에 이름을 보낼 찾고 있다면
+0

정말 고마워요! 나는 일하게 될거야. – user1656125

+0

이 답변이 만족 스러우면 아래쪽 화살표 밑에있는 체크 표시를 클릭하여 동의하십시오. – Daedalus

0

,이 등에 변수를 전달할 수 있습니다

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

그리고

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

을 그런 다음 PHP 페이지의 사용에 $_GET['usrName']은 POST 변수와 마찬가지로 검색합니다.

Daedalus가 나머지를 모두 덮었습니다!

관련 문제