GGC

News
Main
Links
SourceForge forum
SourceForge downloads
Javadoc documentation
About this project
Deutsche Flagge Deutsche Version

Legal
Webpages' source

SourceForge.net Logo


Should you experience any difficulties with any of the above pages, please drop the sitemaster a note.

Best viewed with any browser

<?php
/*
MODIFICATIONS:
  +2006-02-19: RR started modifications, code-cleanup and comments, made max.
                  line-length 85 characters.
*/

// We check if $relpath is set and set it to a default if not.
// The default is to assume we are called from a directory one level lower than the
// toplevel. This variable tells us the path to the main (toplevel) directory in
// relation to the including script. This is a rather hackish way of avoiding a
// config file.
if (!isset ($relpath)) $relpath='../';

// My own (very primitive) session handling.
include_once ($relpath.'php/session.inc');

// Start a new session if we don't have one already.
if (!has_session ()) start_session ();

// Get what we need for database access
include_once ($relpath.'php/db.inc');

function 
report_ua_error($useragent$mysqlError$mysqlQuery)
{
  
$UAFailureMessage 'This is a notice that a special user agent string could ' .
                      
'not be inserted into the database!' "\n\n" .
                      
'Problematic UA:' "\n" $useragent "\n" 'MySQL Query:' .
                      
"\n" $mysqlQuery "\n" 'MySQL Error ' 'message:' .
                      
"\n" $mysqlError "\n\n" 'Please find out what is wrong!'
                      
"\n" ' -- rumbi' "\n";
  if (!
mail ($bugReportRecipients$bugReportSubjectPrefix$UAFailureMessage,
        
'From: '.$bugReportSender))
  {
    
$errorFile fopen ('/tmp/persistent/bediary/uaerrors.txt''a');
    
fwrite ($errorFile"\n" $UAFailureMessage);
    
fclose ($errorFile);
  }
}

// RETURN:
//   +True, if this ua has already been registered
//   +False, if it hasn't
function ua_exists ($uag)
{
 global 
$uatab;
 
$query 'SELECT * FROM '.$uatab.' WHERE uastring LIKE "'.mysql_real_escape_string($uag).'"';
 if (!
$result = @mysql_query ($query))
   {
     
report_ua_error ($uag, @mysql_error (), $query);
     
// XXX: not the best way to handle this, but seems failsafe
     
return TRUE;
   }
 
$row mysql_fetch_array ($result);
 if (
$row[0] == '')
  return 
FALSE;
 else return 
$row[1];
}

// If a session exists (i.e. could successfully be established previously) and the
// session-variable 'uareg' isn't registered and the database is available, then we
// try to set the uareg variable and make an entry in our database regarding the ua.
if (has_session () && !$_SESSION['uareg'] && !$nodb)
{
  
$ua $_SERVER['HTTP_USER_AGENT'];
  if (
trim ($ua) != '')
  {
    if (
ua_exists ($ua))
    {
      
$query 'UPDATE '.$uatab.' SET visits=(visits+1) WHERE uastring LIKE "'.mysql_real_escape_string($ua).
          
'" LIMIT 1';
    }
    else
    {
      
$query 'INSERT INTO '.$uatab.' VALUES ("'.mysql_real_escape_string($ua).'", 1)';
    }

    if (! @
mysql_query ($query))
    {
      
report_ua_error($ua, @mysql_error(), $query);
      @
mysql_close ($db);
      
//die ('ua check failed'."\n".mysql_error ());
    
}
  }
  
$uareg TRUE;
  @
session_register ('uareg');
}

// Determine the content-type header to be sent to the browser.
// Default is to send application/xhtml+xml but some (retarded) browsers need
// text/html
if (stristr ($_SERVER['HTTP_USER_AGENT'], 'MSIE') &&
    !
stristr ($_SERVER['HTTP_USER_AGENT'], 'MSIE 7'))
  
header ('Content-Type: text/html; charset=UTF-8');
elseif (
stristr ($_SERVER['HTTP_USER_AGENT'], 'KHTML'))
{
  
header ('Content-Type: text/html; charset=UTF-8');
  echo 
'<?xml version="1.0" encoding="UTF-8" ?>'."\n";
}
elseif (
stristr ($_SERVER['HTTP_USER_AGENT'], 'Lynx'))
{
  
header ('Content-Type: text/html; charset=UTF-8');
  echo 
'<?xml version="1.0" encoding="UTF-8" ?>'."\n";
  
$lynx true;
}
elseif (
stristr ($_SERVER['HTTP_USER_AGENT'], 'w3m'))
{
  
header ('Content-Type: text/html; charset=UTF-8');
  echo 
'<?xml version="1.0" encoding="UTF-8" ?>'."\n";
  
$lynx true;
}
else
{
  
header ('Content-Type: application/xhtml+xml; charset=UTF-8');
  echo 
'<?xml version="1.0" encoding="UTF-8" ?>'."\n";
}

?>

Visitor count: 11257