Rediriger vers 403 ou 404

Avatar du membre
Eléphant du PHP | 224 Messages

04 févr. 2017, 17:47

Hello :)

Voilà ,je fais un petit script dans lequel je veux afficher le résultat si l'ip du visiteur est valide.

Code : Tout sélectionner

$yourip = $_SERVER["REMOTE_ADDR"]; if ( $yourip == '127.0.0.1' || $yourip == '212.34.56.78' || $yourip == '212.41.98.97' || strpos($yourip, "192.168.") !== false ) { $ipok = 1;} else {$ipok = 0;} if ($ipok == 1) { Mon script }
A noter que les ip ici sont à titre d'exemple.

Je voudrais rajouter que dans le cas d'une ip qui n'est pas valide, ca jete le visiteur vers 403 ou 404.

j'ai tenté en ajoutant

Code : Tout sélectionner

else { header('HTTP/1.0 403 Forbidden'); }
Evidement, ca ne marche pas lol

La solution du .htaccess ne m’intéresse pas car je veux que le script reste un fichier seul, entre autres.

Merci pour vos astuces :)
Couin
Un Couin vaut mieux que Deux tu couineras :D
Retrouvez-moi tous les dimanches soir à 22H pour un mix live au vinyle sur eurodance90.fr :mrgreen:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 févr. 2017, 11:53

salut,

ajoute un location vers une page d'erreur perso.
garde l'entête c'est bien, par contre http 1.1 stp ;)

@+
Il en faut peu pour être heureux ......

Avatar du membre
Eléphant du PHP | 224 Messages

07 févr. 2017, 04:40

Hello,

Merci pour ta réponse :)

A vrai dire, je ne sais pas à quoi correspond l'entete (http 1.0 ou 1.1), j'avais recopié la ligne sans trop chercher à piger (pataper, pataper lol)

Effectivement, je pourrais faire une redirection directe vers la page d'erreur 403 , mais le script n'est plus vraiment portable si celui qui l'applique n'a pas les pages d'erreur au même endroit .

Merci pour ton aide :)
Un Couin vaut mieux que Deux tu couineras :D
Retrouvez-moi tous les dimanches soir à 22H pour un mix live au vinyle sur eurodance90.fr :mrgreen:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

07 févr. 2017, 10:42

Bonjour,

Le header va juste donner une indication en entête de la réponse mais c'est à toi d'afficher ce que tu veux.

Donc après ton header, tu peux faire un echo du texte que tu veux pour expliquer pourquoi l'accès est interdit.
Mon conseil est également d'utiliser un die() après ton texte pour être sûr que ton script arrête bien son exécution après le message d'erreur.
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Eléphant du PHP | 224 Messages

08 févr. 2017, 05:47

Hello,

Oui, je pourrais très bien faire un echo, pour afficher un texte ( ce que je fais sur d'autres parties du script), mais j'aurais plutôt voulu que ca renvoie vers l’erreur 404 (ou 403, au choix) réelle (pas une redirection vers http://nomdedomaine/errors/404.html car le script n'est alors plus portable).

Toutes mes googleries m'amènent à la même solution ( header('HTTP/1.x 404 Not found'); ) mais je ne comprends pas comment chez les autres ça marche (vu que c'est ce qu'ils conseillent) alors que moi (et pas mal d'autres apparemment) non :(

Merki :)
Un Couin vaut mieux que Deux tu couineras :D
Retrouvez-moi tous les dimanches soir à 22H pour un mix live au vinyle sur eurodance90.fr :mrgreen:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

08 févr. 2017, 10:50

salut,

tu n'as pas le choix, l'entête n'est qu'informatif, au mieux le navigateur affichera sa page d'erreur à lui.

si tu veux quelque chose qui mène vers une page correcte indiquant l'erreur il faut soit afficher un message (echo) soit rediriger vers cette page (header).

Sais tu qu'il est possible d'utiliser la concaténation pour créer l'url de redirection ?
si tu fais quelque chose de (re) distribuable tu peux (dois) avoir des options de configurations. du coup une constante contenant l'emplacement du fichier 404 perso ne semble pas déconnant (par exemple : define('404_URL','/pages/404.html'); ).

A partir du moment où tu ne maîtrise pas une chose à l'exploitation, mais qu'elle est nécessaire il faut prévoir une option de configuration.

tu peux aussi prévoir une fonction qui placera l'entête et la redirection histoire que cela soit réutilisable (et éviter d'avoir 10 façon ésotérique de faire cette redirection ;) ).

@+
Il en faut peu pour être heureux ......

Avatar du membre
Eléphant du PHP | 224 Messages

08 févr. 2017, 23:25

Hello :)

Merci pour ta réponse.

Qu'entends tu par "concaténation" ?

Merci
Couin
Un Couin vaut mieux que Deux tu couineras :D
Retrouvez-moi tous les dimanches soir à 22H pour un mix live au vinyle sur eurodance90.fr :mrgreen: