Как исправить ошибки PHP при попытке создать файл login.php, который отображает имя пользователя на новой странице при успешном входе в систему? - PullRequest
0 голосов
/ 03 июля 2019

Я студент по бизнесу, неопытный в php, html и т. Д., И в рамках курса нас попросили разработать веб-сайт с использованием HTML, CSS и PHP, который имеет страницу регистрации и входа в систему, подключенную к базе данных MS Access.Когда я впервые открыл страницу login.php, она прошла успешно, но затем нас попросили подключить ее к нашей домашней странице и получить приветственное сообщение с именем пользователя Loggedin.Я пытался следовать онлайн-советам о том, как это сделать, но я получаю ошибки «undefined index error» и «пытаюсь получить свойство не-объекта» при запуске моего файла login.php.

Вот что я сделал:

login.php

<html>
<head>
<title>Login</title>

</head>

<body>

<?php session_start(); ?>


<?php   
$email=$_GET['email'];
$password=$_GET['password'];


$odbc = odbc_connect ('group7', 'root', '') or die( "Could Not Connect to ODBC Database!");
    $query = odbc_exec($odbc, "SELECT  email, username FROM users WHERE email='$email' and password='$password'") or die (odbc_errormsg());

 if ($rs->Fields["email"]->value && $rs->Fields["email"]->value == $email)
if ($rs->Fields["password"]->value && $rs->Fields["password"]->value == $password) 
{ 
$_SESSION["email"] = $email; 
$_SESSION["loggedin"]= true;
// Relocate to the logged-in page 
header("Location: homespace-4 copy/index.php"); 
} 
else 
{ 
$_SESSION["loggedin"] = false;
$_SESSION["message"] = "login Error as $email." ; 
 } 


    odbc_close($odbc);
?>
</body>
</html>

Перед тем, как поставить session_start ();Сам по себе он работал отлично, но мне сказали, что он нужен для отображения имени пользователя на перенаправленной странице.Пожалуйста, помогите мне разобраться, как заставить это работать.

1 Ответ

0 голосов
/ 03 июля 2019

Это то, что прыгает на меня.

  1. Вы не можете использовать header("Location: homespace-4 copy/index.php");, если до него не было никаких данных html / header. Это просто не должно работать таким образом. Вы должны позвонить до любого HTML.

  2. Старайтесь не вставлять PHP в свой HTML. Вместо этого поместите HTML в ваш PHP. [примечание: исходя из того, что я вижу в вашем коде, весь HTML-код не нужен, поскольку вы перенаправляете посетителя своего сайта на страницу homespace-4.]

  3. Избегайте использования $_GET, это подвергает вас угрозам безопасности. Используйте $_POST. Если, в данном случае, ваш инструктор прямо не сказал вам делать это таким образом.

  4. session_start(); по существу вызывается по 3 причинам: для добавления, чтения или удаления данных

  5. Поместить session_start(); в верхнюю часть вашего кода - это нормально, но, вероятно, лучше поместить область, в которой вы нуждаетесь. В этом случае, прямо над оператором if, сравнивающим ввод ценности. Вы хотите это там, потому что вы добавляете данные (true или false) в этой части. [примечание: дополнительные операторы () были добавлены в оператор if. Пожалуйста, найдите время, чтобы изучить их, чтобы вы поняли, почему они там.]

    <?php
    session_start();
    if ( (($rs->Fields["email"]->value) && ($rs->Fields["email"]->value == $email)) && ($rs->Fields["password"]->value) && ($rs->Fields["password"]->value == $password)) ) { 
        $_SESSION["email"] = $email; 
        $_SESSION["loggedin"]= true;
        // Relocate to the logged-in page 
        header("Location: homespace-4 copy/index.php"); 
    } else { 
        $_SESSION["loggedin"] = false;
        $_SESSION["message"] = "login Error as $email." ; 
    }
    ?>
    

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

...