⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cas.php

📁 很棒的在线教学系统
💻 PHP
📖 第 1 页 / 共 3 页
字号:
<?php// commented in 0.4.22-RC2 for Sylvain Derosiaux// error_reporting(E_ALL ^ E_NOTICE);//// hack by Vangelis Haniotakis to handle the absence of $_SERVER['REQUEST_URI'] in IIS//if (!isset($_SERVER['REQUEST_URI'])) {     $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'].'?'.$_SERVER['QUERY_STRING'];}//// another one by Vangelis Haniotakis also to make phpCAS work with PHP5//if (version_compare(PHP_VERSION,'5','>=')) {    require_once(dirname(__FILE__).'/domxml-php4-php5.php');}/** * @file CAS/CAS.php * Interface class of the phpCAS library * * @ingroup public */// ########################################################################//  CONSTANTS// ########################################################################// ------------------------------------------------------------------------//  CAS VERSIONS// ------------------------------------------------------------------------/** * phpCAS version. accessible for the user by phpCAS::getVersion(). */define('PHPCAS_VERSION','0.5.1-1');// ------------------------------------------------------------------------//  CAS VERSIONS// ------------------------------------------------------------------------/** * @addtogroup public * @{ *//** * CAS version 1.0 */define("CAS_VERSION_1_0",'1.0');/*! * CAS version 2.0 */define("CAS_VERSION_2_0",'2.0');/** @} *//** * @addtogroup publicPGTStorage * @{ */// ------------------------------------------------------------------------//  FILE PGT STORAGE// ------------------------------------------------------------------------/** * Default path used when storing PGT's to file */define("CAS_PGT_STORAGE_FILE_DEFAULT_PATH",'/tmp');/** * phpCAS::setPGTStorageFile()'s 2nd parameter to write plain text files */define("CAS_PGT_STORAGE_FILE_FORMAT_PLAIN",'plain');/** * phpCAS::setPGTStorageFile()'s 2nd parameter to write xml files */define("CAS_PGT_STORAGE_FILE_FORMAT_XML",'xml');/** * Default format used when storing PGT's to file */define("CAS_PGT_STORAGE_FILE_DEFAULT_FORMAT",CAS_PGT_STORAGE_FILE_FORMAT_PLAIN);// ------------------------------------------------------------------------//  DATABASE PGT STORAGE// ------------------------------------------------------------------------/** * default database type when storing PGT's to database */define("CAS_PGT_STORAGE_DB_DEFAULT_DATABASE_TYPE",'mysql');/** * default host when storing PGT's to database */define("CAS_PGT_STORAGE_DB_DEFAULT_HOSTNAME",'localhost');/** * default port when storing PGT's to database */define("CAS_PGT_STORAGE_DB_DEFAULT_PORT",'');/** * default database when storing PGT's to database */define("CAS_PGT_STORAGE_DB_DEFAULT_DATABASE",'phpCAS');/** * default table when storing PGT's to database */define("CAS_PGT_STORAGE_DB_DEFAULT_TABLE",'pgt');/** @} */// ------------------------------------------------------------------------// SERVICE ACCESS ERRORS// ------------------------------------------------------------------------/** * @addtogroup publicServices * @{ *//** * phpCAS::service() error code on success */define("PHPCAS_SERVICE_OK",0);/** * phpCAS::service() error code when the PT could not retrieve because * the CAS server did not respond. */define("PHPCAS_SERVICE_PT_NO_SERVER_RESPONSE",1);/** * phpCAS::service() error code when the PT could not retrieve because * the response of the CAS server was ill-formed. */define("PHPCAS_SERVICE_PT_BAD_SERVER_RESPONSE",2);/** * phpCAS::service() error code when the PT could not retrieve because * the CAS server did not want to. */define("PHPCAS_SERVICE_PT_FAILURE",3);/** * phpCAS::service() error code when the service was not available. */define("PHPCAS_SERVICE_NOT AVAILABLE",4);/** @} */// ------------------------------------------------------------------------//  LANGUAGES// ------------------------------------------------------------------------/** * @addtogroup publicLang * @{ */define("PHPCAS_LANG_ENGLISH",    'english');define("PHPCAS_LANG_FRENCH",     'french');define("PHPCAS_LANG_GREEK",      'greek');define("PHPCAS_LANG_GERMAN",     'german');define("PHPCAS_LANG_JAPANESE",   'japanese');/** @} *//** * @addtogroup internalLang * @{ *//** * phpCAS default language (when phpCAS::setLang() is not used) */define("PHPCAS_LANG_DEFAULT", PHPCAS_LANG_ENGLISH);/** @} */// ------------------------------------------------------------------------//  MISC// ------------------------------------------------------------------------/** * @addtogroup internalMisc * @{ *//** * This global variable is used by the interface class phpCAS. * * @hideinitializer */$PHPCAS_CLIENT  = null;/** * This global variable is used to store where the initializer is called from  * (to print a comprehensive error in case of multiple calls). * * @hideinitializer */$PHPCAS_INIT_CALL = array('done' => FALSE,			  'file' => '?',			  'line' => -1,			  'method' => '?');/** * This global variable is used to store where the method checking * the authentication is called from (to print comprehensive errors) * * @hideinitializer */$PHPCAS_AUTH_CHECK_CALL = array('done' => FALSE,				'file' => '?',				'line' => -1,				'method' => '?',				'result' => FALSE);/** * This global variable is used to store phpCAS debug mode. * * @hideinitializer */$PHPCAS_DEBUG  = array('filename' => FALSE,		       'indent' => 0,		       'unique_id' => '');/** @} */// ########################################################################//  CLIENT CLASS// ########################################################################// include client classinclude_once(dirname(__FILE__).'/client.php');// ########################################################################//  INTERFACE CLASS// ########################################################################/** * @class phpCAS * The phpCAS class is a simple container for the phpCAS library. It provides CAS * authentication for web applications written in PHP. * * @ingroup public * @author Pascal Aubry <pascal.aubry at univ-rennes1.fr> * * \internal All its methods access the same object ($PHPCAS_CLIENT, declared  * at the end of CAS/client.php). */class phpCAS{  // ########################################################################  //  INITIALIZATION  // ########################################################################  /**   * @addtogroup publicInit   * @{   */  /**   * phpCAS client initializer.   * @note Only one of the phpCAS::client() and phpCAS::proxy functions should be   * called, only once, and before all other methods (except phpCAS::getVersion()   * and phpCAS::setDebug()).   *   * @param $server_version the version of the CAS server   * @param $server_hostname the hostname of the CAS server   * @param $server_port the port the CAS server is running on   * @param $server_uri the URI the CAS server is responding on   * @param $start_session Have phpCAS start PHP sessions (default true)   *   * @return a newly created CASClient object   */  function client($server_version,		  $server_hostname,		  $server_port,		  $server_uri, 		  $start_session = true)    {      global $PHPCAS_CLIENT, $PHPCAS_INIT_CALL;      phpCAS::traceBegin();      if ( is_object($PHPCAS_CLIENT) ) {	phpCAS::error($PHPCAS_INIT_CALL['method'].'() has already been called (at '.$PHPCAS_INIT_CALL['file'].':'.$PHPCAS_INIT_CALL['line'].')');      }      if ( gettype($server_version) != 'string' ) {	phpCAS::error('type mismatched for parameter $server_version (should be `string\')');      }      if ( gettype($server_hostname) != 'string' ) {	phpCAS::error('type mismatched for parameter $server_hostname (should be `string\')');      }      if ( gettype($server_port) != 'integer' ) {	phpCAS::error('type mismatched for parameter $server_port (should be `integer\')');      }      if ( gettype($server_uri) != 'string' ) {	phpCAS::error('type mismatched for parameter $server_uri (should be `string\')');      }      // store where the initialzer is called from      $dbg = phpCAS::backtrace();      $PHPCAS_INIT_CALL = array('done' => TRUE,				'file' => $dbg[0]['file'],				'line' => $dbg[0]['line'],				'method' => __CLASS__.'::'.__FUNCTION__);      // initialize the global object $PHPCAS_CLIENT      $PHPCAS_CLIENT = new CASClient($server_version,FALSE/*proxy*/,$server_hostname,$server_port,$server_uri,$start_session);      phpCAS::traceEnd();    }  /**   * phpCAS proxy initializer.   * @note Only one of the phpCAS::client() and phpCAS::proxy functions should be   * called, only once, and before all other methods (except phpCAS::getVersion()   * and phpCAS::setDebug()).   *   * @param $server_version the version of the CAS server   * @param $server_hostname the hostname of the CAS server   * @param $server_port the port the CAS server is running on   * @param $server_uri the URI the CAS server is responding on   * @param $start_session Have phpCAS start PHP sessions (default true)   *   * @return a newly created CASClient object   */  function proxy($server_version,		 $server_hostname,		 $server_port,		 $server_uri, 		 $start_session = true)    {      global $PHPCAS_CLIENT, $PHPCAS_INIT_CALL;      phpCAS::traceBegin();      if ( is_object($PHPCAS_CLIENT) ) {	phpCAS::error($PHPCAS_INIT_CALL['method'].'() has already been called (at '.$PHPCAS_INIT_CALL['file'].':'.$PHPCAS_INIT_CALL['line'].')');      }      if ( gettype($server_version) != 'string' ) {	phpCAS::error('type mismatched for parameter $server_version (should be `string\')');      }      if ( gettype($server_hostname) != 'string' ) {	phpCAS::error('type mismatched for parameter $server_hostname (should be `string\')');      }      if ( gettype($server_port) != 'integer' ) {	phpCAS::error('type mismatched for parameter $server_port (should be `integer\')');      }      if ( gettype($server_uri) != 'string' ) {	phpCAS::error('type mismatched for parameter $server_uri (should be `string\')');      }      // store where the initialzer is called from      $dbg = phpCAS::backtrace();      $PHPCAS_INIT_CALL = array('done' => TRUE,				'file' => $dbg[0]['file'],				'line' => $dbg[0]['line'],				'method' => __CLASS__.'::'.__FUNCTION__);      // initialize the global object $PHPCAS_CLIENT      $PHPCAS_CLIENT = new CASClient($server_version,TRUE/*proxy*/,$server_hostname,$server_port,$server_uri,$start_session);      phpCAS::traceEnd();    }  /** @} */  // ########################################################################  //  DEBUGGING  // ########################################################################  /**   * @addtogroup publicDebug   * @{   */  /**   * Set/unset debug mode   *   * @param $filename the name of the file used for logging, or FALSE to stop debugging.   */  function setDebug($filename='')    {      global $PHPCAS_DEBUG;      if ( $filename != FALSE && gettype($filename) != 'string' ) {	phpCAS::error('type mismatched for parameter $dbg (should be FALSE or the name of the log file)');      }      if ( empty($filename) ) {      	if ( preg_match('/^Win.*/',getenv('OS')) ) {      	  if ( isset($_ENV['TMP']) ) {      	    $debugDir = $_ENV['TMP'].'/';      	  } else if ( isset($_ENV['TEMP']) ) {      	    $debugDir = $_ENV['TEMP'].'/';      	  } else {      	    $debugDir = '';      	  }      	} else {      	  $debugDir = '/tmp/';      	}      	$filename = $debugDir . 'phpCAS.log';      }      if ( empty($PHPCAS_DEBUG['unique_id']) ) {	$PHPCAS_DEBUG['unique_id'] = substr(strtoupper(md5(uniqid(''))),0,4);      }      $PHPCAS_DEBUG['filename'] = $filename;      phpCAS::trace('START ******************');    }    /** @} */  /**   * @addtogroup internalDebug   * @{   */  /**   * This method is a wrapper for debug_backtrace() that is not available    * in all PHP versions (>= 4.3.0 only)   */  function backtrace()    {      if ( function_exists('debug_backtrace') ) {        return debug_backtrace();      } else {        // poor man's hack ... but it does work ...        return array();      }    }  /**   * Logs a string in debug mode.   *   * @param $str the string to write   *   * @private   */  function log($str)    {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -