Проблема с перенаправлением цикла на сайте PHP

Я работал над набором задач CS50 7, в котором мы должны сделать финансовый веб-сайт, используя MVC. Я заполнил веб-сайт, и он работает абсолютно нормально на моей локальной машине.

Но когда я загружаю файлы на сервер хостинговой (бесплатной) службы и пытаюсь получить к ним доступ, я получаю ошибку Redirect Loop. Вот ссылка на него: http://ghazilajpal.byethost6.com/finance/public/

Вот код login.php:

<?php

// configuration
require("../includes/config.php");

// if user reached page via GET (as by clicking a link or via redirect)
if ($_SERVER["REQUEST_METHOD"] == "GET")
{
// render form
render("login_form.php", ["title" => "Log In"]);
}

// else if user reached page via POST (as by submitting a form via POST)
else if ($_SERVER["REQUEST_METHOD"] == "POST")
{
// validate submission
if (empty($_POST["username"]))
{
apologize("You must provide your username.");
}
else if (empty($_POST["password"]))
{
apologize("You must provide your password.");
}

// query database for user
$rows = query("SELECT * FROM users WHERE username = ?", $_POST["username"]);

// if we found user, check password
if (count($rows) == 1)
{
// first (and only) row
$row = $rows[0];

// compare hash of user's input against hash that's in database
if (crypt($_POST["password"], $row["hash"]) == $row["hash"])
{
// remember that user's now logged in by storing user's ID in session
$_SESSION["id"] = $row["id"];
$_SESSION["cash"] = $row["cash"];
// redirect to index.php (portfolio)
redirect("/");
}
}

// else apologize
apologize("Invalid username and/or password.");
}

?>

Обновить

Вот login_form.php:

<form action="login.php" method="post">
<fieldset>
<div class="form-group">
<input autofocus class="form-control" name="username" placeholder="Username" type="text"/>
</div>
<div class="form-group">
<input class="form-control" name="password" placeholder="Password" type="password"/>
</div>
<div class="form-group">
<button type="submit" class="btn btn-default">Log In</button>
</div>
</fieldset>
</form>
<div>
or <a href="register.php">register</a> for an account
</div>

И это config.php. Это также имеет редирект:

<?php

/**
* config.php
*
* Computer Science 50
* Problem Set 7
*
* Configures pages.
*/

// display errors, warnings, and notices
ini_set("display_errors", true);
error_reporting(E_ALL);

// requirements
require("constants.php");
require("functions.php");

// enable sessions
session_start();

// require authentication for all pages except /login.php, /logout.php, and /register.php
if (!in_array($_SERVER["PHP_SELF"], ["/login.php", "/logout.php", "/register.php"]))
{
if (empty($_SESSION["id"]))
{
redirect("login.php");
}
}

?>

Я надеюсь, что это легко понять. Я не знаю, где проблема и как ее исправить.

Я мог бы задать его на cs50.stackexchange.com, но подобный вопрос уже существует без ответа.

0

Решение

Это всегда в этом блоке кода?

if (crypt($_POST["password"], $row["hash"]) == $row["hash"])
{
// remember that user's now logged in by storing user's ID in session
$_SESSION["id"] = $row["id"];
$_SESSION["cash"] = $row["cash"];
// redirect to index.php (portfolio)
redirect("/");
}

если да, то здесь есть проблема.
изменить перенаправление с помощью die (); проверять.

И, пожалуйста, предоставьте больше информации от вас, чтобы уточнить больше.

1

Другие решения

Я сделал некоторую отладку, используя совет bhushanRJ об использовании die (), И выяснил, что проблема с URL. Итак, используя /finance/public/login.php вместо того, чтобы просто login.php (то же самое для других элементов массива) решил проблему.

Однако файлы CSS и JS не загружались. Точно так же исправление их URL в шаблонах решило проблему.

1

Когда я получил цикл, это было потому, что я не начал сессию, поставив «session_start ()»

0
По вопросам рекламы [email protected]