dpw50696 2017-05-18 18:03
浏览 91
已采纳

PHP - 在不同文件中使用变量

PHP noob here. I'm trying to create a login file. Here's my code:

HTML:

<body>
<div class="login">
    <h2 class="login-header">Log in</h2>
    <form action="practice.php" method="POST" class="login-container">
        <p>
            <label>Username: </label>
            <input type="text" id="user" name="user" placeholder="Enter Username" required/>
        </p>
        <p>
            <label>Password:</label>
            <input type="password" id="pass" name="pass" placeholder="Enter Password" required/>
        </p>
        <p>
            <input type="submit" id="btn" value="Login" />
        </p>

    </form>
</div>

PHP:

<?php

    $usernameIn = $_POST['user'];
    $passwordIn = $_POST['pass'];

    $usernameIn = stripcslashes($usernameIn);
    $passwordIn = stripcslashes($passwordIn);
    $usernameIn = mysql_real_escape_string($usernameIn);
    $passwordIn = mysql_real_escape_string($passwordIn);

    $host = 'localhost';
    $user = 'root';
    $password = '';
    $db ='practice';

    $connection = mysqli_connect($host,$user,$password,$db);// you can select db separately as you did already
    if($connection){
        $ret = mysqli_query($connection,"SELECT `userName`, `password`, `clearacne` FROM 
            `users_table` WHERE `userName`='$usernameIn' AND `password`='$passwordIn'");
        global $to_encode = array();
        while($row = mysqli_fetch_assoc($ret)) {
            $to_encode[] = $row;
        }

        //user doesn't exist redirect to error page
        if(empty($to_encode)) header("Location: http://localhost/practiceLogin/loginErrorIndex.html");

        //user exist continue
        else{ 
            $to_encode = json_encode($to_encode);
            header("Location: http://localhost/practiceLogin/loginOkIndex.php");
        }


    }else{
        echo "db connection error because of".mysqli_connect_error();
    }
  ?>

Two questions: 1)Is there a way to process the info the user puts in and redirect him to a new file ONLY if the info exists in the database? 2)How can I pass the variable $to_encode from the practice.php to other .php files without including/requiring the practice.php file?

Basically what I'm trying to do is to not allow access if the user isn't registered, and if he is then allow access to another file and use a JSON object that represents different parameters associated with the user.

Thank you!

  • 写回答

1条回答 默认 最新

  • dongou2019 2017-05-18 18:15
    关注

    First question: You are already making redirects:

     header("Location: http://localhost/practiceLogin/loginOkIndex.php");
    

    Second question: Yes, there is a way. It is called session. You can read more here: http://php.net/manual/en/book.session.php

    The basic explanation - once you check if username/password match you start a session, put some temp variables in it, a file has been written in your server's HDD and a cookie has been sent to your user's browser. Next time the user sends request to some of your pages, you check for the cookie, check if session is still active an not expired and you can get your temp variables from the session's file.

    The heavy stuff is already written and automated. Just put some time on reading the link I gave you and also I am sure you will find many example resources over the Internet.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏