Hey !
Voila, j'ai un leger souci avec mon code...
Il fait planter ma page en page blanche mais je ne trouve pas mon erreur :/
Sa fait 1h que je look mais pas moyen de trouver le problème...
Voici mon code :
<?php
require 'inc/functions.php';
if(!empty($_POST)){
$id = $_SESSION['auth']->id;
require_once 'inc/db.php';
$req = $pdo->prepare("UPDATE users_snapub SET biographie = ?, pays = ?, nbr_vues = ? WHERE id = ?");
$req->execute([$_POST['biographie'], $_POST['pays'], $_POST['nbr_vues'], $id])
$_SESSION['flash']['success'] = 'REUSSITE';
header('Location: settings.php');
exit();
}
?>
Il consiste à actualiser le profil d'un membre... Mais jusqu'à la je n'arrive même pas à trouver mon erreur donc bon :/
Des idées ? :)
C'est une grosse blague mdrrrrr merci Carouge10....
Sa venais de cette ligne :
require 'inc/functions.php';
Je l'ai enlevé comme tu à dit et le script fonctionne correctement sans mdrrrr
Je comprend même pas...
Pourtant il n'y a rien de bien complexe dans mon functions mis appart des commandes de debug quoi...
Voici mon fichiers functions au cas ou vous trouvez quelque chose :
<?php
function debug($variable){
echo '<pre>' . print_r($variable, true) . '</pre>';
}
function str_random($length){
$alphabet = "0123456789azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN";
return substr(str_shuffle(str_repeat($alphabet, $length)), 0, $length);
}
function logged_only(){
if(session_status() == PHP_SESSION_NONE){
session_start();
}
if(!isset($_SESSION['auth'])){
$_SESSION['flash']['danger'] = "Vous n'avez pas le droit d'accéder à cette page";
header('Location: login.php');
exit();
}
}
function reconnect_from_cookie(){
if(session_status() == PHP_SESSION_NONE){
session_start();
}
if(isset($_COOKIE['remember']) && !isset($_SESSION['auth']) ){
require_once 'inc/db.php';
if(!isset($pdo)){
global $pdo;
}
$remember_token = $_COOKIE['remember'];
$parts = explode('==', $remember_token);
$user_id = $parts[0];
$req = $pdo->prepare('SELECT * FROM users_snapub WHERE id = ?');
$req->execute([$user_id]);
$user = $req->fetch();
if($user){
$expected = $user_id . '==' . $user->remember_token . sha1($user_id . 'ratonlaveurs');
if($expected == $remember_token){
session_start();
$_SESSION['auth'] = $user;
setcookie('remember', $remember_token, time() + 60 * 60 * 24 * 7);
} else{
setcookie('remember', null, -1);
}
}else{
setcookie('remember', null, -1);
}
}
}
Bonjour,
Pour commencer, il manque un ; pour l'execute de la requête.
Ensuite, il manque un session_start();
Plop Carouge10,
J'ai corrigé, merci pour ta réponse rapide :
<?php
session_start();
require 'inc/functions.php';
if(!empty($_POST)){
$id = $_SESSION['auth']->id;
require_once 'inc/db.php';
$req = $pdo->prepare("UPDATE users_snapub SET biographie = ?, pays = ?, nbr_vues = ? WHERE id = ?");
$req->execute([$_POST['biographie'], $_POST['pays'], $_POST['nbr_vues'], $id]);
$_SESSION['flash']['success'] = 'REUSSITE';
header('Location: settings.php');
exit();
}
?>
Mias le souci ne vient pas de la et sa persiste avec la page blanche :/
Bonsoir.
Tu considères la requête SQL réussie sans faire de vérification dessus ?
Ton problème doit probablement provenir de ça.
Hey Lartak,
En effet j'ai rajouté une petite verif :
<?php
session_start();
require 'inc/functions.php';
if(!empty($_POST)){
if(empty($_POST['biographie']) || !preg_match('/^[a-zA-Z0-9_]+$/', $_POST['biographie'])){
$errors['biographie'] = "Votre biographie n'est pas valide";
}else{
$id = $_SESSION['auth']->id;
require_once 'inc/db.php';
$req = $pdo->prepare("UPDATE users_snapub SET biographie = ?, pays = ?, nbr_vues = ? WHERE id = ?");
$req->execute([$biographie, $pays, $nbr_vues, $id]);
$_SESSION['flash']['success'] = 'REUSSITE';
header('Location: settings.php');
exit();
}
?>
Je parlais surtout au niveau de l'exécution de la requête SQL, soit quelque chose du genre :
if ($req->execute([$biographie, $pays, $nbr_vues, $id])) {
// $req->execute retourne true
$_SESSION['flash']['success'] = 'REUSSITE';
header('Location: settings.php');
exit();
} else {
// $req->execute retourne false, la requête ne s'est donc pas bien exécuté ...
}
Surtout que tu ne nous informes pas si les modifications sont bien faites en base de données, ce qui pourrait nous aider à trouver ce qui pourrait poser ton problème.
Mais le souci Lartak c'est que je suis bien d'accord avec toi hein,
Mais la page ne se charge même plus :/ C'est à dire que quand j'enlève le code sa charge correctement mais quand je met le code et bien sa fait planter la page en page blanche quoi... Donc sa doit être une faute au niveau du code en lui même et non pas au niveau de l'execution du script, enfin je pense pas, si ?
Désolé si je te contrarie :/ Tu ma sauver plus d'une fois je doit le reconnaitre ^^
Pour debugger, la meilleur solution est d'utiliser "die('là ça va');" ligne par ligne et vous allez forcément trouver la ligne.
Ou alors j'ai bien ce script qui fonctionne correctement pour la modification des mot de passe depuis la même page, ont peut l'adapter pour quelle modifier aussi la biographie et le pays non ?
<?php
if(!empty($_POST)){
if(empty($_POST['password']) || $_POST['password'] != $_POST['password_confirm']){
$_SESSION['flash']['danger'] = "Les mots de passes ne correspondent pas";
}else{
$user_id = $_SESSION['auth']->id;
$password= password_hash($_POST['password'], PASSWORD_BCRYPT);
require_once 'inc/db.php';
$pdo->prepare('UPDATE users_snapub SET password = ? WHERE id = ?')->execute([$password,$user_id]);
$_SESSION['flash']['success'] = "Félicitation ! Votre mot de passe a bien été mis à jour !";
}
}
?>
Est-ce que tu as suivi la formation Déboguer son code PHP ?
Car tu parles de page blanche et il y a justement un chapitre qui s'y nomme J'ai une page blanche !.
Lartak,
J'ai suivi les étapes hors, je n'ai aucune value dans error_log... Que faire ?
Essayer ma méthode pour trouver la ligne.
La biographie est-elle bien protéger pour éviter les " et les ' qui pourrait poser problème.
J'ai trouvé sa,
ini_set('display_errors', 1);
ini_set('log_errors', 1);
ini_set('error_log', dirname(__FILE__) . '/error_log.txt');
error_reporting(E_ALL);
Et en effet sa fonctionne ! Je suis chez OVH donc pour moi le tutoriel de Grafikart un peu plus haut ne fonctionne pas pour moi et donc ne me concèrne pas...
Voici ce que sa me retourne :
Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /www/snapub/dashboard/settings.php on line 37
Warning: mysql_query(): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /www/snapub/dashboard/settings.php on line 37
Warning: mysql_query(): A link to the server could not be established in /www/snapub/dashboard/settings.php on line 37
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /www/snapub/dashboard/settings.php on line 38
Salut,
Contrôles quand même ton appli car utiliser PDO d'un côté et mysql_xxx. c'est moyen quand même. Autant tu en as d'autres ailleurs qui vont te poser problème
Salut Thomas,
C'est vrai que tu na pas tort, je mélange un peu les deux et c'est pas top !
Merci pour ton petit conseil :)