Location: PHPKode > projects > Security-Tools Database > sectool-db-0.9.4/source/edittools.php
<?php
/******************************************************************************
*;#
*;#    Security-Tool Datenbank Version 0.9.4
*;#
*;#    Copyright (C) 2002  Ansgar H. Licher
*;#    hide@address.com
*;#    http://www.team-licher.de
*;#
*;#    This program is free software; you can redistribute it and/or
*;#    modify it under the terms of the GNU General Public License as
*;#    published by the Free Software Foundation; either version 2 of
*;#    the License, or (at your option) any later version.
*;#
*;#    This program is distributed in the hope that it will be useful,
*;#    but WITHOUT ANY WARRANTY; without even the implied warranty of
*;#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
*;#    General Public License for more details.
*;#
*;#    You should have received a copy of the GNU General Public License
*;#    along with this program; if not, write to the Free Software
*;#    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*;#
/******************************************************************************
*;#
*;#    PROJEKT             Datenbank der Security-Tools von SecurityFocus.com
*;#
*;#    MODUL BEZEICHNUNG   Tool-Datensätze verwalten (neu/ändern/löschen/usw.)
*;#
*;#    MODUL ZWECK         Verwaltung der Tooldatensätze in der Datenbank
*;#
*;#    DATEINAME           edittols.php
*;#
*;#
*;#    ERSTELLT            28-Apr-2002
*;#
*;#    LETZTE
*;#    AKTUALISIERUNG      20-May-2002
*;#
*;#    ENTWICKLER          Ansgar H. Licher (hide@address.com)
*;#
*;#    PROGRAMMIERER       Ansgar H. Licher (hide@address.com)
*;#
*;#
*;# -- REVISIONS UEBERSICHT ---------------------------------------------------
*;#
*;#    VERSIONEN           0.9.1  28-Apr-2002    development release
*;#                        0.9.3  20-May-2002    following release
*;#                        0.9.4  30-May-2002    minor bugfix release
*;#                        x.x.x  xx-xxx-20xx    xxxxx
*;#
*;#
*;#    AENDERUNGEN
*;#             von        0.9.1 zu 0.9.3
*;#             Datum      20-May-2002
*;#             Autor      Ansgar H. Licher
*;#
*;#             Themen/    revised search and searchword handling:
*;#             Aspekte    each searchword is now treated as a partial word
*;#                        (so SQL statements look always like this: "... LIKE '%word%'
*;#                        In the prior version, the user had to add the * character to 
*;#                        perform such a partial word search).
*;#                        The two fiels "Plattform" and "Summary" can now be searched with an
*;#                        unlimited number of searchwords. The words are always conjuncted
*;#                        the Boole-operator "AND". More pregnant searches can be performed
*;#                        now with less number of results in big databases
*;#
*;#
*;#             von        0.9.3 zu 0.9.4
*;#             Datum      30-May-2002
*;#             Autor      Ansgar H. Licher
*;#
*;#             Themen/    bug fix: the newsletter number, the user entered was searched with the
*;#             Aspekte    SQL "... LIKE ..." statement instead of "... = ...". Look up for newsletters
*;#                        with the number "1" caused the search to look for "1", "1x", "1xx" and so on.
*;#                        Really a minor bug fix!
*;#
*;#
*;#             von        X.X.X zu X.Y.Z
*;#             Datum      xx-xxx-20xx
*;#             Autor      xxxxxxxxxxxxxx
*;#
*;#             Themen/    xxxxxxxxxxxxxxxxx
*;#             Aspekte    xxxxxxxxxxxxxxxxx
*;#
******************************************************************************/

function tools_suchmaske()
{
	global $host, $user, $pass, $db_name;
	global $session_userrights;

	$superuser_mode = is_superuser();

	$table_height = 15;
	$verbindung = mysql_connect($host,$user,$pass);
	if (!$verbindung)
		$boxstuff = "Es konnte keine Datenbankverbindung hergestellt werden.";
	else  {
		mysql_select_db($db_name, $verbindung);
		$boxstuff = "<b>Suchen in der Security-Tooldatenbank</b><P>";

		// create table for user input of search criteria
		$boxstuff .= "<FORM method='get' ACTION='show.php'>";
		$boxstuff .= "Alle Tools mit folgenden Merkmalen anzeigen:<p>";
		$boxstuff .= "<table border='0'>";
		$boxstuff .= "<colgroup><col width='100'><col width='350'><col width='180'><col width='200'></colgroup>";

		$boxstuff .= "<tr><td>Toolname:</td>";
		$boxstuff .= "<td><INPUT NAME='toolname' SIZE='50' tabindex='1'></td>";
		$boxstuff .= "<td>Entwickler:</td>";
		$boxstuff .= "<td><INPUT NAME='entwickler' SIZE='50' tabindex='4'></td>";

		$boxstuff .= "<tr><td>Plattform:</td>";
		$boxstuff .= "<td><INPUT NAME='plattform' SIZE='50' tabindex='2'></td>";
		$boxstuff .= "<td>URL/Homepage:</td>";
		$boxstuff .= "<td><INPUT NAME='source_url' SIZE='50' tabindex='5'></td>";
		$boxstuff .= "</tr>";

		$boxstuff .= "<tr><td>Stichwort:</td>";
		$boxstuff .= "<td><INPUT NAME='summary' SIZE='50' tabindex='3'></td>";
		$boxstuff .= "<td>Newsletter-#:</td>";
		$boxstuff .= "<td><INPUT NAME='newsletter' SIZE='5' tabindex='6'></td>";

		$boxstuff .= "<tr><td><br></td></tr>";

		$boxstuff .= "<tr><td colspan='4'><center>";
		$boxstuff .= "<input type='reset' value='Felder löschen' tabindex='12'>   ";
		$boxstuff .= "<input type='submit' value='Suche starten' tabindex='11'>";
		$boxstuff .= "</td></tr>";

		$boxstuff .= "<INPUT TYPE=hidden NAME=aktion VALUE=".AKTION_LISTE_INFO.">";
		$boxstuff .= "</FORM></table>";
	}

	if ($session_userrights == USER_RIGHT_RW OR $session_userrights == USER_RIGHT_SUPERUSER)
		bildschirmaufbau("center", SUCHE_HAUPTTITEL, SUCHE_SUBTITEL, "", $boxstuff, SUCHE_NEUER_EINTRAG);
	else
		bildschirmaufbau("center", SUCHE_HAUPTTITEL, SUCHE_SUBTITEL, "", $boxstuff, HILFE_LINK);
}

/********************************************************************************************/

function tools_liste($current_page)
{
	global $host, $user, $pass, $db_name;
	global $tab_tools, $tab_users, $tab_rechte;
	include('globals.inc.php');

	// Prüfe, ob derjenige, der hier hin gekommen ist, überhaupt berechtigt ist (falls nicht: absterben ...)
	if ($session_userrights != USER_RIGHT_SUPERUSER AND $session_userrights != USER_RIGHT_RW AND $session_userrights != USER_RIGHT_RO)
		die();

	$verbindung = mysql_connect($host,$user,$pass);
	if (!$verbindung)
		echo "Es konnte keine Datenbankverbindung hergestellt werden.";
	else  {
		mysql_select_db($db_name, $verbindung);
		
		// Hier zunächst die Basis-SQL-Abfrage, die ALLE Datensätze des Katalogs zurückliefert
		// (Dies entspricht der Abfrage ohne Kriterien)
		$sql = "SELECT Tool_ID, Toolname, Entwickler, URL, Plattform, Summary, Newsletter, Datum FROM $tab_tools";

		$where_clause = FALSE;
		/*
		*   Hier werden die Schlagwoerter überprüft; für jedes angegebene Schlagwort wird die SQL-Abfrage ergänzt
		*/
		
		/*
		*   Prüfe, ob ein Toolname eingegeben wurde ...
		*/
		if ($session_display_toolname)  {
			$sql .= " WHERE (Toolname LIKE '%$session_display_toolname%') ";
			$where_clause = TRUE;
		}

		/*
		*   Prüfe, ob eine Plattform eingegeben wurde ...
		*/
		if ($session_display_plattform)  {
			if ($where_clause)
				$sql .= " AND ";
			else
				$sql .= " WHERE ";

			// count number of items, the user wants to search for
			$plattform_array = explode(" ", $session_display_plattform);
			$num_plattformen = count($plattform_array);

			$sql .= "(";
			for ($i = 0; $i < $num_plattformen; $i++)  {
				if ($i > 0)
					$sql .= " AND ";
				/*
				*   if the first char is the character for exclusion of words from the search phrase
				*/
				if (first_char_is_char($plattform_array[$i], EXCLUDE_CHAR))  {
					// kill the exclude character (first character) from the searched plattform
					$plattform = substr($plattform_array[$i], 1, strlen($plattform_array[$i]));
					$sql .= "(Plattform NOT LIKE '%$plattform%') ";
				}
				else
					$sql .= "(Plattform LIKE '%$plattform_array[$i]%') ";
			}
			$sql .= ")";
			$where_clause = TRUE;
		}

		/*
		*   Prüfe, ob eine Summary (bzw. Stichworte) eingegeben wurden ...
		*/
		if ($session_display_summary)  {
			if ($where_clause)
				$sql .= " AND ";
			else
				$sql .= " WHERE ";

			// count number of items, the user wants to search for
			$summary_array = explode(" ", $session_display_summary);
			$num_summary_words = count($summary_array);

			$sql .= "(";
			for ($i = 0; $i < $num_summary_words; $i++)  {
				if ($i > 0)
					$sql .= " AND ";
				/*
				*   if the first char is the character for exclusion of words from the search phrase
				*/
				if (first_char_is_char($summary_array[$i], EXCLUDE_CHAR))  {
					// kill the exclude character (first character) from the searched plattform
					$summary = substr($summary_array[$i], 1, strlen($summary_array[$i]));
					$sql .= "(Summary NOT LIKE '%$summary%') ";
				}
				else
					$sql .= "(Summary LIKE '%$summary_array[$i]%') ";
			}
			$sql .= ")";
			$where_clause = TRUE;
		}

		/*
		*   Prüfe, ob ein Entwickler eingegeben wurde ...
		*/
		if ($session_display_entwickler)  {
			if ($where_clause)
				$sql .= " AND ";
			else
				$sql .= " WHERE ";

			$sql .= "(Entwickler LIKE '%$session_display_entwickler%') ";
			$where_clause = TRUE;
		}

		/*
		*   Prüfe, ob eine URL eingegeben wurde ...
		*/
		if ($session_display_source_url)  {
			if ($where_clause)
				$sql .= " AND ";
			else
				$sql .= " WHERE ";

			$sql .= "(URL LIKE '%$session_display_source_url%') ";
			$where_clause = TRUE;
		}

		/*
		*   Prüfe, ob eine Newsletter-Nummer eingegeben wurde ...
		*/
		if (strlen($session_display_newsletter))  {
			if ($where_clause)
				$sql .= " AND ";
			else
				$sql .= " WHERE ";

			$sql .= "(Newsletter = '$session_display_newsletter') ";
			$where_clause = TRUE;
		}

		/*
		*
		*   Das SQL-Statement ist nun (bis auf die ORDER BY Klausel) vollständig!
		*
		*   Für weitere Zwecke wird das SQL-Statement in einer Sessionvariable gespeichert
		*   (oder umgekehrt aus der Session herausgenommen)
		*
		*/
		if ($session_toolliste_modus == INFOLISTE_NEW_SEARCH)  {
			// save the SQL statment in a session variable to store the SQL statement for repeated searches
			// (the user started a new search from the starting search page)
			$session_tool_sql = $sql;
			$session_toolliste_modus = INFOLISTE_AFTER_EDIT;
		}
		else
			// restore the SQL statement to the $sql var
			// (e.g. the users finished the change of an entry)
			$sql = $session_tool_sql;


		/*
		*   Hänge zum Schluß noch die "ORDER BY ..." Klausel hinten an das fertige SQL-Statement an
		*   (dies geschieht erst hier nach allen anderen Maßnahmen, weil der Anwender ggf. ein neues
		*   Sortierkriterium ausgewählt hat. In diesem Fall muss dieses jetzt verändert werden; dies
		*   passiert eben durch Anhängen der Sessionvariable "$session_sortkey_toolliste", die das
		*   jeweils vom User ausgewählte Sortierkriterium enthält.)
		*/
		$sql .= " ORDER BY ".$session_sortkey_toolliste;
		if (DEBUG)
			echo "sql = $sql<br>";

		/*
		*   get the data from the database and count the records in the search result
		*/
		// perform the database query
		$ergebnis = mysql_query($sql, $verbindung);
		// count number of affected records (number of records, that have been found)
		$anzahl_datensaetze = mysql_num_rows($ergebnis);
		mysql_free_result($ergebnis);
		
		// count the number of ALL records in the database
		$sql_all = "SELECT Tool_ID FROM $tab_tools";
		$ergebnis = mysql_query($sql_all, $verbindung);
		$gesamtanzahl_datensaetze = mysql_num_rows($ergebnis);
		mysql_free_result($ergebnis);
		

		/*
		*   Calculate the values for PREV / NEXT
		*
		*   This piece of code for the prev/next calculation was originaly written
		*   by Matt Whitted (hide@address.com). I made several enhancements and
		*   revised the code a little bit here and a litte bit there.
		*/
		// Set page #. If no page is specified, assume page 1
		if (!$current_page)
		   $current_page = 1;

		$prev_page = $current_page - 1;
		$next_page = $current_page + 1;

		// Set up specified page
		$current_page_start = (MAX_INFOS_PER_PAGE * $current_page) - MAX_INFOS_PER_PAGE;

		if ($anzahl_datensaetze <= MAX_INFOS_PER_PAGE)
	   	$num_pages = 1;
		elseif (($anzahl_datensaetze % MAX_INFOS_PER_PAGE) == 0)
		   $num_pages = ($anzahl_datensaetze / MAX_INFOS_PER_PAGE); 
		else
		   $num_pages = ($anzahl_datensaetze / MAX_INFOS_PER_PAGE) + 1; 
		$num_pages = (int)$num_pages; 
	
		if (($current_page > $num_pages) || ($current_page < 0))  {
		   echo("Sie haben eine ungueltige Seitennummer ausgewaehlt: $current_page<br>");
		   die();
		}

		// Now the pages are calculated right, we can perform the actual displaying... 
		$sql .= " LIMIT $current_page_start, ".MAX_INFOS_PER_PAGE;
		$ergebnis = mysql_query($sql, $verbindung); 
		/*
		*   Calculation of PREV / NEXT finshed here
		*/


		/*
		*   Hier beginnt die Bildschirmausgabe der Tabelle
		*   Zunächst werden die Kopfzeilen der Tabelle angelegt
		*/
		$boxstuff = "<table border='0'>";
		$boxstuff .= "<tr>";
		$boxstuff .= "<td><center><b>Ihre Suchergebnisse<br>";
		$boxstuff .= "</b>(<font color='#ff0000'><b>$anzahl_datensaetze</b></font> von $gesamtanzahl_datensaetze Datensätzen)<br><br></b></td>";
		
		$boxstuff .= "</tr>";
		$boxstuff .= "</table>";

		if ($session_userrights == USER_RIGHT_SUPERUSER || $session_userrights == USER_RIGHT_RW)  {
			$boxstuff .= "<center><a href='show.php?aktion=".AKTION_NEU_AUTOINFO."'>Neuer Copy+Paste-Eintrag</a>\n ";
			$boxstuff .= "<a href='show.php?aktion=".AKTION_NEU_INFO."'>Neuer manueller Eintrag</a>\n <a href='index.php'> Startseite</a></center><br>";
		}

		$boxstuff .= "<b>Die gesuchten Merkmale sind: ";
		$boxstuff .= "<font color='".HINWEIS_FARBE."'>$session_display_toolname ";
		$boxstuff .= "$session_display_plattform ";
		$boxstuff .= "$session_display_summary ";
		$boxstuff .= "$session_display_entwickler ";
		$boxstuff .= "$session_display_source_url ";
		$boxstuff .= "$session_display_newsletter</font></b><br><br>";

		/*
		*   display each search result
		*/
		$table_height = 20;
		$first_loop = TRUE;
		while ($row = mysql_fetch_object($ergebnis))  {
			$boxstuff .= "<table border='0'>";
			$boxstuff .= "<colgroup><col width='40'><col width='300'><col width='250'><col width='90'><col width='120'></colgroup>";

			if ($first_loop)  {
				$first_loop = FALSE;
				$boxstuff .= "<tr>";
				$boxstuff .= "<td><b><a href='show.php?aktion=".AKTION_LISTE_INFO."&page=$current_page&sort_inflist=".DB_TOOLS_NEWSLETTER."'>NL #</a></b></td>";
				$boxstuff .= "<td><b><a href='show.php?aktion=".AKTION_LISTE_INFO."&page=$current_page&sort_inflist=".DB_TOOLS_TOOLNAME."'>Tool-Bezeichnung</a><center></b></td>";
				$boxstuff .= "<td><b><a href='show.php?aktion=".AKTION_LISTE_INFO."&page=$current_page&sort_inflist=".DB_TOOLS_ENTWICKLER."'>Entwickler</a></b></td>";
				$boxstuff .= "<td><b><a href='show.php?aktion=".AKTION_LISTE_INFO."&page=$current_page&sort_inflist=".DB_TOOLS_DATUM."'>Datum</a></b></td>";

				if ($session_userrights != USER_RIGHT_RO)
					$boxstuff .= "<td><b><center>Aktion</center></b></td>";
				$boxstuff .= "</tr>";
				$boxstuff .= "<tr><td><br></td></tr>";
			}

			$Tool_ID 			= $row->Tool_ID;
			$Newsletter			= $row->Newsletter;
			$Toolname			= $row->Toolname;
			$Entwickler			= $row->Entwickler;
			$URL					= $row->URL;
			$Plattform 			= $row->Plattform;
			$Summary				= $row->Summary;
			$Datum				= $row->Datum;

			// Erste Zeile der Ergebnis-Ausgabe
			$boxstuff .= "<tr height='$table_height'>";
			$boxstuff .= "<td><b>$Newsletter</b></td>";
			$boxstuff .= "<td><b>$Toolname</b></td>";
			$boxstuff .= "<td><b>$Entwickler</b></td>";
			// $boxstuff .= "<td><b><a href='$URL'>$URL</a></b></td>";
			$boxstuff .= "<td><b>$Datum</b></td>";		
			if ($session_userrights == USER_RIGHT_RW  ||  $session_userrights == USER_RIGHT_SUPERUSER)  {
				$boxstuff .= "<td><center><a href='show.php?alte_aktion=".AKTION_LISTE_INFO."&aktion=".AKTION_EDIT_INFO."&id=$Tool_ID'> Ändern</a> \n";
				if ($session_userrights == USER_RIGHT_SUPERUSER)
					$boxstuff .= "<a href='show.php?alte_aktion=".AKTION_LISTE_INFO."&aktion=".AKTION_LOESCHEN_INFO."&id=$Tool_ID'> Löschen</a></center></td>";
				else
					$boxstuff .= "</td>";
			}
			$boxstuff .= "</tr></table>";
	
			// Zweite Zeile der Ergebnis-Ausgabe
			$boxstuff .= "<table border='0'>";
			$boxstuff .= "<colgroup><col width='40'><col width='605'></colgroup>";
			$boxstuff .= "<tr><td>URL:</td><td><b><a href='$URL' target='_blank'>$URL</a></b></td></tr>";

			// Dritte Zeile der Ergebnis-Ausgabe
			$boxstuff .= "<tr><td>Plattform:</td><td><b>$Plattform</b></td></tr>";

			// Vierte Zeile der Ergebnis-Ausgabe
			$boxstuff .= "<tr><td>Kurzbeschreibung:</td><td>$Summary</td></tr>";
			$boxstuff .= "</table><p><br><p>";
		}

		/*
		*   display PREV / NEXT links
		*/
		if ($num_pages > 1)  {
			$prev_next_color = "#101070"; // Dunkelblau
			// $prev_next_color = "#000000"; // Schwarz
			// display "Previous"
			if ($prev_page)
				$boxstuff .= "<a href='show.php?aktion=".AKTION_LISTE_INFO."&page=$prev_page'><font color='$prev_next_color'><b>Zurück</b></a>";
			else
				; // $boxstuff .= "<font color='$prev_next_color'><b>Vorherige</b>";

			// display "Page #" (direct links)
			for ($i=1; $i <= $num_pages; $i++)
				if ($i != $current_page)
					$boxstuff .= " <a href='show.php?aktion=".AKTION_LISTE_INFO."&page=$i'><font color='$prev_next_color'><b>$i</b></a> ";
				else
					$boxstuff .= " <font color='#ff0000'><b>$i</b> ";

			// display "Next"
			if ($current_page != $num_pages)
				$boxstuff .= "<a href='show.php?aktion=".AKTION_LISTE_INFO."&page=$next_page'><font color='$prev_next_color'><b>Vorwärts</b></a>";
			else
				; // $boxstuff .= "<font color='$prev_next_color'><b>Vorwärts</b>";
			$boxstuff .= "<br><br></font></b>";
		}
		if ($session_userrights == USER_RIGHT_SUPERUSER || $session_userrights == USER_RIGHT_RW)  {
			$boxstuff .= "<center><a href='show.php?aktion=".AKTION_NEU_AUTOINFO."'>Neuer Copy+Paste-Eintrag</a>\n ";
			$boxstuff .= "<a href='show.php?aktion=".AKTION_NEU_INFO."'>Neuer manueller Eintrag</a>\n <a href='index.php'> Startseite</a></center><br>";
		}
	}
	mysql_free_result($ergebnis);
	mysql_close($verbindung);

	// reset the variables of this session vars, the values are no longer of use
	$session_display_toolname		= "";
	$session_display_plattform 	= "";
	$session_display_summary 		= "";
	$session_display_entwickler	= "";
	$session_display_source_url	= "";
	$session_display_newsletter	= "";

	//Formular wird ausgeführt	
	bildschirmaufbau("center", INFO_HAUPTTITEL. " | Suchergebnisse", INFO_SUBTITEL, "", $boxstuff, INFO_NEUER_EINTRAG);
}

/********************************************************************************************/

function neu_tool()
{
	include('globals.inc.php');
	
	// Prüfe, ob derjenige, der hier hin gekommen ist, überhaupt berechtigt ist (falls nicht: absterben ...)
	if ($session_userrights != USER_RIGHT_SUPERUSER AND $session_userrights != USER_RIGHT_RW)
		die();

	// Variablenbelegung für Formular Values
	$session_toolname		= "";
	$session_plattform 	= "";
	$session_summary 		= "";
	$session_entwickler	= "";
	$session_source_url	= "";
	$session_newsletter	= "";
	$session_datum			= "";

	$aktion2 = AKTION_NEU_2_INFO;
	// open the form ...
	formular_tool($aktion2, AKTION_LISTE_INFO, "");
}

/********************************************************************************************/

function neu_autoinfo_tool()
{
	include('globals.inc.php');
	
	// Prüfe, ob derjenige, der hier hin gekommen ist, überhaupt berechtigt ist (falls nicht: absterben ...)
	if ($session_userrights != USER_RIGHT_SUPERUSER AND $session_userrights != USER_RIGHT_RW)
		die();

	// Variablenbelegung für Formular Values
	$session_toolname		= "";
	$session_plattform 	= "";
	$session_summary 		= "";
	$session_entwickler	= "";
	$session_source_url	= "";
	$session_newsletter	= "";
	$session_datum			= "";

	$superaktion = AKTION_NEU_2_AUTOINFO;

	//Formular wird erstellt
	$boxstuff = "<table><tr><td>";
	$boxstuff .= "<P><FORM Methode='POST' action='show.php'>";
	$boxstuff .= "<table>";

	$boxstuff .= "<tr>";
	$boxstuff .= "<td><b>Newsletter #</b> (<font color='#ff0000'>*</font>)</td>";
	$boxstuff .= "</tr><tr>";
	$boxstuff .= "<td><INPUT NAME='form_newsletter' Value='$session_newsletter' SIZE='4'></td>";
	$boxstuff .= "<tr>";
	
	$boxstuff .= "<tr><td><b>KurzbeschreibungSummary:</b> (<font color='#ff0000'>*</font>)</td></tr>";
	$boxstuff .= "<tr><td><TEXTAREA NAME='form_summary' ROWS='20' COLS='130'>$session_summary</TEXTAREA></td>";
	$boxstuff .= "</tr>";
	$boxstuff .= "</table></br>";
	$boxstuff .= "(<font color='#ff0000'>*</font>) = Eingabe zwingend erforderlich!<p>";
	
	$boxstuff .= "<input type='hidden' value='$superaktion' name='superaktion'>";
	$boxstuff .= "<input type='hidden' value='".AKTION_LISTE_INFO."' name='alte_aktion'>";
	$boxstuff .= "<p><input type='submit' value='Speichern'> ";
	$boxstuff .= "   <input type='reset' name='Abbrechen'><p>";
	$boxstuff .= "<button name='Zurueck' type='button' value='Zurueck' onClick='history.back()'><font class=\"content\">Zurück ohne Speichern</font></button>";

	$boxstuff .= "</FORM>";
	$boxstuff .= "</td></tr></table>";

	//Formular wird ausgeführt
	bildschirmaufbau("center", INFO_HAUPTTITEL." | Copy+Paste Tool-Eintrag bearbeiten", INFO_SUBTITEL, "", $boxstuff, INFO_EINTRAG_ATWORK);
}

/********************************************************************************************/

function edit_tool($tool_id, $alte_aktion)
{
	global $host, $user, $pass, $db_name;
	global $tab_tools;
	include('globals.inc.php');

	// Prüfe, ob derjenige, der hier hin gekommen ist, überhaupt berechtigt ist (falls nicht: absterben ...)
	if ($session_userrights != USER_RIGHT_SUPERUSER AND $session_userrights != USER_RIGHT_RW)
		die();

	//Verbindung aufbauen
	$verbindung = mysql_connect($host,$user,$pass);
	if (!$verbindung)
		echo "Es konnte keine Datenbankverbindung hergestellt werden.";
	else  {
		// Datenbank auswählen, SQL zusammenstellen und durchführen
		mysql_select_db($db_name, $verbindung);
		// build SQL query
		$sql = "SELECT Tool_ID, Toolname, Entwickler, URL, Plattform, Summary, Newsletter, Datum FROM ".$tab_tools." WHERE Tool_ID='$tool_id'";
		if (DEBUG)
			echo "sql = $sql<br>";

		$ergebnis = mysql_query($sql, $verbindung);
		$row = mysql_fetch_object($ergebnis);
		// Ergebnisse für Formular Vorbelegung
		$tool_id					= $row->Tool_ID;
		$session_toolname		= $row->Toolname;
		$session_plattform 	= $row->Plattform;
		$session_summary 		= $row->Summary;
		$session_entwickler	= $row->Entwickler;
		$session_source_url	= $row->URL;
		$session_newsletter	= $row->Newsletter;
		$session_datum			= $row->Datum;

		$aktion2 = AKTION_EDIT_2_INFO;
		// Formular aufrufen
		mysql_free_result($ergebnis);
		mysql_close($verbindung);
		formular_tool($aktion2, $alte_aktion, $tool_id);
	}
}

/********************************************************************************************/

function loeschen_tool($tool_id, $alte_aktion)
{
	global $host, $user, $pass, $db_name;
	global $tab_tools;
	include('globals.inc.php');

	// Prüfe, ob derjenige, der hier hin gekommen ist, überhaupt berechtigt ist (falls nicht: absterben ...)
	if ($session_userrights != USER_RIGHT_SUPERUSER AND $session_userrights != USER_RIGHT_RW)
		die();

	// Frage ob man sich sicher ist, das man diesen Datensatz löschen will.
	$verbindung = mysql_connect($host,$user,$pass);
	if (!$verbindung)
		echo "Es konnte keine Datenbankverbindung hergestellt werden.";
	else  {
		mysql_select_db($db_name, $verbindung);
		$sql = "SELECT Tool_ID, Toolname, Entwickler, Plattform, Summary, Newsletter, URL, Datum FROM ".$tab_tools." WHERE Tool_ID='$tool_id'";

		$ergebnis = mysql_query($sql, $verbindung);
		$row = mysql_fetch_object($ergebnis);
		// Ergebnisse für Formular Vorbelegung
		$tool_id		= $row->Tool_ID;
		$toolname	= $row->Toolname;
		$plattform 	= $row->Plattform;
		$summary 	= $row->Summary;
		$entwickler	= $row->Entwickler;
		$source_url	= $row->URL;
		$newsletter	= $row->Newsletter;
		$datum		= $row->Datum;
		
		// prepare to display message
		$boxstuff = "<center><b><font color='#FF0000'>Möchten Sie diesen Tool-Eintrag wirklich löschen?</font></b></center><p><p>";

		$boxstuff .= "<table border='0'>";
		$boxstuff .= "<colgroup><col width='40'><col width='250'><col width='180'><col width='220'><col width='90'><col width='120'></colgroup>";
		$boxstuff .= "<tr>";
		$boxstuff .= "<td><b>NL #</b></td>";
		$boxstuff .= "<td><b>Tool-Bezeichnung</b></td>";
		$boxstuff .= "<td><b>Entwickler</b></td>";
		$boxstuff .= "<td><b>URL</b></td>";
		$boxstuff .= "<td><b>Datum</b></td>";

		$boxstuff .= "<tr>";
		$boxstuff .= "<td><font color='#FF0000'>$newsletter</font></td>";
		$boxstuff .= "<td><font color='#FF0000'>$toolname</font></td>";
		$boxstuff .= "<td><font color='#FF0000'>$entwickler</font></td>";
		$boxstuff .= "<td><font color='#FF0000'>$source_url</font></td>";
		$boxstuff .= "<td><font color='#FF0000'>$datum</font></td>";		
		$boxstuff .= "</tr></table>";

		$boxstuff .= "<br><table>";
		$boxstuff .= "<colgroup><col width='800'></colgroup>";
		$boxstuff .= "<tr><td><b>Plattform:</b></td></tr>";
		$boxstuff .= "<tr><td><font color='#FF0000'>$plattform</font></td>";
		$boxstuff .= "</tr><tr><td><br></td></tr>";
		$boxstuff .= "<tr><td><b>Kurzbeschreibung:</b></td></tr>";
		$boxstuff .= "<tr><td><font color='#FF0000'>$summary</font></td>";
		$boxstuff .= "</tr>";
		$boxstuff .= "</table></br>";

		$boxstuff .= "<center><p><p><a href='show.php?superaktion=".AKTION_LOESCHEN_2_INFO."&aktion=".$alte_aktion."&id=".$tool_id."'><font color='#FF0000'><b>Ja</b></font></a>\n <a href='show.php?aktion=".$alte_aktion."'><font color='#FF0000'><b>Nein</b></font></a></center>";
	}
	mysql_free_result($ergebnis);
	mysql_close($verbindung);
	//Formular wird ausgeführt	
	bildschirmaufbau("center", INFO_HAUPTTITEL." | Eintrag löschen", INFO_SUBTITEL, "", $boxstuff, INFO_EINTRAG_ATWORK);
}

/********************************************************************************************/

function formular_tool($superaktion, $alte_aktion, $tool_id)
{
	global $host, $user, $pass, $db_name;
	global $tab_tools;
	include('globals.inc.php');

	//Formular wird erstellt
	$boxstuff = "<table><tr><td>";
	$boxstuff .= "<P><FORM Methode='POST' action='show.php'>";
	$boxstuff .= "<table>";

	$boxstuff .= "<colgroup><col width='60'><col width='250'><col width='180'><col width='220'><col width='90'><col width='120'></colgroup>";
	$boxstuff .= "<tr>";
	$boxstuff .= "<td><b>NL #</b> (<font color='#ff0000'>*</font>)</td>";
	$boxstuff .= "<td><b>Tool-Bezeichnung</b> (<font color='#ff0000'>*</font>)</td>";
	$boxstuff .= "<td><b>Entwickler</b></td>";
	$boxstuff .= "<td><b>URL</b> (<font color='#ff0000'>*</font>)</td>";
	$boxstuff .= "<td><b>Datum</b> (<font color='#ff0000'>*</font>)</td>";
	$boxstuff .= "</tr>";
	
	$boxstuff .= "<tr>";
	$boxstuff .= "<td><INPUT NAME='form_newsletter' Value='$session_newsletter' SIZE='4'></td>";
	$boxstuff .= "<td><INPUT NAME='form_toolname' Value='$session_toolname' SIZE='40'></td>";
	$boxstuff .= "<td><INPUT NAME='form_entwickler' Value='$session_entwickler' SIZE='30'></td>";
	$boxstuff .= "<td><INPUT NAME='form_source_url' Value='$session_source_url' SIZE='35'></td>";
	$boxstuff .= "<td><INPUT NAME='form_datum' Value='$session_datum' SIZE='12'></td>";
	$boxstuff .= "</tr></table>";
	$boxstuff .= "<table><tr><td><b>Plattform:</b></td></tr>";
	$boxstuff .= "<tr><td><INPUT NAME='form_plattform' Value='$session_plattform' SIZE='123'></td>";
	$boxstuff .= "</tr>";
	$boxstuff .= "<tr><td><b>Kurzbeschreibung:</b> (<font color='#ff0000'>*</font>)</td></tr>";
	$boxstuff .= "<tr><td><TEXTAREA NAME='form_summary' ROWS='15' COLS='122'>$session_summary</TEXTAREA></td>";
	$boxstuff .= "</tr>";
	$boxstuff .= "</table></br>";
	$boxstuff .= "(<font color='#ff0000'>*</font>) = Eingabe zwingend erforderlich!<p>";
	
	$boxstuff .= "<input type='hidden' value='$superaktion' name='superaktion'>";
	$boxstuff .= "<input type='hidden' value='$alte_aktion' name='alte_aktion'>";
	$boxstuff .= "<input type='hidden' name='id' value='$tool_id'>";
	$boxstuff .= "<p><input type='submit' value='Speichern'> ";
	$boxstuff .= "   <input type='reset' name='Abbrechen'><p>";
	$boxstuff .= "<button name='Zurueck' type='button' value='Zurueck' onClick='history.back()'><font class=\"content\">Zurück ohne Speichern</font></button>";

	$boxstuff .= "</FORM>";
	$boxstuff .= "</td></tr></table>";

	//Formular wird ausgeführt
	bildschirmaufbau("center", INFO_HAUPTTITEL." | Tool-Eintrag bearbeiten", INFO_SUBTITEL, "", $boxstuff, INFO_EINTRAG_ATWORK);
}

/********************************************************************************************/

function pruefe_plausibilitaet_tool_eintrag($superaktion, $alte_aktion)
{
	global $host, $user, $pass, $db_name;
	include('globals.inc.php');

	// Prüfe, ob derjenige, der hier hin gekommen ist, überhaupt berechtigt ist (falls nicht: absterben ...)
	if ($session_userrights != USER_RIGHT_SUPERUSER AND $session_userrights != USER_RIGHT_RW)
		die();

	$db_verbindung = mysql_connect($host,$user,$pass);
	if (!$db_verbindung)
		echo "Es konnte keine Datenbankverbindung hergestellt werden.";
	else  {
		// Datenbank auswählen
		mysql_select_db($db_name, $db_verbindung);
		
		// Plausibilität 1: Prüfe, ob eine Newsletter-# angegeben wurde
		$newsletter_ok = FALSE;
		if ($session_newsletter != "")
			$newsletter_ok = TRUE;

		// Plausibilität 2: Prüfe, ob ein Toolname angegeben wurde
		$toolname_ok = FALSE;
		if ($session_toolname != "")
			$toolname_ok = TRUE;

		// Plausibilität 3: Prüfe, ob ein URL angegeben wurde
		$url_ok = FALSE;
		if ($session_source_url != "")
			$url_ok = TRUE;

		// Plausibilität 4: Prüfe, ob ein Datum angegeben wurde
		$datum_ok = FALSE;
		if ($session_datum != "")
			$datum_ok = TRUE;

		// Plausibilität 5: Prüfe, ob eine Kurzbeschreibung angegeben wurde
		$summary_ok = FALSE;
		if ($session_summary != "")
			$summary_ok = TRUE;

		// Alle Plausis sind durchlaufen. Hier wird im Falle von Fehlern das Ergebnis präsentiert
		if (!$newsletter_ok || !$toolname_ok|| !$url_ok  || !$datum_ok || !$summary_ok)  {
			$boxstuff = "<font color=#ff0000><b>Folgende Fehler wurden bei der Eingabe festgestellt:</b><p></font>";
			if (!$newsletter_ok)
				$boxstuff .= "Sie müssen die Nummer des SF-Newsletters eingeben!<p>";

			if (!$toolname_ok)
				$boxstuff .= "Sie müssen den Namen des Tools eingeben!<p>";

			if (!$url_ok)
				$boxstuff .= "Sie müssen den URL zur Homepage des Tools eingeben!<p>";

			if (!$datum_ok)
				$boxstuff .= "Sie müssen das Datum der Erfassung eingeben!<p>";

			if (!$summary_ok)
				$boxstuff .= "Sie müssen eine Kurzbeschreibung eingeben!<p>";

			$boxstuff .= "<P><FORM>";
			$boxstuff .= "<button name='Zurueck' type='button' value='Zurueck' onClick='history.back()'><font class=\"content\">Zurück zur Eingabe</font></button>";
			$boxstuff .= "</FORM>";

			// Die Meldung anzeigen ...
			if ($superaktion == AKTION_NEU_2_INFO)
				bildschirmaufbau("center", INFO_HAUPTTITEL." | Neuen Tool-Eintrag erfassen", INFO_SUBTITEL, "", $boxstuff, INFO_EINTRAG_ATWORK);
			else
				bildschirmaufbau("center", INFO_HAUPTTITEL." | Tool-Eintrag bearbeiten", INFO_SUBTITEL, "", $boxstuff, INFO_EINTRAG_ATWORK);
		}
		else
			if ($superaktion == AKTION_NEU_2_INFO)  // Gebe Ok-Wert für Einfügen des Datensatzes zurück
				return(OK_INSERT_INFO);
			if ($superaktion == AKTION_EDIT_2_INFO)  // Gebe Ok-Wert für Update des Datensatzes zurück
				return(OK_UPDATE_INFO);
	}
}

/********************************************************************************************/

function neu_2_tool()
{
	global $host, $user, $pass, $db_name, $tab_tools;
	include('globals.inc.php');

	// Prüfe, ob derjenige, der hier hin gekommen ist, überhaupt berechtigt ist (falls nicht: absterben ...)
	if ($session_userrights != USER_RIGHT_SUPERUSER AND $session_userrights != USER_RIGHT_RW)
		die();
		
	// Nimmt die Formulardaten entgegen und erzeugt neuen Datensatz.
	$verbindung = mysql_connect($host,$user,$pass);
	if (!$verbindung)
		echo "Es konnte keine Datenbankverbindung hergestellt werden.";
	else  {
		mysql_select_db($db_name, $verbindung);

		// Now insert the new record into the database
		$sql = "INSERT INTO ".$tab_tools." (Toolname, Entwickler, URL, Plattform, Summary, Newsletter, Datum)
					VALUES ('$session_toolname', '$session_entwickler', '$session_source_url',
					'$session_plattform', '$session_summary', '$session_newsletter', '$session_datum')";

		$ergebnis = mysql_query($sql, $verbindung);
		if (!$ergebnis)
			echo "Es ist ein Fehler mit der Datenbank aufgetreten.";
		else
			mysql_close($verbindung);
	}
}

/********************************************************************************************/

/*
	Nimmt die Copy+Paste-Formulardaten entgegen und extrahiert die einzelnen Datenfelder
*/
function neu_2_autoinfo_tool($alte_aktion)
{
	global $host, $user, $pass, $db_name, $tab_tools;
	include('globals.inc.php');

	// Prüfe, ob derjenige, der hier hin gekommen ist, überhaupt berechtigt ist (falls nicht: absterben ...)
	if ($session_userrights != USER_RIGHT_SUPERUSER AND $session_userrights != USER_RIGHT_RW)
		die();

	/***********************************************************************************************************
	Beispiel für einen Copy+Paste-Eintrag (wird per Copy & Paste / Drag & Drop aus dem SecurityFocus Newsletter
	entnommen und als Textbereich in das Formular eingefügt. Der Text steht hier in der Variable
	***$session_summary*** zur Verfügung. Es müssen nun die einzelnen Werte für die einzelnen Datenfelder der
	Datenbank extrahiert werden.
	Der Wert für die Newsletter-Nr. sollte vom Anwender manuell eingegeben worden sein. Der Wert befindet sich
	in der Variable ***$session_newsletter***.
	
	<----- EINTRAG BEGINNT HÌER ----->
	1. Logwatch v2.8.5
	by Kirk Bauer
	Relevant URL:
	http://www.logwatch.org
	Platforms: MPE/iX, N/A
	Summary:
	
	Logwatch analyzes and reports on system logs. It is a customizable and
	pluggable log-monitoring system and will go through the logs for a given
	period of time and make a customizable report. It should work right out of
	the package on most systems.
	<----- EINTRAG ENDET HÌER ----->
	**********************************************************************************************************/

	$tmp = $session_summary;

	// Toolname
	$pos = strpos($tmp, chr(10));
	$session_toolname = rtrim(substr($tmp, 0, $pos));
	$pos2 = strpos($session_toolname, " ") + 1;
	$session_toolname = substr($session_toolname, $pos2, strlen($session_toolname));
	$tmp = ltrim(substr($tmp, $pos, strlen($tmp)));

	// Entwickler
	$pos = strpos($tmp, chr(10));
	$session_entwickler = rtrim(substr($tmp, 0, $pos));
	$pos2 = strpos($session_entwickler, " ") + 1;
	$session_entwickler = substr($session_entwickler, $pos2, strlen($session_entwickler));
	$tmp = ltrim(substr($tmp, $pos, strlen($tmp)));

	// Text: "Relevant URL:" -- dieser Text wird ausgespart
	$pos = strpos($tmp, chr(10));
	$tmp = ltrim(substr($tmp, $pos, strlen($tmp)));

	// URL
	$pos = strpos($tmp, chr(10));
	$session_source_url = rtrim(substr($tmp, 0, $pos));
	$tmp = ltrim(substr($tmp, $pos, strlen($tmp)));

	// Plattform
	$pos = strpos($tmp, chr(10));
	$session_plattform = rtrim(substr($tmp, 0, $pos));
	$pos2 = strpos($session_plattform, " ") + 1;
	$session_plattform = substr($session_plattform, $pos2, strlen($session_plattform));
	$tmp = ltrim(substr($tmp, $pos, strlen($tmp)));

	// Text: "Summary" -- dieser Text wird ausgespart; der verbleibene Rest in $tmp ist die
	// eigentliche Summary, die in die Datenbank kommt
	$pos = strpos($tmp, chr(10));
	$session_summary = ltrim(substr($tmp, $pos, strlen($tmp)));

	$session_datum	= date("Y-m-d");

	$aktion2 = AKTION_NEU_2_INFO;
	// Formular aufrufen
	formular_tool($aktion2, $alte_aktion, -1);
}

/********************************************************************************************/

function edit_2_tool($tool_id)
{
	global $host, $user, $pass, $db_name, $tab_tools;
	include('globals.inc.php');

	// Prüfe, ob derjenige, der hier hin gekommen ist, überhaupt berechtigt ist (falls nicht: absterben ...)
	if ($session_userrights != USER_RIGHT_SUPERUSER AND $session_userrights != USER_RIGHT_RW)
		die();

	$verbindung = mysql_connect($host,$user,$pass);
	if (!$verbindung)
		echo "Es konnte keine Datenbankverbindung hergestellt werden.";
	else  {
		mysql_select_db($db_name, $verbindung);

		// Der Datensatz in der Datenbank wird aktualisiert ...
		$sql = "UPDATE ".$tab_tools."
					SET Toolname='$session_toolname', Entwickler='$session_entwickler', URL='$session_source_url',
					Plattform='$session_plattform', Summary='$session_summary', Newsletter='$session_newsletter', 
					Datum='$session_datum' WHERE Tool_ID='$tool_id'";

		$ergebnis = mysql_query($sql, $verbindung);
		if (!$ergebnis)
			echo "Es ist ein Fehler mit der Datenbank aufgetreten.";
		else
			mysql_close($verbindung);
	}
}

/********************************************************************************************/

function loeschen_2_tool($tool_id)
{
	global $host, $user, $pass, $db_name, $tab_tools;
	global $session_userrights;

	// Prüfe, ob derjenige, der hier hin gekommen ist, überhaupt berechtigt ist (falls nicht: absterben ...)
	if ($session_userrights != USER_RIGHT_SUPERUSER AND $session_userrights != USER_RIGHT_RW)
		die();

	// Löschvorgang wird durchgeführt
	$verbindung = mysql_connect($host,$user,$pass);
	if (!$verbindung)
		echo "Es konnte keine Datenbankverbindung hergestellt werden.";
	else  {
		mysql_select_db($db_name, $verbindung);

		// delete the record from the database
		$sql = "DELETE FROM ".$tab_tools." WHERE Tool_ID='$tool_id'";	
		$ergebnis = mysql_query($sql, $verbindung);
		
		if (!$ergebnis)
			echo "Es ist ein Fehler mit der Datenbank aufgetreten.";
		else
			mysql_close($verbindung);
	}
}

/********************************************************************************************/

function first_char_is_char($str, $char)
{
	return( substr($str, 0, 1) == $char ? TRUE : FALSE );
}

/********************************************************************************************/

function last_char_is_char($str, $char)
{
	return( substr($str, strlen($str)-1, 1) == $char ? TRUE : FALSE );
}

/********************************************************************************************/

?>
Return current item: Security-Tools Database