2010-09-30 7 views
1

Quelle serait la méthode la plus simple pour savoir si PHP a été invoqué via un POST par exemple et non depuis html (sous un webbroser)Comment savoir si PHP s'exécute sous un navigateur ou a été appelé comme un script autonome

Merci,

+0

duplication possible de [Quelle est la façon canonique de déterminer l'exécution de la ligne de commande par rapport à http d'un script PHP?] (Http://stackoverflow.com/questions/173851/what-is-the-canonical-way-to- determin-commandline-vs-http-execution-of-a-php-sc) –

+0

Pour clarifier les choses ... un POST comme dans la méthode HTTP/1.1 n'est pas la même chose que CLI ... que voulez-vous dire par stand? -alone script? – ChrisR

Répondre

5

Si je comprends bien votre question, il est pas http par rapport à l'appel en ligne de commande, mais plutôt navigateur vs « non-navigateur "(par exemple via curl, wget etc) appel. Il n'y a aucun moyen de vérifier cela, car wget etc sont techniquement navigateurs, ils n'ont tout simplement pas d'interface graphique. Vous pouvez essayer de vérifier HTTP_USER_AGENT, mais cela est totalement non fiable, car il n'y a aucun moyen de forcer un client à s'identifier correctement.

+0

Je pense que tu as raison –

1
function __get_started_from_cli_state() 
{ 
    return substr(php_sapi_name(), 0, 3) == 'cli'; 
} 

function __get_started_from_cgi_state() 
{ 
    return substr(php_sapi_name(), 0, 3) == 'cgi'; 
} 

function __get_started_from_browser_state() 
{ 
    return !(__get_started_from_cli_state() || 
      __get_started_from_cgi_state()); 
} 
Questions connexes