登录 PHP 网站时出现“HTTP ERROR 500”错误

问题描述 投票:0回答:1

我是 PHP 和 Web 开发的初学者。我需要创建一个具有登录和注册功能的简单网站以进行测试。我在 CentOS 8 虚拟机上安装了 LAMP 服务器,以便在本地环境中运行该网站。我已按照本教程此处中提供的说明创建了必要的 PHP 和 HTML 文件。以下是我的编码文件。

index.html

<!DOCTYPE html>
<html>
<head>
  <title>Demo Website</title>
  <style>
    body {
      margin-top: 50px;
    }

    h1 {
      text-align: center;
    }

    .sign-in-button, .sign-up-button {
      background-color: #000000;
      color: #ffffff;
      padding: 10px 20px;
      border-radius: 5px;
      margin: 5px;
    }

    .sign-in-button:hover, .sign-up-button:hover {
      background-color: #ffffff;
      color: #000000;
    }

    .sign-in-up-buttons {
      text-align: center;
      display: flex;
      justify-content: center;
      align-items: center;
      margin-top: 50px;
    }
  </style>
</head>
<body>
  <h1>Demo Website</h1>

  <div class="sign-in-up-buttons">
    <a href="signin.html" class="sign-in-button">Sign in</a>
    <a href="signup.html" class="sign-up-button">Sign up</a>
  </div>
</body>
</html>

登录.html

<!DOCTYPE html>
<html>
<head>
  <title>Applova Demo Website - Sign In</title>
  <style>
    body {
      margin-top: 50px;
    }

    h1 {
      text-align: center;
    }

    form {
      width: 500px;
      margin: 0 auto;
    }

    input {
      width: 100%;
      padding: 10px;
      margin-bottom: 10px;
    }

    button {
      background-color: #000000;
      color: #ffffff;
      padding: 10px 20px;
      border-radius: 5px;
      margin: 5px;
    }

    button:hover {
      background-color: #ffffff;
      color: #000000;
    }
  </style>
</head>
<body>
  <h1>Applova Demo Website - Sign In</h1>

  <form action="signin.php" method="post">
    <input type="email" name="email" placeholder="Email address">
    <input type="password" name="password" placeholder="Password">
    <button type="submit">Sign in</button>
  </form>
</body>
</html>

登录.php

<?php

// Connect to the database
$db = new PDO('mysql:host=localhost;dbname=users', 'root', 'root');

// Get the email address and password from the form
$email = $_POST['email'];
$password = $_POST['password'];

// Validate the form data
if (empty($email) || empty($password)) {
  echo 'Please enter your email address and password.';
  die();
}

// Check if the user account exists
$user = $db->query('SELECT * FROM user_details WHERE email = ?', [$email])->fetch();

// If the user account exists, check the password
if ($user) {
  if (password_verify($password, $user['password'])) {
    // Password is correct, log the user in
    session_start();
    $_SESSION['user_id'] = $user['id'];
    header('Location: signon.html');
  } else {
    // Password is incorrect
    echo 'Invalid email address or password.';
    die();
  }
} else {
  // User account does not exist
  echo 'Invalid email address or password.';
  die();
}

?>

signon.html

<!DOCTYPE html>
<html>
<head>
  <title>Applova Demo Website - Logged in successfully</title>
</head>
<body>
  <h1>You are now logged in!</h1>

  <p>Welcome to the Applova Demo Website. You can now access all of the features of the website.</p>

  <a href="logout.php">Log out</a>
</body>
</html>

sql 转储:

-- phpMyAdmin SQL Dump
-- version 4.7.9
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1:3306
-- Generation Time: Jul 04, 2021 at 01:46 PM
-- Server version: 5.7.21
-- PHP Version: 5.6.35

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `users`
--

-- --------------------------------------------------------

--
-- Table structure for table `user_details`
--

DROP TABLE IF EXISTS `user_details`;
CREATE TABLE IF NOT EXISTS `user_details` (
  `email` varchar(255) NOT NULL,
  `password` varchar(25) NOT NULL,
  `name` varchar(255) NOT NULL,
  PRIMARY KEY (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Dumping data for table `user_details`
--

INSERT INTO `user_details` (`email`, `password`, `name`) VALUES
('[email protected]', 'tom@123', 'tom'),
('damian@gmail', 'damian@123', 'damian'),
('jeff@gmail', 'jeff@123', 'jeff');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

我在登录网站时收到

This page isn’t working192.168.1.129 is currently unable to handle this request. HTTP ERROR 500
错误。是什么导致了这个错误?

服务器HTTP服务日志:

[Fri Sep 22 00:13:17.126166 2023] [mpm_event:notice] [pid 1876847:tid 139940005054784] AH00492: caught SIGWINCH, shutting down gracefully
[Fri Sep 22 00:13:19.556260 2023] [core:notice] [pid 1945191:tid 140346412464448] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0
[Fri Sep 22 00:13:19.562244 2023] [suexec:notice] [pid 1945191:tid 140346412464448] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Fri Sep 22 00:13:19.583880 2023] [so:warn] [pid 1945191:tid 140346412464448] AH01574: module wsgi_module is already loaded, skipping
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::934f:e559:2b39:da18. Set the 'ServerName' directive globally to suppress this message
[Fri Sep 22 00:13:20.603289 2023] [lbmethod_heartbeat:notice] [pid 1945191:tid 140346412464448] AH02282: No slotmem from mod_heartmonitor
[Fri Sep 22 00:13:20.605625 2023] [http2:warn] [pid 1945191:tid 140346412464448] AH02951: mod_ssl does not seem to be enabled
[Fri Sep 22 00:13:20.610553 2023] [mpm_event:notice] [pid 1945191:tid 140346412464448] AH00489: Apache/2.4.37 (centos) mod_wsgi/4.7.1 Python/3.9 configured -- resuming normal operations
[Fri Sep 22 00:13:20.610594 2023] [core:notice] [pid 1945191:tid 140346412464448] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
php html lamp web-testing
1个回答
0
投票

session_start() 必须是“”之后的第一个代码

$stmt = $db->prepare('SELECT * FROM user_details WHERE email = ?');
$stmt->execute([$email]);
$user = $stmt->fetch();
© www.soinside.com 2019 - 2024. All rights reserved.