0

私は、ユーザーがログインまたは登録して、私と排他的に通信できるシンプルなメッセージングアプリケーションを作成しています。ユーザー名とパスワードは.txt(他のすべてのユーザーを保存する)の行に保存され、会話は一意のユーザーのname.txtに行ごとに保存されます

ユーザーが登録またはログインしたときに、フォームから、以下の会話を表示するスタンドアロンのテキスト領域にリダイレクトしたいと思います。ただし、ユーザーをリダイレクトするときに、会話の内容を表示するためにユーザー名(usrNm)を次のphpファイルに送信する方法がわかりません(ファイルはユーザーのユーザー名です)。include(index.php)を試しましたが無駄になりました。htmlを渡さずにindex.phpを含めるにはどうすればよいですか。これを行うための最良の方法は何ですか?

''vs""を使用する一般的なルールについても混乱してい""ます。変数を内部に入れて、''他のすべてで機能すると思いますか?また、htmlで言われまし<input type="text"た..テキストは引用符で囲む必要がありますが、引用符なしで機能する場合の利点は何ですか?もう1つの小さな質問は、私を啓蒙したい場合は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>
4

2 に答える 2

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変数の場合と同じようにそれを取得するために使用します

それ以外は、ダイダロスが残りすべてをカバーしています!

于 2012-09-15T03:07:15.547 に答える
0

二重引用符は変数を解析しますが、一重引用符は解析しません。その段落の 2 番目の質問については、属性値を引用符で囲む規則については、こちらを参照してください。値内に特殊文字を使用できることを除けば、それほど多くの利点はありません。これも読むことをお勧めします。

その段落の 3 番目の質問 (ミニ質問) については、次のことをお勧めします。

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

関数を直接行で使用したい場合。

最初の質問に関しては、html を渡さずにファイルを含める方法を知りません。 これはそのような答えかもしれませんが、私の側ではテストされていないので、言えませんでした.

于 2012-09-15T02:06:21.920 に答える