Aide petite fonction PHP "débutante"

Fermé
llune52 Messages postés 2 Date d'inscription jeudi 27 novembre 2014 Statut Membre Dernière intervention 28 novembre 2014 - Modifié par llune52 le 27/11/2014 à 14:21
AnisSERRAFI Messages postés 7 Date d'inscription vendredi 27 juin 2014 Statut Membre Dernière intervention 29 novembre 2014 - 29 nov. 2014 à 19:06
Bonjour,

Je suis en train de mettre en place un site Wordpress avec une identification a l'ouverture.
J'ai donc trouvé un super tutoriel ( https://www.youtube.com/watch?v=FjTNLGg7tsU ou je dois intégrer une fonction qui intercepte la première fonction par le site pour intégrer ma page de connexion.

Le fonction est la suivante :

add_action( 'send_headers' ,'site_router');

function site_router(){

$root = str_replace('index.php','',$_SERVER['SCRIPT_NAME']);
$url = str_replace($root ,'',$_SERVER['REQUEST_URI']);
$url = explode ('/',$url);
if(count($url) == 1 && $url[0] =='login'){
require 'tpl-login.php';
}
}

Cette fonction fonctionne très bien a partir du moment que le Request URI et SCRIPT NAME contienne le chemin de la base comme dans l'exemple si dessous :



Ce qui me pose problème c'est que lorsque je lance mon site qui est hébergé, j'ai ceci : REQUEST_URI => /
SCRIPT_NAME => /index.php



Donc ma fonction ne fonctionne pas.
Si quelqu'un peut il me trouver une solution ?? sa serait super !!
A voir également:

5 réponses

AnisSERRAFI Messages postés 7 Date d'inscription vendredi 27 juin 2014 Statut Membre Dernière intervention 29 novembre 2014 1
27 nov. 2014 à 16:41
Bonjour Llune, dans la racine du serveur crée un dossier home.php, quand tu vas ouvrir ton site il ne va pa démarré de index.php qui se trouve dans la racine du serveur, il va commencer par home.php qui deviendra page d'indexation au lieu de index.php maintenant dans ton fichier home.php tu crée ton formulaire d'authentification normalement en php en utilisant la methode header(Location:...

qui renvoi vers le fichier inde.php si l'authentification est OK sinon un message d'erreur au niveau du formulaire c'est à dire dans la page home.

Bon courage, je me présente Anis SERRAFI (Ingénieur marocain de l'université de Nancy 2) spécialiste php, je suis du Maroc.

Voici une chose que t'as appri c'est que quand tu place un fichier home.php et index.php à la racine du serveur pour wordpress il fait passer le home.php comme index non pas le index.php sinon pour le formulaire d'authentification en php qu'il va falloir mettre dans la page home si tu n'arrive pas à le faire dit le moi je te suit.

Bon courage.
0
AnisSERRAFI Messages postés 7 Date d'inscription vendredi 27 juin 2014 Statut Membre Dernière intervention 29 novembre 2014 1
27 nov. 2014 à 17:00
juste pour information je voulais dire la racine du serveur c'est à l'intérieur du theme que t'a choisi c à d

wp-content/themes/NOM_DE_TON_THEME/home.php

c'est la ou tu dois mettre le fichier home.php

Bonne chance
0
llune52 Messages postés 2 Date d'inscription jeudi 27 novembre 2014 Statut Membre Dernière intervention 28 novembre 2014
28 nov. 2014 à 10:45
Bonjour Anis,

Je te remercie pour ton aide, ta méthode a l'air de vouloir fonctionner.
J'ai juste un petit problème c'est au niveau de l'identification.
Bizarrement il me connecte mais il ne me redirige pas.
il me laisse sur une page blanche lorsque je valide mes identifiants.
Si quelqu'un a une idée d'où peut venir le problème ....

j'utilise la fonction wp-signon.

<?php

$error = false;
if(!empty($_POST)){
$user = wp_signon( $_POST);
if(is_wp_error($user)){
$error = $user->get_error_message();

}else{
die('Success');
}
}


?>


<?php get_headers();?>

<h1>Se connecter </h1>

<?php if($error):?>
<div class="error">
<?php echo $error; ?>
</div>
<? endif ?>


<form action= "<?php echo $_Server['REQUEST_URI']; ?>" method="post">

<label for ="user_login">VOTRE LOGIN</label>
<input type="text" name="user_login" id="user_login">

<label for ="user_password"> Votre mot de passe</label>
<input type="text" name="user_passexord" id="user_password">

<input type ="checkbox" name="remember" id="remember" value="1">
<label for= "remember"> Se souvenir de moi</label>

<input type="submit" value="Se connecter">


</form>


<?php get_footer(); ?>
0
AnisSERRAFI Messages postés 7 Date d'inscription vendredi 27 juin 2014 Statut Membre Dernière intervention 29 novembre 2014 1
29 nov. 2014 à 18:52
Bonjour LLUNE,

pour la redirection essaye de la forcer c à d

j'utilise la fonction wp-signon.

<?php

$error = false;
if(!empty($_POST)){
$user = wp_signon( $_POST);
if(is_wp_error($user)){
$error = $user->get_error_message();

}else{
die('Success');

/* si le code est bon */

/* REDIRECTION VERS CHEMIN ABSOLU */


echo '<script language="Javascript">

document.location.replace("https://www.domainecarneros.com/");

</script>';


/* FIN REDIRECTION VERS CHEMIN ABSOLU */


}
}


?>

------------------------------------------------------------------------------------------------
Note Bien que :

En wordpress l'URL d'une page web s'appel LE PERMALIEN (voir photo ci-dessous)



Donc le https://www.domainecarneros.com/ ne va pas fonctionner il affichera une page blanche c'est le permalien qui va fonctionner dans cette exemple le permalien est comme tu as pu le constater :

http://annexa.ma/ambassadeur-ben-aicha/

Essaye te prendre le permalien de ta page d'accueil depuis wordpress et met le à la place de https://www.domainecarneros.com/

Dit moi par après si ca marche.

Bon courage LLUNE
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
AnisSERRAFI Messages postés 7 Date d'inscription vendredi 27 juin 2014 Statut Membre Dernière intervention 29 novembre 2014 1
29 nov. 2014 à 19:06
Rebonjour LLUNE,

la fonction en php header("Location:...."); ne marche pas avec des chemins absolues les chemins absolus c à d toute l'URL comme

https://www.domainecarneros.com/

La solution c'est d'utiliser la redirection en javascript comme le code que je t'ai donné au dessus pour la redirection.

Donc le probleme ne peut venir que de ca ou du permalien.
0