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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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

Discussions similaires

  1. Fatal error: Call to undefined function: () in
    Par Shyboy dans le forum Langage
    Réponses: 10
    Dernier message: 10/07/2006, 20h43
  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, 12h34
  3. Réponses: 3
    Dernier message: 13/05/2006, 15h48
  4. Réponses: 3
    Dernier message: 21/03/2006, 14h21
  5. Réponses: 11
    Dernier message: 08/12/2005, 16h54

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