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

📄 cas.php

📁 很棒的在线教学系统
💻 PHP
📖 第 1 页 / 共 3 页
字号:
      $indent_str = ".";      global $PHPCAS_DEBUG;      if ( $PHPCAS_DEBUG['filename'] ) {	for ($i=0;$i<$PHPCAS_DEBUG['indent'];$i++) {	  $indent_str .= '|    ';	}	error_log($PHPCAS_DEBUG['unique_id'].' '.$indent_str.$str."\n",3,$PHPCAS_DEBUG['filename']);      }    }    /**   * This method is used by interface methods to print an error and where the function   * was originally called from.   *   * @param $msg the message to print   *   * @private   */  function error($msg)    {      $dbg = phpCAS::backtrace();      $function = '?';      $file = '?';      $line = '?';      if ( is_array($dbg) ) {	for ( $i=1; $i<sizeof($dbg); $i++) {	  if ( is_array($dbg[$i]) ) {	    if ( $dbg[$i]['class'] == __CLASS__ ) {	      $function = $dbg[$i]['function'];	      $file = $dbg[$i]['file'];	      $line = $dbg[$i]['line'];	    }	  }	}      }      echo "<br />\n<b>phpCAS error</b>: <font color=\"FF0000\"><b>".__CLASS__."::".$function.'(): '.htmlentities($msg)."</b></font> in <b>".$file."</b> on line <b>".$line."</b><br />\n";      phpCAS::trace($msg);      phpCAS::traceExit();      exit();    }  /**   * This method is used to log something in debug mode.   */  function trace($str)    {      $dbg = phpCAS::backtrace();      phpCAS::log($str.' ['.basename($dbg[1]['file']).':'.$dbg[1]['line'].']');    }  /**   * This method is used to indicate the start of the execution of a function in debug mode.   */  function traceBegin()    {      global $PHPCAS_DEBUG;      $dbg = phpCAS::backtrace();      $str = '=> ';      if ( !empty($dbg[2]['class']) ) {	$str .= $dbg[2]['class'].'::';      }      $str .= $dbg[2]['function'].'(';            if ( is_array($dbg[2]['args']) ) {	foreach ($dbg[2]['args'] as $index => $arg) {	  if ( $index != 0 ) {	    $str .= ', ';	  }	  $str .= str_replace("\n","",var_export($arg,TRUE));	}      }      $str .= ') ['.basename($dbg[2]['file']).':'.$dbg[2]['line'].']';      phpCAS::log($str);      $PHPCAS_DEBUG['indent'] ++;    }  /**   * This method is used to indicate the end of the execution of a function in debug mode.   *   * @param $res the result of the function   */  function traceEnd($res='')    {      global $PHPCAS_DEBUG;      $PHPCAS_DEBUG['indent'] --;      $dbg = phpCAS::backtrace();      $str = '';      $str .= '<= '.str_replace("\n","",var_export($res,TRUE));      phpCAS::log($str);    }  /**   * This method is used to indicate the end of the execution of the program   */  function traceExit()    {      global $PHPCAS_DEBUG;      phpCAS::log('exit()');      while ( $PHPCAS_DEBUG['indent'] > 0 ) {	phpCAS::log('-');	$PHPCAS_DEBUG['indent'] --;      }    }  /** @} */  // ########################################################################  //  INTERNATIONALIZATION  // ########################################################################  /**   * @addtogroup publicLang   * @{   */  /**   * This method is used to set the language used by phpCAS.    * @note Can be called only once.   *   * @param $lang a string representing the language.   *   * @sa PHPCAS_LANG_FRENCH, PHPCAS_LANG_ENGLISH   */  function setLang($lang)    {      global $PHPCAS_CLIENT;      if ( !is_object($PHPCAS_CLIENT) ) {	phpCAS::error('this method should not be called before '.__CLASS__.'::client() or '.__CLASS__.'::proxy()');      }      if ( gettype($lang) != 'string' ) {	phpCAS::error('type mismatched for parameter $lang (should be `string\')');      }      $PHPCAS_CLIENT->setLang($lang);    }  /** @} */  // ########################################################################  //  VERSION  // ########################################################################  /**   * @addtogroup public   * @{   */  /**   * This method returns the phpCAS version.   *   * @return the phpCAS version.   */  function getVersion()    {      return PHPCAS_VERSION;    }    /** @} */  // ########################################################################  //  HTML OUTPUT  // ########################################################################  /**   * @addtogroup publicOutput   * @{   */  /**   * This method sets the HTML header used for all outputs.   *   * @param $header the HTML header.   */  function setHTMLHeader($header)    {      global $PHPCAS_CLIENT;      if ( !is_object($PHPCAS_CLIENT) ) {	phpCAS::error('this method should not be called before '.__CLASS__.'::client() or '.__CLASS__.'::proxy()');      }      if ( gettype($header) != 'string' ) {	phpCAS::error('type mismatched for parameter $header (should be `string\')');      }      $PHPCAS_CLIENT->setHTMLHeader($header);    }  /**   * This method sets the HTML footer used for all outputs.   *   * @param $footer the HTML footer.   */  function setHTMLFooter($footer)    {      global $PHPCAS_CLIENT;      if ( !is_object($PHPCAS_CLIENT) ) {	phpCAS::error('this method should not be called before '.__CLASS__.'::client() or '.__CLASS__.'::proxy()');      }      if ( gettype($footer) != 'string' ) {	phpCAS::error('type mismatched for parameter $footer (should be `string\')');      }      $PHPCAS_CLIENT->setHTMLFooter($footer);    }  /** @} */  // ########################################################################  //  PGT STORAGE  // ########################################################################  /**   * @addtogroup publicPGTStorage   * @{   */  /**   * This method is used to tell phpCAS to store the response of the   * CAS server to PGT requests onto the filesystem.    *   * @param $format the format used to store the PGT's (`plain' and `xml' allowed)   * @param $path the path where the PGT's should be stored   */  function setPGTStorageFile($format='',			     $path='')    {      global $PHPCAS_CLIENT,$PHPCAS_AUTH_CHECK_CALL;      phpCAS::traceBegin();      if ( !is_object($PHPCAS_CLIENT) ) {	phpCAS::error('this method should only be called after '.__CLASS__.'::proxy()');      }      if ( !$PHPCAS_CLIENT->isProxy() ) {	phpCAS::error('this method should only be called after '.__CLASS__.'::proxy()');      }      if ( $PHPCAS_AUTH_CHECK_CALL['done'] ) {	phpCAS::error('this method should only be called before '.$PHPCAS_AUTH_CHECK_CALL['method'].'() (called at '.$PHPCAS_AUTH_CHECK_CALL['file'].':'.$PHPCAS_AUTH_CHECK_CALL['line'].')');      }      if ( gettype($format) != 'string' ) {	phpCAS::error('type mismatched for parameter $format (should be `string\')');      }      if ( gettype($path) != 'string' ) {	phpCAS::error('type mismatched for parameter $format (should be `string\')');      }      $PHPCAS_CLIENT->setPGTStorageFile($format,$path);      phpCAS::traceEnd();    }    /**   * This method is used to tell phpCAS to store the response of the   * CAS server to PGT requests into a database.    * @note The connection to the database is done only when needed.    * As a consequence, bad parameters are detected only when    * initializing PGT storage, except in debug mode.   *   * @param $user the user to access the data with   * @param $password the user's password   * @param $database_type the type of the database hosting the data   * @param $hostname the server hosting the database   * @param $port the port the server is listening on   * @param $database the name of the database   * @param $table the name of the table storing the data   */  function setPGTStorageDB($user,			   $password,			   $database_type='',			   $hostname='',			   $port=0,			   $database='',			   $table='')    {      global $PHPCAS_CLIENT,$PHPCAS_AUTH_CHECK_CALL;      phpCAS::traceBegin();      if ( !is_object($PHPCAS_CLIENT) ) {	phpCAS::error('this method should only be called after '.__CLASS__.'::proxy()');      }      if ( !$PHPCAS_CLIENT->isProxy() ) {	phpCAS::error('this method should only be called after '.__CLASS__.'::proxy()');      }      if ( $PHPCAS_AUTH_CHECK_CALL['done'] ) {	phpCAS::error('this method should only be called before '.$PHPCAS_AUTH_CHECK_CALL['method'].'() (called at '.$PHPCAS_AUTH_CHECK_CALL['file'].':'.$PHPCAS_AUTH_CHECK_CALL['line'].')');      }      if ( gettype($user) != 'string' ) {	phpCAS::error('type mismatched for parameter $user (should be `string\')');      }      if ( gettype($password) != 'string' ) {	phpCAS::error('type mismatched for parameter $password (should be `string\')');      }      if ( gettype($database_type) != 'string' ) {	phpCAS::error('type mismatched for parameter $database_type (should be `string\')');      }      if ( gettype($hostname) != 'string' ) {	phpCAS::error('type mismatched for parameter $hostname (should be `string\')');      }      if ( gettype($port) != 'integer' ) {	phpCAS::error('type mismatched for parameter $port (should be `integer\')');      }      if ( gettype($database) != 'string' ) {	phpCAS::error('type mismatched for parameter $database (should be `string\')');      }      if ( gettype($table) != 'string' ) {	phpCAS::error('type mismatched for parameter $table (should be `string\')');      }      $PHPCAS_CLIENT->setPGTStorageDB($this,$user,$password,$hostname,$port,$database,$table);      phpCAS::traceEnd();    }    /** @} */  // ########################################################################  // ACCESS TO EXTERNAL SERVICES  // ########################################################################  /**   * @addtogroup publicServices   * @{   */  /**   * This method is used to access an HTTP[S] service.   *    * @param $url the service to access.   * @param $err_code an error code Possible values are PHPCAS_SERVICE_OK (on   * success), PHPCAS_SERVICE_PT_NO_SERVER_RESPONSE, PHPCAS_SERVICE_PT_BAD_SERVER_RESPONSE,   * PHPCAS_SERVICE_PT_FAILURE, PHPCAS_SERVICE_NOT AVAILABLE.   * @param $output the output of the service (also used to give an error   * message on failure).   *   * @return TRUE on success, FALSE otherwise (in this later case, $err_code   * gives the reason why it failed and $output contains an error message).   */  function serviceWeb($url,&$err_code,&$output)    {      global $PHPCAS_CLIENT, $PHPCAS_AUTH_CHECK_CALL;      phpCAS::traceBegin();      if ( !is_object($PHPCAS_CLIENT) ) {	phpCAS::error('this method should only be called after '.__CLASS__.'::proxy()');      }      if ( !$PHPCAS_CLIENT->isProxy() ) {	phpCAS::error('this method should only be called after '.__CLASS__.'::proxy()');      }      if ( !$PHPCAS_AUTH_CHECK_CALL['done'] ) {	phpCAS::error('this method should only be called after the programmer is sure the user has been authenticated (by calling '.__CLASS__.'::checkAuthentication() or '.__CLASS__.'::forceAuthentication()');      }      if ( !$PHPCAS_AUTH_CHECK_CALL['result'] ) {	phpCAS::error('authentication was checked (by '.$PHPCAS_AUTH_CHECK_CALL['method'].'() at '.$PHPCAS_AUTH_CHECK_CALL['file'].':'.$PHPCAS_AUTH_CHECK_CALL['line'].') but the method returned FALSE');      }      if ( gettype($url) != 'string' ) {	phpCAS::error('type mismatched for parameter $url (should be `string\')');      }            $res = $PHPCAS_CLIENT->serviceWeb($url,$err_code,$output);      phpCAS::traceEnd($res);      return $res;    }  /**   * This method is used to access an IMAP/POP3/NNTP service.   *    * @param $url a string giving the URL of the service, including the mailing box   * for IMAP URLs, as accepted by imap_open().   * @param $flags options given to imap_open().   * @param $err_code an error code Possible values are PHPCAS_SERVICE_OK (on   * success), PHPCAS_SERVICE_PT_NO_SERVER_RESPONSE, PHPCAS_SERVICE_PT_BAD_SERVER_RESPONSE,   * PHPCAS_SERVICE_PT_FAILURE, PHPCAS_SERVICE_NOT AVAILABLE.   * @param $err_msg an error message on failure   * @param $pt the Proxy Ticket (PT) retrieved from the CAS server to access the URL   * on success, FALSE on error).   *   * @return an IMAP stream on success, FALSE otherwise (in this later case, $err_code   * gives the reason why it failed and $err_msg contains an error message).   */  function serviceMail($url,$flags,&$err_code,&$err_msg,&$pt)    {      global $PHPCAS_CLIENT, $PHPCAS_AUTH_CHECK_CALL;      phpCAS::traceBegin();      if ( !is_object($PHPCAS_CLIENT) ) {	phpCAS::error('this method should only be called after '.__CLASS__.'::proxy()');      }      if ( !$PHPCAS_CLIENT->isProxy() ) {	phpCAS::error('this method should only be called after '.__CLASS__.'::proxy()');      }      if ( !$PHPCAS_AUTH_CHECK_CALL['done'] ) {	phpCAS::error('this method should only be called after the programmer is sure the user has been authenticated (by calling '.__CLASS__.'::checkAuthentication() or '.__CLASS__.'::forceAuthentication()');      }      if ( !$PHPCAS_AUTH_CHECK_CALL['result'] ) {	phpCAS::error('authentication was checked (by '.$PHPCAS_AUTH_CHECK_CALL['method'].'() at '.$PHPCAS_AUTH_CHECK_CALL['file'].':'.$PHPCAS_AUTH_CHECK_CALL['line'].') but the method returned FALSE');      }      if ( gettype($url) != 'string' ) {	phpCAS::error('type mismatched for parameter $url (should be `string\')');      }            if ( gettype($flags) != 'integer' ) {	phpCAS::error('type mismatched for parameter $flags (should be `integer\')');      }            $res = $PHPCAS_CLIENT->serviceMail($url,$flags,$err_code,$err_msg,$pt);      phpCAS::traceEnd($res);      return $res;    }  /** @} */  // ########################################################################  //  AUTHENTICATION  // ########################################################################  /**   * @addtogroup publicAuth   * @{   */  /**   * Set the times authentication will be cached before really accessing the CAS server in gateway mode:    * - -1: check only once, and then never again (until you pree login)   * - 0: always check   * - n: check every "n" time   *   * @param $n an integer.   */  function setCacheTimesForAuthRecheck($n)    {      global $PHPCAS_CLIENT;      if ( !is_object($PHPCAS_CLIENT) ) {        phpCAS::error('this method should not be called before '.__CLASS__.'::client() or '.__CLASS__.'::proxy()');      }      if ( gettype($header) != 'integer' ) {        phpCAS::error('type mismatched for parameter $header (should be `string\')');      }      $PHPCAS_CLIENT->setCacheTimesForAuthRecheck($n);    }    /**   * This method is called to check if the user is authenticated (use the gateway feature).   * @return TRUE when the user is authenticated; otherwise FALSE.   */

⌨️ 快捷键说明

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