Code qui fonctionne sous EasyPHP mais pas sur le serveur
Bonjour,
j'ai transféré aujourd'hui toutes mes pages réalisées sous EasyPHP sur mon serveur NAS (car mon code fonctionne enfin !). J'ai recréé la base de données sous phpmyadmin sur le NAS.
Et là, surprise : dès que l'utilisateur se connecte à la base (page connexion.php), il obtient ceci :
Citation:
Warning: Cannot modify header information - headers already sent by (output started at /volume1/web/securite.php:30) in /volume1/web/index.php on line 62
J'ai donc regardé ma ligne 62, qui est une redirection vers la page de bienvenue : header("Location: bienvenue.php");
Et dans securite.php je n'ai pas de ligne html/css ou quelque chose qui apparement pourrait géner le header.
Le code de securite.php (sachant que la ligne 30 est vide, le fichier se finit à la ligne 28) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
<?php
class Securite
{
// Données entrantes
public static function bdd($string)
{
// On regarde si le type de string est un nombre entier (int)
if(ctype_digit($string))
{
$string = intval($string);
}
// Pour tous les autres types
else
{
$string = mysql_real_escape_string($string);
$string = addcslashes($string, '%_');
}
return $string;
}
// Données sortantes
public static function html($string)
{
return htmlentities($string);
}
}
?> |
Et mon code de la page de connexion :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
<?php session_start();
require("page_connexion.php");
require("securite.php");
if(isset($_POST['valider']))
{
$connexion = mysql_connect($serveur,$login,$mdp);
mysql_select_db("mabase",$connexion);
mysql_set_charset('utf8');
$login = Securite::bdd($_POST['login']);
$mdp = Securite::bdd(md5($_POST['mdp']));
if (empty($login) || empty($mdp))
{
echo '<tr><td><p class="rouge">Saisissez votre login et votre mot de passe.</p></td></tr>';
}
else
{
// Vérification de l'existence du login et de la correspondance du mot de passe
$req_exi = mysql_query("SELECT ...");
// Si le login n'existe pas
if (mysql_num_rows($req_exi) == 0)
{
echo '<p class="rouge">Erreur de saisie, ce login n\'existe pas.</p>';
}
// On va tester si le mot de passe est correct
else
{
while ($donnees = mysql_fetch_array($req_exi))
{
// Si mauvais mot de passe
if ($mdp != $donnees['mdp_personne'])
{
echo '<p class="rouge">Mauvais mot de passe.</p>';
}
else
{
// Si société = SPK/Ultramétrix/Rainbow venture, on met isAdmin à 1
if($donnees['nom_societe'] == '...')
{
$_SESSION['isAdmin'] = 1;
$_SESSION['isClient'] = 0;
}
else
{
$_SESSION['isClient'] = 1;
$_SESSION['isAdmin'] = 0;
}
// On met connected à 1 pour montrer que la connexion à l'extranet s'est faite
$_SESSION['connected'] = 1;
$_SESSION['login'] = $donnees['login_personne'];
$_SESSION['nom'] = $donnees['nom_personne'];
$_SESSION['prenom'] = $donnees['prenom_personne'];
header("Location: bienvenue.php");
die();
}
}
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><link rel="stylesheet" type="text/css" href="style.css" />
<style type="text/css">
body {
background-image:url(images/banniere_acces.jpg);
background-repeat:no-repeat;
background-attachment:fixed;
background-position:top center;
}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Page de connexion</title>
</head>
<body>
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
<table align="center" style="margin-top:2%;">
<tr><td><b>Login</b></td><td><input type="text" name="login" /></td></tr>
<tr><td><b>Mot de passe</b></td><td><input type="password" name="mdp" /></td></tr>
<tr><td></td><td align="right"><input type="submit" name="valider" value="Se connecter" /></td></tr>
</table>
</form>
</body>
</html> |
Mon code fonctionne sans aucun problème sous EasyPHP, alors pourquoi plante-t-il sur le NAS ?