Bonjour,
j'ai essayé de reproduire de portfolio comme dans le tuto de grafikart mais la je bloque, j'ai tout écrit comme il faut mais mon header('Location:') ne marche pas.
Mon code :

checkCsrf();
 $id = $db->quote($_GET'delete']);
 $db->query("DELETE FROM category WHERE id=$id");
 setFlash('La categorie a bien été suprimée');
 header('Location:category.php');
 die();

et j'ai aussi un problème avec une condition :
mon code :

if (isset($_POST'name']) && isset($_POST'slug'])) {
    $slug = $_POST'slug'];
    if(preg_match('/^[a-z0-9\-]+$/', $slug)){
        $name = $db->quote($_POST'name']);
        $slug = $db->quote($_POST'slug']);
    }else{
        setFlash('Le slug n\'est pas valide', 'error');
    }
}

12 réponses


Vallyan
Réponse acceptée

Je sais pas quoi te dire. Tu as des problèmes sur des codes de 1 lignes, qui marchent très bien chez moi:
si je teste

header('location:index.html');

je suis bien redirigé vers le fichier en question, et si je teste

if( preg_match('/^[a-z0-9\-]+$/', $slug) ){
    echo "toto";
} else {
    echo "kiki";
}

j'ai bien un if et un else qui marchent parfaitement bien.

Simplifie ton code au maximum jusqu'a ce que ca marche, et ajoute des lignes de code supplémentaire en vérifiant bien systématiquement que c'est bon ... Vérifie aussi que tu as bien l'affichage de tes erreurs php qui s'affichent.

Imillix
Auteur

Non, c'est le début de ma page.

1/ T'as essayé en rajoutant un espace apres les deux point de ton header ?
2/ Combien de fois faudra-t-il dire que "J'ai un probleme" c'est pas suffisant ???? C'est quoi le probleme ? tu attends quoi ? tu as quoi ? quel message ? qu'as-tu essayé ? Ca parait évident a personne, ca ?

Peux tu nous donner tes erreurs ?

Imillix
Auteur

Ok, je vais essayer d'être plus clair :
quand je j'écrit mon header location puis mon die, mon adresse ne change pas, c'est comme si il oublié le header location car ma page reste blanche vu que j'ai un die(); juste après.

Et pour la condition (car j'ai modifié le sujet pour ne pas en créer 2) tout ce qui à dans le else n'est pas pris en conte alors que je fais une erreur.

Imillix
Auteur

Je viens d'essayer et cela ne marche toujours pas ...

Pour ce qui est de ta condition, la syntaxe du pregmatch est correcte, donc s'il ne fait pas ce que tu veux c'est que ta regex est mal construite ou que tu ne lui passe pas les arguments que tu pense lui passer. Que veux-tu vérifier, et quels sont les arguments exactement ?

Imillix
Auteur

Je voudrais vérifier que le slug est bien un slug, c'est à dire que il ne contient que des minuscules, des tirets et des chiffres.

ben ca devrait fonctionner, ta regex est bonne pour ce que tu décrit. Donne un exemple d'un $slug qui ne marche pas ? (et qui devrait fonctionner)

Imillix
Auteur

le slug : mon-site

mais ce n'est pas le slug le problème, c'est que le setFlash n'est pas pris en compte.

Arf, pardon j'avais mal lu :/
Si tu fait un

echo "kiki"; die();

a la place de ton set flash, tu l'affiches ? En d'autres termes, le problème c'est le setFlash, ou tu es sur que c'est le else ? Parce qu'il peut y avoir des raisons pour que le setFash marche en général mais pas dans ce cas particulier. Donc il faut etre sur si c'est le setFlash, ou le else qui n'est jamais executé.

Imillix
Auteur

Non, le " kiki" ne s'affiche pas donc je penses que c'est le else qui a un problème