Probleme d'avatar sur ma page principale
- Accueil
- Forum
- Programmation
- PHP
- Probleme d'avatar sur ma page principale
Galaktor Le 29 janvier 2018 à 15:36 (Édité le 25 janvier 2019 à 17:54)
J'ai regardé le chemin de l'image je tombe juste dans le repertoire, en fait il ne trouve pas l'image
au lieu d'avoir : localhost/account/avatars/2.png (par exemple)
j'ai : localhost/account/avatars/
et je comprends pas pourquoi,
dans le code j'ai déjà testé l'image avec le "$_SESSION" a la place de "$userinfo" mais ça ne fonctionne pas non plus. Ca m'affiche une image cassé.
Je vous poste mon code :
<?php
session_start();
$bdd = new PDO('mysql:host=127.0.0.1;dbname=bddtest', 'root', '');
if(isset($_SESSION['id'])){
$getid = intval($_GET['id']);
$requser = $bdd->prepare('SELECT * FROM membres WHERE id = ?');
$requser->execute(array($getid));
$userinfo = $requser->fetch();
?>
<html lang="fr">
<head>
<meta charset='utf-8'>
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>localhost test</title>
</head>
<body>
<header>
<div class="profil">
</div>
<div class=profiluser>
<?php echo $_SESSION['pseudo']; ?>
</div>
<div align="center" class=iconuser>
<?php if(!empty($userinfo['avatar']))
{
?>
<img src="account/avatars/<?php echo $userinfo['avatar'] ?>" width="100" />
<?php
}
?>
</div>
</header>
</body>
<?php
}
else {
header('Location: ../login.php');
}
?>
Merci d'avance pour l'aide 😄 SkinDePewDiePie_ Le 30 janvier 2018 à 13:10 (Édité le 30 janvier 2018 à 13:12)
Galaktor Le 30 janvier 2018 à 15:31 (Édité le 1 janvier 1970 à 01:00)
J'ai besoin d'aide pour résoudre ce probleme ! s'il vous plait à l'aide x(
Balatharas Le 30 janvier 2018 à 21:51 (Édité le 1 janvier 1970 à 01:00)
src="<?= $_SERVER['REQUEST_SCHEME'] ?>://<?= $_SERVER['SERVER_NAME'] ?>/account/avatars/<?= $userinfo['avatar'] ?>/"
src="<?= $_SERVER['REQUEST_SCHEME'] ?>://<?= $_SERVER['SERVER_NAME'] ?>/account/avatars/<?= $_SESSION['avatar'] ?>/"
src="<?= $_SERVER['REQUEST_SCHEME'] ?>://<?= $_SERVER['SERVER_NAME'] ?>/account/avatars/<?= $userinfo['avatar'] ?>"
Essaie les trois ? Galaktor Le 30 janvier 2018 à 22:11 (Édité le 1 janvier 1970 à 01:00)
Galaktor Le 30 janvier 2018 à 22:30 (Édité le 1 janvier 1970 à 01:00)
l'avatar fonctionne avec ce code :
<img src="<?= $_SERVER['REQUEST_SCHEME'] ?>account/avatars/<?= $userinfo['avatar'] ?>" />
Mais quand je veux aller sur mon index.php sans le ( ?id=1 ) Rien ne s'affiche, a part le pseudo d'ou le fait d'avoir mis "$_SESSION['pseudo']" a la place de "$userinfo" donc j'ai tenté de faire pareil avec l'avatar :
<img src="<?= $_SERVER['REQUEST_SCHEME'] ?>account/avatars/<?=$_SESSION['avatar'] ?>" />
Donc la le probleme c'est que j'ai une image cassé et quand je clique droit pour aller voir le lien de l'avatar je tombe sur : 127.0.0.1/account/avatars/
Au lieu d'avoir normalement :
127.0.0.1/account/avatars/1.png
Le but dans tout ça c'est que j'aimerais que quand l'utilisateur va sur ma page principal, qu'il puisse voir son pseudo et son avatar 😀
J'espere avoir été clair dans mon soucis ^^ merci d'avance pour l'aide
Balatharas Le 31 janvier 2018 à 18:50 (Édité le 31 janvier 2018 à 18:59)
if(!isset($_GET['id'])) {
header('Location: index.php');
}
$req = $bdd->prepare('SELECT * FROM membres WHERE id = ?');
$req->execute([$_GET['id']]);
if($req->rowCount() == 0) {
header('Location: index.php');
}
$useravatarpath = $req->fetch()['avatar'];
Ajoute aussi ça:
foreach($_POST as $key => $value) {
$post[$key] = trim(strip_tags($value));
}
foreach($_GET as $key => $value) {
$get[$key] = trim(strip_tags($value));
}
Ainsi, en mettant ce code en début de page, au lieu d'utiliser $_POST pour vos variables de formulaires, utilisez plutôt $post.
Et pas besoin de
$identifiant = htmlspecialchars($_POST['identifiant']);htmlspecialchars car les variables sont déjà sécurisées dans le foreach.
===> Mini tuto de @TheOldNoob
Ensuite, c'est plutôt bizarre que
<img src="<?= $_SERVER['REQUEST_SCHEME'] ?>account/avatars/<?=$_SESSION['avatar'] ?>" />
marche car la variable $_SERVER['REQUEST_SCHEME'] contient le protocole du serveur... C'est à dire http ou https
Donc essaie ceci:
<img src="<?= $_SERVER['REQUEST_SCHEME'] ?>://<?= $_SERVER['SERVER_NAME'] ?>/account/avatars/<?= $useravatarpath ?>" />
Ou ceci:
<img src="<?= $_SERVER['REQUEST_SCHEME'] ?>account/avatars/<?= $useravatarpath ?>" />
Galaktor Le 31 janvier 2018 à 20:37 (Édité le 31 janvier 2018 à 20:38)
Bon j'ai testé les codes et malheureusement, ça ne veut toujours pas fonctionner.
Ce code :
<img src="<?= $_SERVER['REQUEST_SCHEME'] ?>://<?= $_SERVER['SERVER_NAME'] ?>/account/avatars/<?= $useravatarpath ?>" />
m'envoie bien dans le dossier là ou se trouve tout les avatars donc : https://www.monsite.com/account/avatars/
Et ce code :
<img src="<?= $_SERVER['REQUEST_SCHEME'] ?>account/avatars/<?= $useravatarpath ?>" />
m'envoie sur : https://www.monsite.com/httpsaccount/avatars/
Donc le premier code reste bien, étant donné que mes avatars se trouve bien dans ce répertoire, mais le truc c'est que quand je suis sur ma page principale on dirait qu'il ne veut pas récupérer l'avatar(1.png) de l'utilisateur(id=1).
L'avatar s'affiche uniquement si je vais sur ce lien : https://www.monsite.com/index.php?id=1
Or, moi je voudrais que l'avatar s'affiche en fonction de l'utilisateur connecté sur ce lien : https://www.monsite.com/
PS : je mets www."monsite".com parce que je préfère garder mon site privé pour le moment, ce n'est pas contre vous. ^^ et je ne test pas mon site en localhost, je test directement sur internet
Ca fait 4 jours que je suis sur ce problème et je commence a désespérer :(
Galaktor Le 31 janvier 2018 à 20:52 (Édité le 31 janvier 2018 à 20:54)
En fait j'ai essayé ce code :
<div align="center" class=iconuser>
<img src="account/avatars/<?= $_SESSION['id'] ?>" />
</div>
Ça fonctionne très bien sauf que le soucis, c'est qu'il n'affiche pas le format de l'image ou l'extension comme vous préférez.
Au lieu d'avoir : https://www.monsite.com/account/avatars/1.png
j'ai : https://www.monsite.com/account/avatars/1
Si vous avez une solution pour ça je suis preneur ^-^
Balatharas Le 1 février 2018 à 14:17 (Édité le 1 janvier 1970 à 01:00)
foreach($_GET as $key => $value) {
$get[$key] = trim(strip_tags($value));
}
$req = $bdd->prepare('SELECT * FROM membres WHERE id = ?');
$req->execute([$get['id']]);
if($req->rowCount() == 0) {
header('Location: index.php');
}
$infosUsr = $req->fetch();
var_dump($infosUsr);
Envoie un screen de ce que ca te donne Galaktor Le 1 février 2018 à 15:30 (Édité le 1 janvier 1970 à 01:00)
et mon code en haut de la page c'est ça :
<?php
session_start();
$bdd = new PDO('mysql:host=db****.db.1and1.com;dbname=db***', 'dbo***', '***');
foreach($_GET as $key => $value) {
$get[$key] = trim(strip_tags($value));
}
$req = $bdd->prepare('SELECT * FROM membres WHERE id = ?');
$req->execute([$get['id']]);
if($req->rowCount() == 0) {
header('Location: index.php');
}
$infosUsr = $req->fetch();
var_dump($infosUsr);
?>
Balatharas Le 1 février 2018 à 15:34 (Édité le 1 janvier 1970 à 01:00)
if($req->rowCount() == 0) {
header('Location: index.php');
}
Par ça
if($req->rowCount() == 0) {
// header('Location: index.php');
var_dump($_SESSION['id']);
die('Row = 0');
}
Galaktor Le 2 février 2018 à 13:40 (Édité le 1 janvier 1970 à 01:00)
string(1) "9" Row = 0
Donc voila, ca fait ouais 6 jours que je suis sur ce soucis a essayer de trouver une solution pour afficher un simple petit avatar mais ca ne donne rien, j'ai écrit sur plusieurs forum, cherché pendant des heures, et en vrai la j'abandonne j'en ai ma claque, c'est pas grave, il n'y aura pas d'avatar ^^
Balatharas Le 3 février 2018 à 16:12 (Édité le 3 février 2018 à 22:27)
Ajoute moi sur discord pour parler, ce sera plus simple @Balatharas#9105
Profil introuvable Le 5 février 2018 à 20:34 (Édité le 1 janvier 1970 à 01:00)
j'imagine que ton site est structuer comme sa:
site:
public
avatars
src
index.php
dans ton index.php
define("AVATARS", dirname(__DIR__)."/public/avatars");
maintenant dans ta page de login<img src="<?= AVATARS."{$userinfos['avatar']}" ?>">