IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Fatal error: Call to undefined function apache_request_headers()


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 189
    Par défaut [Tableaux] Fatal error: Call to undefined function apache_request_headers()
    Bonjour,

    le programme en question marchait en local, mais depuis que je l'ai mis sur un serveur IIS, ca marche plus, peut être j'ai mal configuré le serveur...

    Fatal error: Call to undefined function apache_request_headers() in D:\www\change_val\change_val.php on line 5

    voici le code source:

    <?php

    session_start();

    $headers = apache_request_headers(); // Récupération des l'entêtes client

    if (@$_SERVER['HTTP_VIA'] != NULL)// nous verifions si un proxy est utilisé : parceque l'identification par ntlm ne peut pas passer par un proxy
    {
    echo "Proxy bypass!";
    }
    elseif(!isset($headers['Authorization']))
    { //si l'entete autorisation est inexistante
    header( "HTTP/1.0 401 Unauthorized" ); //envoi au client le mode d'identification
    header( "WWW-Authenticate: NTLM" ); //dans notre cas le NTLM
    exit; //on quitte
    }

    if(isset($headers['Authorization'])) //dans le cas d'une authorisation (identification)
    {
    if(substr($headers['Authorization'],0,5) == 'NTLM '){ // on vérifie que le client soit en NTLM

    $chaine=$headers['Authorization'];
    $chaine=substr($chaine, 5); // recuperation du base64-encoded type1 message
    $chained64=base64_decode($chaine); // decodage base64 dans $chained64

    if(ord($chained64{8}) == 1){
    // |_ byte signifiant l'etape du processus d'identification (etape 3)

    // verification du drapeau NTLM "0xb2" à l'offset 13 dans le message type-1-message (comp ie 5.5+) :
    if (ord($chained64[13]) != 178){
    echo "NTLM Flag error!";
    exit;
    }

    $retAuth = "NTLMSSP".chr(000).chr(002).chr(000).chr(000).chr(000).chr(000).chr(000).chr(000);
    $retAuth .= chr(000).chr(040).chr(000).chr(000).chr(000).chr(001).chr(130).chr(000).chr(000);
    $retAuth .= chr(000).chr(002).chr(002).chr(002).chr(000).chr(000).chr(000).chr(000).chr(000);
    $retAuth .= chr(000).chr(000).chr(000).chr(000).chr(000).chr(000).chr(000);

    $retAuth64 =base64_encode($retAuth); // encode en base64
    $retAuth64 = trim($retAuth64); // enleve les espaces de debut et de fin
    header( "HTTP/1.0 401 Unauthorized" ); // envoi le nouveau header
    header( "WWW-Authenticate: NTLM $retAuth64" ); // avec l'identification supplémentaire
    exit;

    }

    else if(ord($chained64{8}) == 3){
    // |_ byte signifiant l'etape du processus d'identification (etape 5)

    // on recupere le domaine
    $lenght_domain = (ord($chained64[31])*256 + ord($chained64[30])); // longueur du domain
    $offset_domain = (ord($chained64[33])*256 + ord($chained64[32])); // position du domain.
    $domain = str_replace("\0","",substr($chained64, $offset_domain, $lenght_domain)); // decoupage du du domain

    //le login
    $lenght_login = (ord($chained64[39])*256 + ord($chained64[38])); // longueur du login.
    $offset_login = (ord($chained64[41])*256 + ord($chained64[40])); // position du login.
    $login = str_replace("\0","",substr($chained64, $offset_login, $lenght_login)); // decoupage du login

    if ( $login != NULL){
    // stockage des données dans des variable de session
    $_SESSION['Login']=$login;
    header("Location: change_val2.php");
    exit;
    }
    else{
    echo "NT Login empty!";
    }


    }
    }

    }

    ?>

  2. #2
    Membre Expert
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Par défaut
    Ca me semble tellement évident et tu as répondu toi même au probléme dans ton énoncé

    Apache != IIS

    apache_request_headers

    (PHP 4 >= 4.3.0, PHP 5)
    apache_request_headers -- Récupère tous les en-têtes HTTP de la requête
    Description
    array apache_request_headers ( void )

    Récupère tous les en-têtes HTTP de la requête.

    Cette fonction n'est supportée que si PHP est installé en tant que module d'Apache.
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 189
    Par défaut
    ok mais comment on peut faire marcher ca sous IIS?? y a une fonction qui la remplace??

    merci

  4. #4
    Membre Expert
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Par défaut
    Un peu de recherche et de lecture de la doc n'a jamais fait de mal

    http://fr.php.net/manual/fr/function...st-headers.php
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 189
    Par défaut
    c'est ce que je voulais faire mais chaque fois que je suis allé sur la manuel php, page introuvable, la ca marche... j'avais donc un mauvais lien...

    je vais voir

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 189
    Par défaut
    ca me dit pas grand chose, y a rien qui explique comment avoir les headers avec IIS

  7. #7
    Membre Expert
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Par défaut
    Et avec ça non ?

    Vous pouvez aussi obtenir les valeurs des variables CGI communes en les lisant dans l'environnement, ce qui fonctionne, que vous soyez ou non en module Apache. Utilisez la fonction phpinfo() pour connaître la liste des variables d'environnement disponibles
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 189
    Par défaut
    non ca ne m'aide pas... Je vois pas comment recuperer le login utilisateur ou je suis connecté dans les variables d'environnement

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 189
    Par défaut
    comment on recupere une variable d'environnement?

    merci

  10. #10
    Membre Expert
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Par défaut
    Citation Envoyé par Alain15
    comment on recupere une variable d'environnement?

    merci
    Tu fais phpinfo() dans un fichier, tu notes le nom des variables qui t'intéresse et tu te sers de $_SERVER['ta var']
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 189
    Par défaut
    ben j'ai recuperer les entetes de la meme facon que $headers = apache_request_headers();

    mais ca marche pas alors que le tableau contient les meme données...

    --------------------
    sinon j'aimerai savoir ou je peux voir le code source de la fonction apache_request_headers();

    merci de votre aide

Discussions similaires

  1. Fatal error: Call to undefined function: () in
    Par Shyboy dans le forum Langage
    Réponses: 10
    Dernier message: 10/07/2006, 21h43
  2. [XML] [XSLT] Fatal error: Call to undefined function xslt_create()
    Par fadex dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 05/07/2006, 13h34
  3. Réponses: 3
    Dernier message: 13/05/2006, 16h48
  4. Réponses: 3
    Dernier message: 21/03/2006, 15h21
  5. Réponses: 11
    Dernier message: 08/12/2005, 17h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo