Datumsfunktionen auf Mysql-Ebene - verstecken von get-variablen nicht implementiert - ses_id auf korrektheit prüfen nicht implementiert (nur in abgespeckter form: ses_id aus DB überschreibt (evtl. falsch) übergebene) - verfallszeit in fkt zu_alt aendern!!! */ define('ses_id_verfaellt_nach', 240); // vier stunden function redirect($ses_id_ref) { $varstr=$_SERVER["QUERY_STRING"]; $rurl=$_SERVER["PHP_SELF"]; if ($varstr!="") { if ($varstr[0]=="&") { $rurl=$rurl."?ses_id=".$ses_id_ref.$varstr; } else { $rurl=$rurl."?ses_id=".$ses_id_ref."&".$varstr; } } else { $rurl=$rurl."?ses_id=".$ses_id_ref; } header ("Location:$rurl"); exit; // echo "
Umleitung nach $rurl
"; } function ses_get_id_from_ref() { $ref=$_SERVER["HTTP_REFERER"]; $rurl=parse_url($ref); $query=$rurl[query]; $query_array = explode( "&", $query ); while (list($k, $v) = each($query_array)) { $keyval=explode("=",$v); if ($keyval[0]=="ses_id") { $ses_id_ref=$keyval[1]; } } if ($ses_id_ref=="") { return false; } else { return $ses_id_ref; } } // ====================MAIN=========================== $ses_id = $_GET["ses_id"]; if (empty($ses_id)) { // echo "Session-ID ist leer
"; $ses_id = ses_restore_id_from_eben(); if (empty($ses_id) or $ses_id==false) { $ses_id = ses_get_id_from_ref(); if (empty($ses_id) or $ses_id==false) { // echo"keine Session-ID im Ref
"; $ses_id = ses_make_ses_id(); // echo"Session-ID wurde neu erzeugt: $ses_id
"; // === BOTS zählen === $browser = browser(); $ip=getip(); $rechner = getrechner($ip); if (ist_ein_bot($browser,$rechner)==TRUE) { ses_db_bot_zaehlen(); /* header ("Location:http://www.mhgta.uni-trier.de"); exit; */ } } else { // echo"Session-ID aus ref: $ses_id
"; } } else { // return $ses_id; // exit; // echo" Sie waren doch schonmal da!
"; } redirect($ses_id); } else { // falsche id? $sid = $ses_id; $ses_id = ses_restore_id_from_eben(); if (empty($ses_id) or $ses_id==false) { $ses_id=$sid; } } // ==================================================== function ses_db_verbinden ($befehl,$db_name='session_mhgta') { // if (empty($db_name)) $db_name = 'session_mhgta'; $db_horst = 'tares.uni-trier.de'; $db_user = 'mhgta'; $db_pwd = 'x94Z3uzJv6ChjAPn'; if ($befehl==true) { $link = @mysql_connect($db_horst,$db_user,$db_pwd); if (!$link) { print("Verbindung zum MySql-Server fehlgeschlagen
"); return false; } else { // echo "verbunden mit $db_horst
"; } $db_verbunden = @mysql_select_db($db_name,$link); if (!$db_verbunden) { print ("Verbindung zur Datenbank $db_name fehlgeschlagen
"); return false; } else { // echo "verbunden mit DB $db_name
"; } return $link; } if ($db_verbunden){ if($befehl==false) { mysql_close($link); } } } function ses_make_ses_id() { srand((double)microtime()*1000000); $ses_id = md5(uniqid(rand())); return $ses_id; } function ses_on_this_script() { $ses_id = $_GET['ses_id']; if ($ses_id!="") { ses_db_user($ses_id); ses_db_seite($ses_id); return $ses_id; } else { // $ses_id = ses_make_ses_id(); } } function ses_tabelle_erzeugen($id,$name) { switch ($name) { case "bot": $sqlbefehl = "CREATE TABLE bot_zaehler ( datum DATE NOT NULL , anzahl BIGINT DEFAULT NULL)"; $res = mysql_query($sqlbefehl); if ($res==1) { return true; } else { return false; } break; case "statistik": $sqlbefehl = "CREATE TABLE statistik ( nr INT not null AUTO_INCREMENT, sesid VARCHAR( 80 ) NOT NULL , text VARCHAR( 40 ) default NULL , script VARCHAR( 20 ) default NULL , enc VARCHAR( 8 ) default NULL , datum DATE NOT NULL , such VARCHAR( 60 ) default NULL, PRIMARY KEY (nr), KEY (sesid), KEY (datum), UNIQUE (nr))"; $res = mysql_query($sqlbefehl); if ($res==1) { return true; } else { return false; } break; case "downloads": $sqlbefehl = "CREATE TABLE downloads ( Name varchar( 50 ) default NULL , Vorname varchar( 50 ) default NULL , Organisation varchar( 50 ) default NULL , Email varchar( 50 ) default NULL , Datum datetime default NULL , File varchar( 20 ) default NULL , IP varchar( 50 ) default NULL)"; $res = mysql_query($sqlbefehl); // echo mysql_error(); if ($res==1) { return true; } else { return false; } break; case "allusers": $sqlbefehl = "CREATE TABLE $name ( nr INT not null AUTO_INCREMENT, sesid VARCHAR (80) not null , browser VARCHAR(255) not null , ip VARCHAR(15) not null , rechner VARCHAR(80) , referer varchar(80) default NULL , datum_zeit DATETIME not null , PRIMARY KEY (nr), UNIQUE (nr), UNIQUE(sesid))"; $res = mysql_query($sqlbefehl); // echo mysql_error(); if ($res==1) { return true; } else { return false; } break; case "seiten": $tname="ses_".$id."_".$name; $sqlbefehl = "CREATE TABLE $tname ( nr INT not null AUTO_INCREMENT, datum_zeit DATETIME not null , dateiname MEDIUMTEXT not null , query MEDIUMTEXT not null , PRIMARY KEY (nr), UNIQUE (nr))"; $res = mysql_query($sqlbefehl); // echo mysql_error(); if ($res==1) { return true; } else { return false; } break; case "suche": $tname="ses_".$id."_".$name; $zeit = zeit(); $datum =datum(); $sqlbefehl = "CREATE TABLE $tname ( nr INT not null AUTO_INCREMENT, suche_wf MEDIUMTEXT not null , suche_w MEDIUMTEXT not null , suche_lineid VARCHAR (20) not null , suche_sigle VARCHAR (10) not null , PRIMARY KEY (nr), UNIQUE (nr)) COMMENT='$datum;$zeit'"; $res = mysql_query($sqlbefehl); // echo mysql_error(); if ($res==1) { return true; } else { return false; } break; } //ende switch } function datum() { $today = date("m.d.y"); return $today; } function zeit() { $today = date("H:i:s"); return $today; } function ses_get_text_id() { $text = $_GET['id']; return $text; } function ses_get_script() { $datei = $_SERVER['PHP_SELF']; $path_parts = pathinfo($datei); $dat = $path_parts['basename']; $scr = str_replace($path_parts['extension'],'',$dat); if (stristr($scr,'volltext')) { $script = 'Volltextsuche'; } elseif (stristr($scr,'frameset')) { $script = 'Text'; } elseif (stristr($scr,'veroeff')) { $script = 'Veröffentlichungen'; } elseif (stristr($scr,'hinweise')) { $script = 'Hinweise'; } elseif (stristr($scr,'info')) { $script = 'EText-Info'; } elseif (stristr($scr,'katalog')) { $script = 'Katalog'; } elseif (stristr($scr,'down')) { $script = 'Download'; } elseif (stristr($scr,'error')) { $script = 'Error/Hinweis'; } else { $script = '-none-'; } return $script; } function ses_get_enc() { // ja, man hätte ein switch nehmen können if ($_GET['enc']=='h') { $enc = 'html'; } elseif ($_GET['enc']=='x') { $enc = 'xml'; } elseif ($_GET['enc']=='t') { $enc = 'tustep'; } else { $enc = ''; } return $enc; } function dateiname() { return $_SERVER["PHP_SELF"]; } function browser() { return $_SERVER["HTTP_USER_AGENT"]; } function getip() { return $_SERVER["REMOTE_ADDR"]; } function getrechner($ip) { $rechner = gethostbyaddr($ip); if ($rechner=="") { return false; } else { return $rechner; } } function ses_get_user($id) { $sqlbefehl = "SELECT count(*) FROM allusers where sesid='$id' LIMIT 1"; $res = mysql_query($sqlbefehl); if ($res) { $row = mysql_fetch_row($res); if ($row[0]!=0) { return true; } else { return false; } } else { return false; } } function cmp_dat ($a, $b) { $dat_a = explode(".",$a); $dat_b = explode(".",$b); if (intval($dat_a[2])intval($dat_b[2])) { return 1; } if (intval($dat_a[2])==intval($dat_b[2])) { if (intval($dat_a[0])intval($dat_b[0])) { return 1; } if (intval($dat_a[2])==intval($dat_b[2])) { if (intval($dat_a[1])intval($dat_b[1])) { return 1; } if (intval($dat_a[1])==intval($dat_b[1])) { return 0; } } } } function cmp_tim ($a, $b) { $dat_a = explode(":",$a); $dat_b = explode(":",$b); $min = intval($dat_a[1]); $all=$ses_id_verfaellt_nach+$min; $stdn = intval($all/60); $rest = intval($all%60); $dat_a[0]=$dat_a[0]+$stdn; $dat_a[1]=$dat_a[1]+$rest; if (intval($dat_a[0])intval($dat_b[0])) { return 1; } if (intval($dat_a[0])==intval($dat_b[0])) { if (intval($dat_a[1])intval($dat_b[1])) { return 1; } if (intval($dat_a[1])==intval($dat_b[1])) { if (intval($dat_a[2])intval($dat_b[2])) { return 1; } if (intval($dat_a[2])==intval($dat_b[2])) { return 0; } } } } function ses_aelter_als ($time,$date) { $dat_now=datum(); $tim_now=zeit(); // echo"$date - $dat_now
"; // echo"$time - $tim_now
"; if (cmp_dat($date,$dat_now)==-1) { return true; exit; } if (cmp_dat($date,$dat_now)==1) { return false; exit; } if (cmp_dat($date,$dat_now)==0) { if (cmp_tim($time,$tim_now)==-1) { return true; exit; } if (cmp_tim($time,$tim_now)==1) { return false; exit; } if (cmp_tim($time,$tim_now)==0) { return false; exit; } } } function ses_get_sesid_by_rechner_db($rechner) { if (ses_table_exists("allusers")) { $sqlbefehl = "SELECT * FROM allusers where rechner='$rechner' ORDER BY nr DESC;"; $res = mysql_query($sqlbefehl); $num = mysql_num_rows ($res); if ($num==0) { return false; exit; } else { $row = mysql_fetch_row($res); return $row; } } else { return false; } } function ses_get_time_by_sesid_db($sesid) { $tname = "ses_".$sesid."_seiten"; // echo"$tname
"; $sqlbefehl="SELECT zeit FROM $tname ORDER BY nr DESC;"; $res = mysql_query($sqlbefehl); if ($res) { $num = mysql_num_rows($res); if ($num>=1) { return mysql_result($res,0,"zeit"); } else { return false; } } else { return false; } } function ses_get_date_by_sesid_db($sesid) { $tname = "ses_".$sesid."_seiten"; $sqlbefehl="SELECT datum FROM $tname ORDER BY nr DESC;"; $res = mysql_query($sqlbefehl); if ($res) { $num = mysql_num_rows($res); if ($num>=1) { return mysql_result($res,0,"datum"); } else { return false; } } else { return false; } } function zu_alt($sesid) { $tname = "ses_".$sesid."_seiten"; if (ses_table_exists($tname)) { // jaja, möglichst maschinennah. ich kanns halt nicht in // effizient guter zeit... deswegen so: $sqlbefehl="SELECT UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 240 MINUTE))"; $res = mysql_query($sqlbefehl); if ($res) { $row1 = mysql_fetch_row($res); } $sqlbefehl="SELECT UNIX_TIMESTAMP(datum_zeit) FROM $tname ORDER BY nr DESC LIMIT 1"; $res = mysql_query($sqlbefehl); if ($res) { $row2 = mysql_fetch_row($res); } if ($row1[0]<$row2[0]) { return false; } else { return true; } } else { $sqlbefehl="SELECT UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 240 MINUTE))"; $res = mysql_query($sqlbefehl); if ($res) { $row1 = mysql_fetch_row($res); } $tname = "allusers"; $ip = getip(); if (ses_table_exists($tname)) { $sqlbefehl="SELECT UNIX_TIMESTAMP(datum_zeit) FROM $tname WHERE ip='$ip' ORDER BY nr DESC LIMIT 1"; // echo"$sqlbefehl
"; $res = mysql_query($sqlbefehl); if ($res) { $row2 = mysql_fetch_row($res); } if ($row1[0]<$row2[0]) { return false; } else { return true; } } else { return true; } } } function ses_get_last_sesid_by_ip_db($ip) { if (ses_table_exists("allusers")) { $sqlbefehl = "SELECT sesid FROM allusers where ip='$ip' ORDER BY nr DESC"; $res = mysql_query($sqlbefehl); if ($res) { $row = mysql_fetch_row($res); return $row[0]; } else { return false; } } else { return false; } } function ses_restore_id_from_eben() { // echo"trying to restore Session-ID
"; $ip=getip(); // echo"$ip
"; $rechner = getrechner($ip); // echo"$rechner
"; if (!empty($ip)) { ses_db_verbinden(true); $id = ses_get_last_sesid_by_ip_db($ip); // echo" alte id: $id"; ses_db_verbinden(false); if (!empty($id)) { $zualt = zu_alt($id); // echo"alt: --$zualt--"; if ($zualt) { $id=""; return $id; } else { return $id; } } else { $id=""; return $id; } } else { return false; } } function ses_get_query_without_id() { $query=$_SERVER["QUERY_STRING"]; $query_array = explode( "&", $query); while (list($k, $v) = each($query_array)) { $keyval=explode("=",$v); if ($keyval[0]=="ses_id") { // $ses_id_ref=$keyval[1]; } else { $new_query.="&".$keyval[0]."=".$keyval[1]; } } if ($new_query!="") { if ($new_query[0]=="&") { $new_query[0]=" "; $new_query=trim($new_query); } // echo"$new_query"; return $new_query; } else { false; } } function ist_ein_bot($br,$re) { $foo = array('find','bot','search','crawl','spider','google','fireball','lycos','eule','northernlight','aladin'); $ist = false; foreach ($foo as $v) { if (stristr($br,$v) or stristr($re,$v)) { $ist = true; } } return $ist; } function ses_bot_tabelle_fuellen() { $sqlbefehl="UPDATE bot_zaehler SET anzahl=anzahl+1 WHERE YEAR(datum)=YEAR(NOW()) AND MONTH(datum)=MONTH(NOW())"; $res = mysql_query($sqlbefehl) or die ("Fehler bei MySQL (bei BoT Tabelle update): " . mysql_error()); if (mysql_affected_rows()==0) { $sqlbefehl="INSERT INTO bot_zaehler SET datum=NOW(), anzahl=1"; $res = mysql_query($sqlbefehl) or die ("Fehler bei MySQL (bei BoT Tabelle füllen): " . mysql_error()); } if ($res=="1") { return false; } else { return true; } mysql_free_result($res); } function ses_tabelle_fuellen($id,$name) { if ($name=="allusers") { $ref = $_SERVER["HTTP_REFERER"]; $browser = browser(); $ip=getip(); $rechner = getrechner($ip); if (ist_ein_bot($browser,$rechner)!=true) { $sqlbefehl="INSERT INTO $name ( nr, sesid, browser, ip, rechner, referer, datum_zeit) VALUES ('', '$id', '$browser','$ip','$rechner', '$ref', NOW())"; $res = mysql_query($sqlbefehl) or die ("Fehler bei MySQL (bei Tabelle füllen user): " . mysql_error()); if ($res=="1") { return false; } else { // echo "User angelegt: $sqlbefehl
"; return true; } mysql_free_result($res); } } elseif ($name=="seiten") { $tname = "ses_".$id."_".$name; $query = ses_get_query_without_id(); $dateiname=dateiname(); $sqlbefehl="INSERT INTO $tname ( nr, datum_zeit, dateiname, query) VALUES ('', NOW(), '$dateiname','$query');"; $res = mysql_query($sqlbefehl) or die ("Fehler bei MySQL (bei Tabelle füllen seite): " . mysql_error()); if ($res=="1") { return false; } else { return true; } mysql_free_result($res); } elseif ($name=='statistik') { $tname = 'statistik'; $script = ses_get_script(); $text = ses_get_text_id(); $such = rawurldecode($_GET['suchwort']); $enc = ses_get_enc(); $browser = browser(); $ip=getip(); $rechner = getrechner($ip); if (ist_ein_bot($browser,$rechner)!=true) { $sqlbefehl="INSERT INTO $tname ( sesid, text, script, enc, datum, such) VALUES ('$id', '$text', '$script', '$enc', NOW(), '$such');"; $res = mysql_query($sqlbefehl) or die ("Fehler bei MySQL (bei Tabelle füllen statistik): " . mysql_error()); if ($res=="1") { return false; } else { return true; mysql_free_result($res); } } } else { return false; } } function ses_tabelle_loeschen($id,$name) { if ($name=="allusers") { $sqlbefehl="DROP TABLE $name;"; $res = mysql_query($sqlbefehl) or die ("Fehler bei MySQL: " . mysql_error()); if ($res=="1") { return false; } else { return true; } } else { $tname = "ses_".$id."_".$name; $sqlbefehl="DROP TABLE $tname;"; $res = mysql_query($sqlbefehl) or die ("Fehler bei MySQL: " . mysql_error()); if ($res=="1") { return false; } else { return true; } } } function ses_table_exists($t_name) { $result = mysql_list_tables("session_mhgta"); if (!$result) { print "DB Fehler, Tabellen können nicht angezeigt werden\n"; print 'MySQL Fehler: ' . mysql_error(); exit; } $exists = false; while ($row = mysql_fetch_row($result)) { if ($row[0]=="$t_name") { $exists=true; } } mysql_free_result($result); return $exists; } function ses_db_seite($sesid) { $link = ses_db_verbinden(true); $name = "ses_".$sesid."_seiten"; if (ses_table_exists($name)) { ses_tabelle_fuellen($sesid,"seiten"); return true; } else { if (ses_tabelle_erzeugen($sesid,"seiten")) { ses_tabelle_fuellen($sesid,"seiten"); return true; } else { return false; } } $link = ses_db_verbinden(false); } function ses_db_suche_get_einzeltreffer($sesid,$von,$anz) { $link = ses_db_verbinden(true); $name = "ses_".$sesid."_suche"; $von=$von-1; if (ses_table_exists($name)) { $sqlbefehl = "SELECT suche_sigle,suche_wf,count(suche_wf) FROM $name group by suche_wf order by suche_wf LIMIT $von,$anz;"; // echo"$sqlbefehl
"; $res = mysql_query($sqlbefehl); $num = mysql_num_rows ($res); if ($num==0) { return false; } else { for ($i=0;$i<$num;$i++) { $wortform = mysql_result($res,$i,"suche_wf"); $treffer = mysql_result($res,$i,"count(suche_wf)"); $fundstellen[$i] = array("wf"=>"$wortform","treffer"=>"$treffer"); } return $fundstellen; } } else { // echo" keine tabelle
"; return false; } $link = ses_db_verbinden(false); } function ses_db_suche_get_trefferanzahl($sesid,$alle,$sw) { $treffer=0; $link = ses_db_verbinden(true); // echo"$link"; $name = "ses_".$sesid."_suche"; if (ses_table_exists($name)) { if ($alle==false) { // sleep(1); $sqlbefehl = "SELECT COUNT(suche_wf) FROM $name group by suche_wf;"; // echo"$sqlbefehl"; $res = mysql_query($sqlbefehl); $treffer = mysql_num_rows ($res); } else { $sqlbefehl = "SELECT COUNT(suche_wf) FROM $name where suche_wf LIKE '$sw';"; $res = mysql_query($sqlbefehl); $treffer = mysql_result($res,0,"count(suche_wf)"); } } $link = ses_db_verbinden(false); return $treffer; } function ses_db_suche_get_mehrfachtreffer($sesid,$suchwort,$von,$anz) { $link = ses_db_verbinden(true); $name = "ses_".$sesid."_suche"; $von=$von-1; for ($l=0;$l"; $res = mysql_query($sqlbefehl); $num = mysql_num_rows ($res); if ($num==0) { // return false; } else { for ($i=0;$i<$num;$i++) { $wortform = mysql_result($res,$i,"suche_wf"); $wort = mysql_result($res,$i,"suche_w"); $lineid = mysql_result($res,$i,"suche_lineid"); $sigle = mysql_result($res,$i,"suche_sigle"); $fundstellen[] = array("wf"=>"$wortform", "lineid" =>"$lineid", "sigle" => "$sigle", "wort" => "$wort"); } } return $fundstellen; } else { return false; } $link = ses_db_verbinden(false); } function ses_db_user($sesid) { $link = ses_db_verbinden(true); $name = "allusers"; if (ses_table_exists($name)) { // echo"Benutzertabelle gefunden
"; if (ses_get_user($sesid)==false) { ses_tabelle_fuellen($sesid,"allusers"); return true; } } else { // echo"Benutzertabelle nicht gefunden
"; if (ses_tabelle_erzeugen($sesid,"allusers")) { // echo"Benutzertabelle erzeugt
"; if (ses_get_user($sesid)==false) { ses_tabelle_fuellen($sesid,"allusers"); return true; } } else { // echo"Benutzertabelle nicht erzeugt
"; return false; } } $link = ses_db_verbinden(false); } /* function ses_stat_get_tabname() { $link = ses_db_verbinden(true); $sqlbefehl = "SELECT DATE_FORMAT(NOW(), CONCAT(ELT(MONTH(NOW()),'Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'),'_%Y'))"; $res = mysql_query($sqlbefehl); $row = mysql_fetch_row($res); $name = $row[0]; mysql_free_result($res); if (!empty($name)) { return $name; } else { return false; } $link = ses_db_verbinden(false); } */ function ses_db_stat($sesid,$stat=FALSE) { $link = ses_db_verbinden(true); $name = 'statistik'; if ($stat==FALSE) $stat = $_GET['stat']; if (ses_table_exists($name)) { if ($stat==TRUE) { ses_tabelle_fuellen($sesid,'statistik'); } } else { if (ses_tabelle_erzeugen($sesid,'statistik')) { if ($stat==TRUE) { ses_tabelle_fuellen($sesid,'statistik'); } return true; } else { return false; } } $link = ses_db_verbinden(false); } function ses_db_bot_zaehlen() { $link = ses_db_verbinden(true); $name = 'bot_zaehler'; if (ses_table_exists($name)) { ses_bot_tabelle_fuellen(); } else { if (ses_tabelle_erzeugen($sesid,'bot')) { ses_bot_tabelle_fuellen(); return true; } else { return false; } } $link = ses_db_verbinden(false); } ?>