IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Code qui fonctionne sous EasyPHP mais pas sur le serveur


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut 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 :

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  2. #2
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Je me réponds à moi-même :

    il y avait un espace qui traînait juste après le ?> de securite.php.

    Donc maintenant tout fonctionne !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RegEx] Regex qui fonctionne en local mais pas sur le serveur
    Par lecroquant dans le forum Langage
    Réponses: 3
    Dernier message: 10/01/2012, 16h01
  2. Code qui fonctionne sous XP mais pas sous 7
    Par theclem35 dans le forum Débuter
    Réponses: 2
    Dernier message: 09/06/2011, 20h02
  3. [Prob] code qui fonctionne sous windows mais pas sous linux
    Par hannibal.76 dans le forum Multimédia
    Réponses: 3
    Dernier message: 07/02/2011, 17h46
  4. [2.0] connexion qui fonctionne chez moi mais pas sur un autre pc
    Par Lorenzeb dans le forum Accès aux données
    Réponses: 1
    Dernier message: 13/09/2006, 17h47
  5. code qui fonctionne en local et pas sur le net
    Par vraipolite dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/08/2005, 10h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo