[RESOLU] Problème CSS avec header de PHP

Eléphanteau du PHP | 14 Messages

19 févr. 2017, 15:52

Bonjour,
Je suis nouveau sur le forum et débutant en php, soyez, s'il vous plait, indulgent quant au langage inaproprié que j'utilise ou à mes pages php mal organisée etc... (j'attends des conseils avec plaisir).

Je suis actuellement en train de réaliser un site internet (avec possibilité de s'inscrire etc..) pour mon projet de cours, et j'ai un problème.

Quand j'effectue une inscription, j'ai fait à ce que l'inscription étant faite ça renvoi sur une page avec header ('location:nomdepage'), et j'ai un fichier style.css, mais le css ne s'applique pas sur la page à laquelle je renvoi.
J'ai pris le code du Tuto "Inscription et connexion dans un espace membres" du site, et j'ai voulu modifier la ligne où c'est écrit :
$message = 'Votre inscription est enregistrée. <a href = "#">Cliquez ici pour vous connecter</a>';
pour remplacer avec header, mais le css ne s'applique plus, en tout cas totalement.

La page d'inscription :
<?php 
/* Indique le bon format des entêtes (par défaut apache risque de les envoyer au standard ISO-8859-1) */
header('Content-type: text/html; charset=UTF-8');

/* Création d'une fonction - utilisée dans la récupération des variables - qui teste la configuration get_magic_quotes_gpc du serveur.
Si oui, supprime avec la fonction stripslashes les antislashes "\" insérés dans les chaines de caractère des variables gpc (GET, POST, COOKIE) */
function Verif_magicquotes ($chaine)
{
if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);

return $chaine;
}

/* Initialisation du message de réponse */
$message = null;


/* Si le formulaire est envoyé */
if (isset($_POST['pseudo']))
{

    /* Récupération des variables issues du formulaire
    Teste l'existence les données post en vérifiant qu'elles existent, qu'elles sont non vides et non composées uniquement d'espaces.
    (Ce dernier point est facultatif et l'on pourrait se passer d'utiliser la fonction trim())
    En cas de succès, on applique notre fonction Verif_magicquotes pour (éventuellement) nettoyer la variable */
    $pseudo = (isset($_POST['pseudo']) && trim($_POST['pseudo']) != '')? Verif_magicquotes($_POST['pseudo']) : null;
    $pass = (isset($_POST['pass']) && trim($_POST['pass']) != '')? Verif_magicquotes($_POST['pass']) : null;
   

    /* Si $pseudo et $pass différents de null */
    if(isset($pseudo,$pass))
    {
         /* Connexion au serveur : dans cet exemple, en local sur le serveur d'évaluation
         A MODIFIER avec vos valeurs */
         $hostname = "localhost";
         $database = "soundlight";
         $username = "root";
         $password = "";
   
         $connection = mysql_connect($hostname, $username, $password) or die(mysql_error());

         /* Connexion à la base */
         mysql_select_db($database, $connection);
   
         /* Indique à mySql de travailler en UTF-8 (par défaut mySql risque de travailler au standard ISO-8859-1) */
         mysql_query("SET NAMES 'utf8'");
   
         /* Préparation des données pour les requêtes à l'aide de la fonction mysql_real_escape_string */
         $nom = mysql_real_escape_string($pseudo);
         $password = mysql_real_escape_string($pass);
   
   
         /* Requête pour compter le nombre d'enregistrements répondant à la clause : champ du pseudo de la table = pseudo posté dans le formulaire */
         $requete = "SELECT count(*) as nb FROM membres WHERE pseudo = '".$nom."'";
   
         /* Exécution de la requête */
         $req_exec = mysql_query($requete) or die(mysql_error());
   
         /* Création du tableau associatif du résultat */
         $resultat = mysql_fetch_assoc($req_exec);
   

         /* nb est le nom de l'allias associé à count(*) et retourne le résultat de la requête dans le tableau */ $resultat;
         if (isset($resultat['nb']) && $resultat['nb'] == 0)
         /* Résultat du comptage = 0 pour ce pseudo, on peut donc l'enregistrer */
         {
             /* Pour enregistrer la date actuelle (date/heure/minutes/secondes) on peut utiliser directement la fonction mysql : NOW() */
             $insertion = "INSERT INTO membres(pseudo,pass,date_enregistrement) VALUES('".$nom."', '".$password."', NOW())";
         
             /* Exécution de la requête d'insertion */
             $inser_exec = mysql_query($insertion) or die(mysql_error());
       
             /* Si l'insertion s'est faite correctement (une requête d'insertion retourne "true" en cas de succès, je peux donc utiliser
             l'opérateur de comparaison strict '==='  c.f. http://fr.php.net/manual/fr/language.operators.comparison.php&#41; */
             if ($inser_exec === true)
             {
                 /* Démarre la session et enregistre le pseudo dans la variable de session $_SESSION['login']
                 qui donne au visiteur la possibilité de se connecter.  */
                 session_start();
                 $_SESSION['login'] = $pseudo;
           
                 /* Renvoi vers une page */
                 header ('location:confirmation_inscription.php') ;
             }   
         }
         else
         {   /* Le pseudo est déjà utilisé */
             $message = 'Ce pseudo est déjà utilisé, changez-le.';
         }
    }
    else
    {    /* Au moins un des deux champs "pseudo" ou "mot de passe" n'a pas été rempli */
         $message = 'Les champs "Pseudo" et "Mot de passe" doivent être remplis.';
    }
}


?>
	
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="style.css">
<title>Formulaire d'inscription - SoundLight</title>



</head>
<body>

<header>
<h1 id="gros_titre">
SoundLight
</h1>
</header>


<div id = "inscription">
    <form action = "#" method = "post">
    <h1>Inscription</h1>
    <p><label for = "pseudo">Pseudo : </label><input type = "text" name = "pseudo" id = "pseudo" /></p>
    <p><label for = "pass">Mot de passe : </label><input type = "password" name = "pass" id = "pass" /></p>
    <p><input type = "submit" value = "S'inscrire" id = "valider" /></p>
    </form>
    <p id = "message"><?php if(isset($message)) echo $message ?></p>
</div>

<p id="indication">Déjà inscrit ? Connectez-vous <a href="connexion.php">ICI</a></p>

<footer>
    <p id="indication">SoundLight 2017 ©</p>
</footer>

</body>
</html>
La page à laquelle ça renvoi (confirmation_inscription.php) :
<html id="confirmation_inscription">

<head>
	<meta charset="utf-8">
	<link rel="stylesheet" type="text/css" href="style.css">
	<title>SoundLight</title>
</head>

<header>
<h1 id="gros_titre">
SoundLight
</h1>
</header>

<body>

<h2> Vous êtes désormais inscrit ! <a href="connexion.php">Cliquez ici pour vous connecter</a> </h2>


</body>

<footer>
    <p id="indication">SoundLight 2017 ©</p>
</footer>

</html>

et le fichier CSS :
body, p, h1,form, input {
margin:0;
padding:0;
}
body {
background-image:url('soundwaves.png');
background-position: bottom;
background-repeat: no-repeat;
}
#confirmation_inscription h2 {
text-align: center;
font-family: Arial, Helvetica, sans-serif;
color: green;
}	
#inscription {
width:380px;
background:#FFFFFF;
margin:20px auto;
font-family: Arial, Helvetica, sans-serif;
font-size:1em;
border:2px solid green;
margin-top: 70px;
}
#inscription h1 {
text-align:center;
font-size:1.2em;
background:green;
padding-bottom:5px;
margin-bottom:15px;
color:#FFFFFF;
letter-spacing:0.05em;
}
#inscription p {
padding-top:15px;
padding-right:50px;
text-align:right;
}
#inscription input {
margin-left:30px;
width:150px;
}
#inscription #valider {
width:155px;
font-size:0.8em;
}
#inscription #message {
height:27px;
font-size:0.7em;
font-weight:bold;
text-align:center;
padding:10px 0 0 0;
}
#gros_titre{
font-size: 150px;
font-family: Arial, Helvetica, sans-serif;
color: green;
vertical-align:middle;
margin-top: 0px;
text-align: center;
}
#indication{
font-size: 1em;
color:green;
font-family: Arial, Helvetica, sans-serif;
text-align:center;
}

Eléphanteau du PHP | 14 Messages

19 févr. 2017, 16:06

Je viens de me rendre compte ... qu'il y a eu des modifications sur le tuto donné, j'ai donc pris les modifs. Mais le problème est toujours là

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

19 févr. 2017, 20:03

Bonjour,

Le problème des CSS n'est pas un problème de PHP, mais un problème de HTML (+ CSS).
Regarde la source HTML de ta page affichée dans ton navigateur et regarde pourquoi le CSS ne fonctionne pas
Quand tout le reste a échoué, lisez le mode d'emploi...

geraldjak
Invité n'ayant pas de compte PHPfrance

20 févr. 2017, 01:26

Il faut que tu vérifies l'URL du fichier styles.css c'est souvent du à ca !
Par exemple si ton fichier est dans css/styles.css ou bien si tes .php il faut remonter dans la racine ../styles.css

Eléphanteau du PHP | 14 Messages

09 mars 2017, 19:56

Bonjour,

Excusez-moi du retard pour la réponse. Finalement le CSS s'applique désormais, je ne sais toujours pas d'où venez le problème.
J'ai malheureusement d'autres problèmes :
J'ai créé une page membre.php à laquelle on accède après envoi du formulaire de la page connexion.php
j'ai utilisé comme indiqué dans le tutoriel le bout de code pour sécuriser l'accès de la page :
session_start(); 
if(!isset($_SESSION['login'])) {die('Vous devez être enregistré pour accéder à cette partie du site');}
Mais le problème est que quand je m'inscris et que je vais tout de suite me connecter par l'entremise du lien dans la page confirmation_inscription.php ça marche.
Mais si par exemple je quitte et je recharge la page connexion.php quand j'essai de me connecter alors le message comme quoi je dois m'enregistrer s'affiche alors qu'un compte existe bien avec le login utilisé.

Eléphanteau du PHP | 14 Messages

09 mars 2017, 20:01

Pour le projet j'ai également besoin de commander un arduino à partir d'un site en php, et je voudrais avoir de l'aide. Je poste un nouveau sujet ? C'est mieux ?

Eléphanteau du PHP | 14 Messages

09 mars 2017, 22:02

Sinon à part ça je crois que le problème de CSS venait du fait que WAMP ne mettait pas à jour le CSS. Ou peut-être au niveau du cache du navigateur.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 mars 2017, 14:53

salut,

pour le arduino, oui un autre sujet c'est mieux la il commence à y avoir un peux trop de chose ;)

Pour la connexion, je pense qu'il serait préférable de faire de même pour simplifier la lecture du sujet.
il faut ajouter un peux plus de code (notamment celui de la validation du formulaire de connexion) afin de t'aider à diagnostiquer la chose.

A priori je dirais que le problème vient de la validation :)

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 14 Messages

12 mars 2017, 11:10

Bonjour,

Finalement coté connexion le problème est également résolu, c'était une erreur de ma part. L'action du formulaire de connexion n'était pas sur la page elle-même. En action j'avais mis membre.php. Du coup j'ai changé et j'ai rajouter un header pour renvoyer à membre.php si les identifiants existaient.

Merci à vous. Je vous invite à aller sur mon post sur l'Arduino et le PHP j'ai vraiment besoin d'aide et de conseils :wink: