session

Répondre
SearcherLite
le 15/07/2014 à 13:58
SearcherLite
j utilise ce code pour garder la session active dans chaque page de mon app web
<?php
session_start();
if(!isset( $_SESSION['pseudo']))
{
header('Location:index.php?msg=errauth');
}
$db = new mysqli('localhost', 'root', '', 'gas-final');
$sql = <<<SQL
SELECT nom_utilisateur,id_profil
FROM `utilisateur`
WHERE `identifiant` = '$_SESSION['pseudo']'; //line 20 ou y a le probleme
SQL;
$result=$db->query($sql));
if(!$result = $db->query($sql)){
die('There was an error running the query [' . $db->error . ']');
}
?>
mais ça m'affiche un erreur:
Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\wamp\www\testmp\wall_paper.php on line 20
Quelles solutions vous me proposez?
Paphio-King
le 17/07/2014 à 22:52
Paphio-King
Bonjour Searcher Lite.
Je remarque que ta ligne complète et normalement comme ceci.
<?php 
$sql = "SELECT nom_utilisateur,id_profil FROM `utilisateur` WHERE `identifiant` = '$_SESSION[ 'pseudo']'";
php ?>


Hors tu dois ouvrir avec des double cote comme cet exemple si dessous
<?php 
$sql = "SELECT nom_utilisateur,id_profil FROM utilisateur WHERE identifiant=" . $_SESSION['pseudo']";
php ?>


Voilà essaye comme ceci et tiens moi au courant.
<-- Paphio-King -->
SearcherLite
le 20/07/2014 à 16:50
SearcherLite
<?php $sql =  "SELECT nom_utilisateur,id_profil FROM utilisateur WHERE identifiant=" . $_SESSION['pseudo']";?>

est ec qu'il ne manque pas un point
<?php $sql =  "SELECT nom_utilisateur,id_profil FROM utilisateur WHERE identifiant=" . $_SESSION['pseudo'].";?>
LupusMic
le 28/07/2014 à 09:01
LupusMic
La concaténation, c'est le mal ©.

La syntaxe initialement employée avec le heredoc était presque la bonne. En fait, PHP, en interprétant cette chaîne de caractère, ne considérait que la variable $_SESSION, et ignorait la suite. Quand on veut introduire ainsi une variable, une bonne pratique est de l'entourer de curly brakets :
<?php
session_start();
if(!isset( $_SESSION['pseudo']))
{
header('Location:index.php?msg=errauth');
}
$db = new mysqli('localhost', 'root', '', 'gas-final');
$sql = <<<SQL
SELECT nom_utilisateur,id_profil
FROM `utilisateur`
WHERE `identifiant` = '{$_SESSION['pseudo']}';
SQL;
$result=$db->query($sql));
if(!$result = $db->query($sql)){
die('There was an error running the query [' . $db->error . ']');
}
?>


Ceci permet donc à PHP de comprendre où commence et où s'arrête la variable.

Cependant, essayez donc d'utiliser les chaînes de formatages. Ça vous permettra aussi d'éviter d'avoir des grosses failles de sécurité comme vous semblez les aimer ces derniers temps :

<?php
session_start();
if(!isset( $_SESSION['pseudo']))
{
header('Location:index.php?msg=errauth');
die(); // Tu dois arrêter le script ici, l'instruction header ne le fait pas.
}

$db = new mysqli('localhost', 'root', '', 'gas-final');

$sql = <<<SQL
SELECT nom_utilisateur,id_profil
FROM `utilisateur`
WHERE `identifiant` = '%s'
SQL;

$sql = sprintf($sql, $db->real_escape_string($_SESSION['pseudo']));

$result=$db->query($sql));
if(!$result = $db->query($sql)){
die('There was an error running the query [' . $db->error . ']');
}
?>
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours