Probleme simple syntaxe php

Résolu
juste une petite erreur mais je ne comprend pas pourquoi cela fait ca,
je veux que tout le contenu sois affiché en fonction du if, je fais donc ca :

<?php
include('includes/header.php');
include('php/php_bdd.php');
include('php/php_login.php');
include('includes/infos.php');
include('includes/sidebar.php');
?>
<?php
if(isset($_GET['pseudo']) && isset($_GET['type']) && $_GET['type'] == "view")
{
$requser = $bdd->prepare("SELECT * FROM users WHERE pseudo = ?");
$requser->execute(array($_GET['pseudo']));
$account_info = $requser->fetch();

?>

PARTIE HTML...

<?
}
else
{
header("Location: index.php?info=vous ne pouvez pas acceder à cette page");
}

include('includes/footer.php');
?>

mais ca me met unexpected end of file.. pourtant si je met l'accolade en haut comme si-dessous, tout fonctionne bien :'/


<?php
include('includes/header.php');
include('php/php_bdd.php');
include('php/php_login.php');
include('includes/infos.php');
include('includes/sidebar.php');
?>
<?php
if(isset($_GET['pseudo']) && isset($_GET['type']) && $_GET['type'] == "view")
{
$requser = $bdd->prepare("SELECT * FROM users WHERE pseudo = ?");
$requser->execute(array($_GET['pseudo']));
$account_info = $requser->fetch();
}

?>

PARTIE HTML...

<?
else
{
header("Location: index.php?info=vous ne pouvez pas acceder à cette page");
}

include('includes/footer.php');
?>


ca ne vient pas des includes j'ai déjà vérifié en les mettants 1 par 1 un commentaire, et jai compter à plusieurs reprises les accolades et parenthèses mais je ne vois pas l'erreur de mon code... :/

merci beaucoup ! :)

2 réponses

  1. Modérateur
    Bonjour,

    1 - TOUJOURS Récupérer proprement les variables AVANT de les utiliser
    2 - Utiliser
     <?php 
    et pas juste
     <? 
    pour ouvrir les balises php
    3 - Mettre les requêtes dans des blocs try/catch pour intercepter les erreurs éventuelles de requêtes
    4 - Toujours faire un
     exit();
    après un header location.

    <?php 
    require_once 'includes/header.php';
    require_once 'php/php_bdd.php';
    include('php/php_login.php');
    include('includes/infos.php');
    include('includes/sidebar.php');
    
    //récupération PROPRE des variables AVANT de les utiliser
    $pseudo = !empty($_GET['pseudo']) ? $_GET['pseudo'] : NULL;
    $type = !empty($_GET['type']) ? $_GET['type'] : NULL;
    
    if($pseudo && $type == "view") {
      $sql = "SELECT * FROM users WHERE pseudo = :pseudo";
      $datas = array(":pseudo"=>$pseudo);
      try{
        $requser = $bdd->prepare($sql);
        $requser->execute($datas);
      }catch(Exception $e){
       //en cas d'erreur dans la requête
       echo "Erreur : ".$e->getMessage();
      }
      $account_info = $requser->fetch();
    ?>
    
      PARTIE HTML...
    
    <?php // utiliser <?php ... et pas juste <?
    } else {
     header("Location: index.php?info=vous ne pouvez pas acceder à cette page");
     exit(); //toujours mettre un exit après une redirection
    }
    
    include('includes/footer.php');
    ?>
    


    NB: Plutôt que d'utiliser des variables GET pour faire transiter des "info" (contenant des phrases....) il est préférable d'utiliser les variables de session.

    1. up ?
      1. Modérateur
        UP de quoi ???
        Tu as lu ma réponse ???
        Tu en a tenu compte pour corriger ton code ???
      2. @jordane45nan désolé j'avais pas vu ta réponse :x par contre mon erreur c'est une faute de frappe j'avais juste oublié le ?>php au debut de mon else, et pour le exit(); je savais pas merci beaucoup encore une fois ^^"

    Discussions similaires

    syntaxe du mot de passe

    3 réponses