Je suis en train de coder un CMS en PHP afin de revenir en PHP (je l'utilise pour l'utiliser tout le temps). Cependant, pour une raison étrange, quand "inclure" ou "exigeant" mon fichier de classes, il arrête simplement le script php, mon formulaire de connexion (html de login.php) n'apparaît pas (que je sois connecté ou pas). De l'aide? Voici deux de mes scripts:Le script PHP ne fonctionnera pas
login.php:
<?php
session_start();
include "classes.php";
if(isset($_GET['logout'])) {
setupSession(2);
}
if($_SESSION['status'] == "online") header("location: admin.php");
if($_POST && isset($_POST['username']) && isset($_POST['password'])) {
$un = $_POST['username'];
$pwd = $_POST['password'];
$mysql = new mySql();
$mysql->validateUser($un, $pwd);
} else $attempt = 2;
?>
<html>
<head>
<title>Log In</title>
</head>
<body>
<form method="post" action="">
<label for="username">username: </label>
<input type="text" name="username" />
<label for="password">password: </label>
<input type="password" name="password" />
<input type="submit" value="Log In" name="submit" />
</form>
</body>
</html>
et classes.php
<?php
class mySql {
protected $dbname;
protected $dbuser;
protected $dbpass;
protected $db;
private $conn;
function __construct() {
$conn = new mysqli($dbname, $dbuser, $dbpass, $db);
}
public function validateUser($username, $password) {
$query = "SELECT * FROM users WHERE username = ? AND password = ? LIMIT 1";
if($stmt = $this->conn->prepare($query)) {
$stmt->bind_param('ss', $username, $password);
$stmt->execute();
if($stmt->fetch()) {
$stmt->close();
setupSession(1);
} else $attempt = 1;
}
}
}
function setupSession($status) {
switch($status) {
case 1:
$_SESSION['status'] = "online";
//other user variables
header("location: admin.php");
break;
case 2:
unset($_SESSION['status']);
if(isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time() - 1000);
}
session_destroy();
break;
default:
session_start();
if($_SESSION['status'] != "online") header("location: login.php");
break;
}
}
?>
Votre 'error_reporting' est-il activé? –
Notez également que ** doit, doit, doit ** 'die()' après un 'header (" emplacement: ... ")' sinon le contenu protégé sera envoyé au client dans le corps du document. –
Je ne suis pas sûr de error_reporting, j'utilise MAMP pour le développement. Et pour la mort(), merci. – user379229