Salut a tous ! voila j'ai u petit souci avec les redirections en php puisque j'utilise une reecriture d'url du coup ca plante a chaque que j'essai de faire quelque chose du genre
header('location:/index');
Merci
Ben c'est logique en plaçant /index ca va te rediriger vers ton domaine/index.
Si ton routing n'est pas réalisé de la sorte, ben c'est pas gagné.
Si tu veux rester dans le même répertoire met juste : index
Si tu veux remonter d'un : ../index
Si tu veux carrement ailleur : /dossier-site/ailleur/index
merci. je teste et je fais un retour mais néanmoin je vous presente le code de mon htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
Alors déjà pour que le code fonctionne logiquement :
<?php
header('Location:index.php');
?>
Cela devrait marcher car tu as mis /index qui redirige dans le dossier "index" et non le fichier index.php, fin je crois que c'est ça l'erreur..
Perso, je mets toujours l'URL complète dans mes redirections !
<?php
header('Location: http://www.mondomaine.com/');
De plus après ta redirection, n'oublie pas de mettre un exit; car il se peut que ton script continu de tourner un peu.
EDIT : et surtout il ne faut pas faire d'affichage avant ton header() sinon ça génére une erreur aussi.
JeremDevWeb exactement je dis que j'ai fichier htaccess. j'ai tester la solution de JacobDelCroix et ca marche seule probleme c'est que mon message flash ne marche pas voila le code
<?php
class Session{
public function __construct(){
session_start();
}
public function setFlash($message,$type = 'success'){
$_SESSION['flash'] = array(
'message'=>$message,
'type' => $type
);
ob_start();
$render = $_SESSION['flash']['message'];
require root.ds.'app'.ds.'Vues'.ds.'Elements'.ds.$_SESSION['flash']['type'].".php";
$_SESSION['flash']['message'] = ob_get_clean();
}
public function flash(){
if (isset($_SESSION['flash'])) {
echo $_SESSION['flash']['message'];
unset($_SESSION['flash']);
}
}
}
lorsque je fais $session->flash() il devrait normalement me retourner les message flash mais il ne le fais pas a cause de la redirection or moi j'aimerai bien avoir le message apres la redirection et lorsque j'actualise la page que le message disparaisse
Tu n'as pas oublié le exit; après ton header() ? Sinon fait nous voir le code qui enregistre le message flash et qui redirige aussi.
voila
$this->Session->setFlash("Nous avons bien recu votre demande !","success");
var_dump(header("Location: index"));
exit;
Oups pardon j'avais completement oublier de l'enlever mais meme sans le probleme demeure
Hello,
Il va falloir que tu commences à être un peu plus précis, car ca devient vachement fouilli !
As-tu des messages d'erreurs => si oui lesquelles?
Comment/sur quels fichiers tu gères ton setFlash(), redirection et flash() ?
N'hésite pas à non montrer l'architecture de ton projet, pour qu'on vérifie si tout existe. (écrit bien les noms de fichiers tels qu'ils sont)
ok, bon ca marche.
j'ai mon sur ma page contact sur lequel j'ai un formulaire et lorsque le formulaire est envoye je creer mon message flash ensuite je redirige
voila le code de mon controller
class PagesController extends Controller{
public function index(){
}
public function formulaire(){
// validation des donnees
$this->Form->name('name')->required();
$this->Form->name('creation')->required();
$this->Form->name('email')->required();
$this->Form->name('tel')->required()->alfa();
if ($this->isPost()){
if (isset($this->data['logo']['name'])) {
//validation et enregistrement du fichier
if ($this->Form->extensionFichier($this->data['logo'],['.jpg','.jpeg','.png','.psd','.psb','.gif'])){
$this->Form->deplaceFichier($this->data['logo']);
$email = new Email();
print_r($email);
$f = $this->data['logo']['name'];
$email->setTo('amani.jose@outlook.fr', 'Recipient 1')
->setSubject('Test Message')
->setFrom('sender@gmail.com', 'Mail Bot')
->addMailHeader('Cc', 'mramanijose@gmail.com', 'Bill Gates')
->addGenericHeader('X-Mailer', 'PHP/' . phpversion())
->addGenericHeader('Content-Type', 'text/html; charset="utf-8"')
->addGenericHeader('Content-Transfert-Encoding', 'base64')
->addGenericHeader('Content-Disposition', "attachment; filename='$f'")
->EmailVars($this->data)
->setMessage('test')
->addAttachment($this->data['logo']['name']);
$send = $email->send();
if ($send) {
echo 'mail ok';
}else{
echo "no ok";
}
//la je cree mon message flash
$this->Session->setFlash("Nous avons bien recu votre demande !","success");
header("Location:index");exit;
}
}
}
ensuite j'affiche le message flash dans ma vue grace a ce code (j'ai deja balance le code de ma classe qui gere les messages flash plus haut)
<?php $this->Session->flash(); ?>
le probleme c'est que lorsque la redirection est effectuer le message flash n'est pas affiche.
Merci
essayes un extract de $_SESSION['flash']['message']; et affiches le avant de détruire la session flash ;)
Comme je te l'ai déjà dit ne pas faire de l'affichage AVANT ta redirection... Donc tu peux enlever tes echo, print_r et autres ! De plus je te conseille de mettre une vraie URL dans ton header() !
SquallX je ne comprend pas bien ta solution tu peux reexplique avec du code ? STP
JacobDelcroix je ne fais aucun affichage avant la redirectio je mes juste mon message en session avant de rediriger. pour l'url elle marche bien et me redirige sur la bonne page
$message = extract($_SESSION['flash']['message']);
echo $message;
http://php.net/manual/fr/function.extract.php
Lis la doc. Ca fait pas de mal ;)
je ne pense pas que le problem vienne du print_r meme quand je le retire c'est pareil.
loOl SquallX c'est compris mais si j'utilise extract une fois redirige la variable disparait :(
Si tu supprimes tout ce qui concerne l'envoie d'une email et que tu testes, tu as ta redirection avec ton flash ou non ?
Tu dois mettre ce que SquallX ta donné dans la page index
Quand je fais ce que SquallX a demander sur la page index j'ai cette erreur
Details
Type: ErrorException
Code: 2
Message: extract() expects parameter 1 to be array, string given
File: E:\EasyPHP\data\localweb\Powercom\app\Vues\Pages\index.php
Line: 69
Trace
je ne sais pas ce j'ai touche mais je crois qu'il c'est decide enfin a marche !!!! MERCI A TOUS POUR VOS AIDES SANS VOUS JE N'Y SERAI PAS ARRIVE !!! THANK YOU FOR ALL !!!