Bonjour,

Voila je rencontre un petit problème avec mon code.

En local , mon code fonction très bien mais ne fonctionne pas en ligne.

Décrivez ici votre code ou ce que vous cherchez à faire
<p><?php
include 'header.php';

if(isset($_SESSION['art'])){
header('Location: /Enregistrement_artisan.php');

}
if(!empty($_POST) && !empty($_POST['boutique']) && !empty($_POST['password'])){
$boutique=addslashes($_POST['boutique']);
$teq =$pdo->prepare("SELECT * FROM nouveauartisan WHERE (bout_name='$boutique' OR courielArtisan = '$boutique') AND validation='actif'");
$teq->execute(['$boutique']);
$bout = $teq->fetch();
if($bout){
if(password_verify($_POST['password'], $bout->password)){
$_SESSION['art'] = $bout;
header('Location: /Enregistrement_artisan.php');

}else{
$_SESSION['erreurs']= 'erreur de données';
header('Location: /Enregistrement_artisan.php');

}

}else{

   $_SESSION['erreurs']= "Aucune boutique ne correspond ou votre compte n'est encore activé. si ce n' est déjà fait veuillez vous inscrire. ";
    header('Location: /Enregistrement_artisan.php');
}

}else{
$_SESSION['erreurs']="veuillez remplir correctement le formulaire";
header('Location: /Enregistrement_artisan.php');

}

?></p>

Entourez votre code pour bien le mettre en forme

En ligne si je soumets le formulaire, je n'ai pas de retour j'ai juste une page blanche. normalement ca doit revenir sur Enregistrement_artisan.php .Mais ca reste sur cette page.

Décrivez ici ce que vous cherchez à obtenir

c'est comme si le ' header('Location: /Enregistrement_artisan.php');' ne fonctionne pas. J'ai autre code qui doit envoyer de mail mais ca ne fonctionne pas.

Décrivez ici vos erreurs ou ce que vous obtenez à la place de ce que vous attendez :(
Quelqu'un a une idée de la raison pour laquelle ça ne fonctionne pas? merci.

5 réponses


Je dirais que tout simplement en local tu as le output_bufering d'activer et en ligne il n'y ai pas (ce qui est bien). Du coup le moindre affichage (html, espace blanc, echo) provoque une sortie d'affichage et empêche l'utilisation du header (à moins d'avoir l'output_buffering d'activé ce qui n'est pas bien je trouve).

https://www.grafikart.fr/tutoriels/headers-already-sent-871

ouatoo
Auteur

Merci pour ton aide , mais le problème demeure. Même les réquettes ajax ne se rendent pas. Pourtant ca fonctionne en local.

Bonsoir.
Pour ma part, ça m'étonne que ta requête SQL puisse fonctionner ne serait-ce qu'en local, car :

$teq->prepare("SELECT * FROM nouveauartisan WHERE (bout_name='$boutique' OR courielArtisan = '$boutique') AND validation = 'actif'");
$teq->execute(['$boutique']);

Car tu ne sembles pas savoir comment fonctionne les requêtes préparées, le code précédent devrait plutôt ressembler à :

$teq->prepare("SELECT * FROM nouveauartisan WHERE (bout_name = :boutique OR courielArtisan = :boutique) AND validation = 'actif'");
$teq->execute(['boutique' => $boutique]);

D'ailleurs c'est plutôt ça je pense ^^ :

$req = $teq->prepare('Ta requête');
$req->execute([/* values */]);

Après sur la version en ligne il faudrait activer les erreurs le temps de voir car je pense qu'il y a d'autre soucis.

ouatoo
Auteur

Merci, et pourtant mon code fonctionne bien tel quel local.