[RESOLU] fonction hs avant redirections

Eléphant du PHP | 183 Messages

11 nov. 2015, 12:25

Salut à tous !
J'ai un problème pour script qui fait une fonction mais si j'ajoute une redirection la fonction n'est plus fonctionnelle.
Du code =>

Code : Tout sélectionner

<?php require 'function.php'; if (isset($_POST['bp_go_chat'])) { $users2=$_POST['choisir_user']; $users=$_GET['users']; $lang=$_POST['lang']; //Si user aléatoire (0) if ($users2=='0') { $users2 = rand_user($lang); envois_notif_chat($users2,$users); if (envois_notif_chat($users2,$users)==true) { header('Location: ./chat.php?users='.$users.'&users2='.$users2.''); } } else { if (envois_notif_chat($users2,$users)==true) { header('Location: ./chat.php?users='.$users.'&users2='.$users2.''); } } //header('Location: chat.php?users='.$users.'&users2='.$users2.''); } ?>
J'ai testé la fonction envois_notif_chat seul elle fait bien son boulot, mais dès que je la remets dans la page de traitement_chat.php qui doit provoquer une notification chez l'autre utilisateur pour l'appeler (se qui fonctionne), en ensuite rediriger l'users en cours vers ce fameux chat (qui marche aussi) et bien la fonction n'est plus exécuté. J'ai testé l'inverse aussi la fonction sans redirection et la elle marche, mais l'users n'est pas rediriger vers le chat comme voulut...

Je vois plus quoi faire là, je sais que c'est la redirection qui pose problème mais faut bien que je la fasse, tout comme la fonction avant....

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

11 nov. 2015, 15:35

Bonjour,

Il faut toujours faire suivre la fonction header() d'un die() ou exit; pour être sûr qu'aucun code HTML n'est envoyé ensuite.
Par ailleurs, vérifie bien que tu n'as pas de code HTML ni d'espace qui est envoyé avant ta balise <?php
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 183 Messages

11 nov. 2015, 15:42

Salut @rthur, merci pour le coup de main, mais j'avais déjà mis exit; après redirections mais c'était pareil.
Sinon pour le html, y a rien avant et après ce code php qui est tous seul sur la page traitement_select_chat.php (qui traite un formulaire sur une page d'accueil), en fait si je supprime le header, la fonction envois notif fonctionne (l'autre users reçoiçt bien une notif) et dès que je rajoute le header car c'est le but après cette fonction , la redirection se fait bien sans message d'erreur, mais ne fait pas la fonction envois_notif...
D'ailleur la 1ere fonction appelé (rand) elle à le temps de paaser car j'ai bien le resultat dans header après, mais pas la 2eme fonction...
avec ta modif =>

Code : Tout sélectionner

<?php require 'function.php'; if (isset($_POST['bp_go_chat'])) { $users2=$_POST['choisir_user']; $users=$_GET['users']; $lang=$_POST['lang']; //Si Jaaser aléatoire (0) if ($users2=='0') { $users2 = rand_user($lang); envois_notif_chat($users2,$users); if (envois_notif_chat($users2,$users)===true) { header('Location: ./chat.php?users='.$users.'&users2='.$users2.''); die(); } } else { envois_notif_chat($users2,$users); if (envois_notif_chat($users2,$users)===true) { header('Location: ./chat.php?users='.$users.'&users2='.$users2.''); die(); } } //header('Location: chat.php?users='.$users.'&users2='.$users2.''); } ?>

Eléphant du PHP | 183 Messages

11 nov. 2015, 19:12

J'ai trouvé après autant d'heure à tourner autour du pot !!!
En fait quand j'avais créé ma fonction envois_notification_chat, j'avais aussi créé la fonction reset_notification_chat pour pas que l'user appelé est une notification qui continuerai à s'afficher en arrivant sur chat, mais quel C..., ce qui fait que l'users (1 on va dire) envois une notif et aussitôt arrivé sur la page la reset, donc l'users ne risquait pas d'avoir le temps de la recevoir......Je sais toujours pas pourquoi je suis venu coller la fonction reset a cet endroit, des fois faudrait mieux aller tricoter des écharpes
Merci tout de même .
a bientôt et merci !