ไฟล์เข้าสู่ระบบ php กำลังเปลี่ยนเส้นทางฉันไปยังโฟลเดอร์ผู้ใช้ใน xampp แต่ไม่ใช่ใน cpanel

สคริปต์การเข้าสู่ระบบของฉันเมื่อใช้ xampp เนื่องจากเซิร์ฟเวอร์เปลี่ยนเส้นทางฉันไปยังโฟลเดอร์ผู้ใช้หลังจากเข้าสู่ระบบสำเร็จ แต่เมื่อฉันอัปโหลดไปยัง cpanel มันก็จะโหลดซ้ำและไม่เปลี่ยนเส้นทาง แต่เมื่อฉันพิมพ์โฟลเดอร์ของผู้ใช้หลังชื่อโดเมน มันแสดงว่าผู้ใช้เข้าสู่ระบบแล้ว เช่นเดียวกับ www.goo.com/users มันจะนำไปสู่ไฟล์ดัชนีผู้ใช้ว่าเข้าสู่ระบบสำเร็จ ฉันจะทำอย่างไรเพื่อการเปลี่ยนเส้นทางที่เหมาะสม

<?php
    require_once('../includes/config.php');
    $_SESSION['timestamp']=time();
?>
<div class="row"><br><br><br>
  <div class="container">
    <div class="col-lg-6">
      <p style="color: green">Login Procedures</p>
      <i class="fa fa-cc-paypal fa-2x" aria-hidden="true">
      <div style="font-size: 15px;">- Login Details will be sent to your email aproximately 20 minutes after payment. </div>
            </i>
            <img src="images/mpesa.png" alt="mpesa" id="mpesa" class="img-responsive" width="50" height="10">
            <div style="font-size: 15px;">
            - Login using the payment confirmation code and mobile phone number without the country code after payment.
            </div>
            <?php
    if(isset($_POST['submit'])) {
        $username = $_POST['username'];
        $password = $_POST['password'];

        $result = $dbh->prepare("SELECT * FROM tb_users WHERE username= :username AND password= :password");
        $result->bindParam(':username', $username);
        $result->bindParam(':password', $password);
        $result->execute();
        $rows = $result->fetch(PDO::FETCH_NUM);
        if($rows > 0) {

            $result=$dbh->prepare("SELECT * FROM tb_users WHERE username=:username");
            $result->bindParam(':username', $username);
            $result->execute();
            while($row = $result->fetch(PDO::FETCH_ASSOC)){
                $res_id = $row['username'];
                $curr_status = $row['user_status'];
            }

                if($curr_status=='deactive') {
                    $message = "Sorry <b>$username</b>, You've Exhausted Your Subscription. <p>Make a new Subscription to login or write to admin for Bonus Days.</p>";
                }else{
                    $_SESSION['username'] = $res_id;
                    header("location:users/index.php");
                }

        }
        else{
            $message = 'Wrong Credentials!';
        }
    }
?>
                <div id="signin" class="tab-pane fade in active"><br>
                    <form class="form-signin" id="login-form" method="post">
                        <div class="form-group">
                            <div class="input-group col-md-7">
                                <span class="input-group-addon"><i class="fa fa-envelope-o fa-fw"></i></span>
                                <input type="text" name="username" class="form-control" placeholder="Email / Phone" required>
                            </div>
                        </div>
                        <div class="form-group">
                            <div class="input-group col-md-7">
                                <span class="input-group-addon"><i class="fa fa-key fa-fw"></i></span>
                                <input class="form-control" name="password" type="password" placeholder="Password" id="myInput">
                            </div>
                        </div>
                        <div>
                <?php
                    if(!empty($message)) {
                        echo "<p style='color: red; padding: 2px;'>".$message."</p>";
                    }
                ?>
            </div>
                        <div class="form-group">
                            <input type="submit" name="submit" value="Access" class="btn btn-success"/>
                        </div>
                    </form>
                </div>
    </div>

person Evance Osoo    schedule 16.01.2018    source แหล่งที่มา
comment
ขอบคุณฉันพบคำตอบแล้ว ฉันใช้ echo ‹script›location='your_url.com'‹/script›;   -  person Evance Osoo    schedule 16.01.2018
comment
เอาล่ะ ระวังให้ดี การเปลี่ยนเส้นทาง PHP จะดีกว่าถ้าคุณทำได้เช่นเดียวกับ JavaScript ที่คุณทำให้ไคลเอนต์โหลดหน้าเว็บก่อนการเปลี่ยนเส้นทาง ในขณะที่ PHP จะส่งส่วนหัวที่ถูกต้อง   -  person Daniyal Nasir    schedule 16.01.2018


คำตอบ (1)


ต้องตั้งค่าส่วนหัวก่อนที่จะส่งเอาต์พุตใดๆ คุณกำลังส่ง HTML จำนวนมากไปยังผู้ใช้ก่อนที่จะทำการเรียก header() นั้น บางทีมันอาจจะทำงานในสภาพแวดล้อมหนึ่ง แต่ไม่ใช่ในสภาพแวดล้อมอื่นเนื่องจากมีการตั้งค่า output_buffering บน localhost php.ini ของคุณ แต่ไม่ใช่บนเซิร์ฟเวอร์

คุณควรปรับปรุงโค้ดของคุณใหม่เพื่อให้แน่ใจว่ามีการส่ง header() ก่อนเนื้อหาใดๆ แต่ถ้าคุณต้องการให้มันใช้งานได้ ให้เพิ่ม ob_start() ที่ตอนต้นของโค้ดของคุณ มันจะบังคับใช้การบัฟเฟอร์

ดูด้วย

person Daniyal Nasir    schedule 16.01.2018