Index: trunk/info/info/alkisn/alkisnamstruk.php
===================================================================
--- trunk/info/info/alkisn/alkisnamstruk.php	(revision 377)
+++ trunk/info/info/alkisn/alkisnamstruk.php	(revision 387)
@@ -8,14 +8,21 @@
 	2016-02-24 Version fuer norGIS-ALKIS-Import
 	2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermÃ¶glichen
+	2017-06-02 Validierung Eingabeparameter, Feinkorrekturen
 */
 session_start();
-$id="n";
-$multiadress="n";
-$cntget = extract($_GET);
+
+$multiadress="n"; $showkey="n"; // Var. aus Parameter initalisieren
+$cntget = extract($_GET); // Parameter in Variable umwandeln
+
+// strikte Validierung aller Parameter
+if (!isset($gmlid) or !preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");}
+if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
+if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
+if ($showkey == "j") {$showkey=true;} else {$showkey=false;}
+if (!preg_match('#^[j|n]{0,1}$#', $multiadress)) {die ("Eingabefehler multiadress");}
+
 require_once("alkis_conf_location.php");
 if ($auth == "mapbender") {require_once($mapbender);}
 include("alkisfkt.php");
-$keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
-if ($keys == "j") {$showkey=true;} else {$showkey=false;}
 
 ?>
@@ -24,4 +31,5 @@
 <head>
 	<meta charset="utf-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0">
 	<title>ALKIS Person und Adresse</title>
 	<link rel="stylesheet" type="text/css" href="alkisauszug.css">
@@ -32,7 +40,4 @@
 		}
 	</script>
-	<style type='text/css' media='print'>
-		.noprint {visibility: hidden;}
-	</style>
 </head>
 <body>
@@ -42,7 +47,7 @@
 // Balken
 echo "<p class='nakennz'>ALKIS Name id=".$gmlid."&nbsp;</p>\n"
-."\n<h2><img src='ico/Eigentuemer.png' width='16' height='16' alt=''> Person</h2>\n";
+."\n<h2><img src='ico/Eigentuemer.png' width='16' height='16' alt=''> Person</h2>";
 $con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisnamstruk.php'");
-if (!$con) "\n<p class='err'>Fehler beim Verbinden der DB</p>\n";
+if (!$con) "\n<p class='err'>Fehler beim Verbinden der DB</p>";
 
 $sql="SELECT p.nachnameoderfirma, p.anrede, p.vorname, p.geburtsname, p.geburtsdatum, p.namensbestandteil, p.akademischergrad, a.v AS anrv
@@ -55,6 +60,6 @@
 
 if (!$res) {
-	echo "\n<p class='err'>Fehler bei Zugriff auf Namensnummer</p>\n";
-	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	echo "\n<p class='err'>Fehler bei Zugriff auf Namensnummer</p>";
+	if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
 }
 if ($row = pg_fetch_array($res)) {
@@ -64,21 +69,21 @@
 	$anrk=$row["anrede"]; // Key
 	$anr=$row["anrv"]; // Value
-	$nbest=$row["namensbestandteil"];
-	$aka=$row["akademischergrad"];
-
-	echo "<table>\n"
-		."\t<tr><td class='nhd'>Anrede:</td><td class='nam'>";
+	$nbest=htmlentities($row["namensbestandteil"], ENT_QUOTES, "UTF-8");
+	$aka=htmlentities($row["akademischergrad"], ENT_QUOTES, "UTF-8");
+
+	echo "<table>"
+		."\n\t<tr><td class='nhd'>Anrede:</td><td class='nam'>";
 		if ($showkey) {echo "<span class='key' title='Anredekennung'>(".$anrk.")</span> ";}
-		echo $anr."</td></tr>\n"
-		."\t<tr><td class='nhd'>Nachname oder Firma:</td><td class='nam'>".$nam."</td></tr>\n"
-		."\t<tr><td class='nhd'>Vorname:</td><td class='nam'>".$vor."&nbsp;</td></tr>\n"
-		."\t<tr><td class='nhd'>Geburtsname:</td><td class='nam'>".$geb."&nbsp;</td></tr>\n"
-		."\t<tr><td class='nhd'>Geburtsdatum:</td><td class='nam'>".$row["geburtsdatum"]."&nbsp;</td></tr>\n"
-		."\t<tr><td class='nhd'>Namensbestandteil:</td><td class='nam'>".$nbest."&nbsp;</td></tr>\n"
-		."\t<tr><td class='nhd'>akademischer Grad:</td><td class='nam'>".$aka."&nbsp;</td></tr>\n"
-	."\n</table>\n<hr>\n";
+		echo $anr."</td></tr>"
+		."\n\t<tr><td class='nhd'>Nachname oder Firma:</td><td class='nam'>".$nam."</td></tr>"
+		."\n\t<tr><td class='nhd'>Vorname:</td><td class='nam'>".$vor."&nbsp;</td></tr>"
+		."\n\t<tr><td class='nhd'>Geburtsname:</td><td class='nam'>".$geb."&nbsp;</td></tr>"
+		."\n\t<tr><td class='nhd'>Geburtsdatum:</td><td class='nam'>".$row["geburtsdatum"]."&nbsp;</td></tr>"
+		."\n\t<tr><td class='nhd'>Namensbestandteil:</td><td class='nam'>".$nbest."&nbsp;</td></tr>"
+		."\n\t<tr><td class='nhd'>akademischer Grad:</td><td class='nam'>".$aka."&nbsp;</td></tr>"
+	."\n</table>\n<hr>";
 
 	// A d r e s s e
-	echo "\n<h3><img src='ico/Strasse_mit_Haus.png' width='16' height='16' alt=''> Adresse</h3>\n";
+	echo "\n\n<h3><img src='ico/Strasse_mit_Haus.png' width='16' height='16' alt=''> Adresse</h3>";
 	// Es kÃ¶nnen redundante Adressen vorhanden sein, z.B. aus Migration, temporÃ€r aus LBESAS. Die letzte davon anzeigen.
 
@@ -90,6 +95,6 @@
 	$resa = pg_execute("", $v);
 	if (!$resa) {
-		echo "\n<p class='err'>Fehler bei Adressen</p>\n";
-		if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sqla."<br>$1=gml(Person)= '".$gmlid."'</p>\n";}
+		echo "\n<p class='err'>Fehler bei Adressen</p>";
+		if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sqla."<br>$1=gml(Person)= '".$gmlid."'</p>";}
 	}
 
@@ -111,16 +116,16 @@
 				."\t<tr><td class='nhd'>Hausnummer:</td><td class='nam'>".$hsnr."</td></tr>\n"
 				."\t<tr><td class='nhd'>Land:</td><td class='nam'>".$land."</td></tr>\n"
-			."\n</table>\n<br>\n";
+			."\n</table>\n<br>";
 
 			// Name und Adresse Kompakt (im Rahmen) - Alles was man fuer ein Anschreiben braucht
-			echo "<img src='ico/Namen.png' width='16' height='16' alt='Brief' title='Anschrift'>"
-			."\n<div class='adr' title='Anschrift'>".$anr." ".$aka." ".$vor." ".$nbest." ".$nam."<br>"
-			."\n".$str." ".$hsnr."<br>"
-			."\n".$plz." ".$ort."</div>";
+			echo "\n<img src='ico/Namen.png' width='16' height='16' alt='Brief' title='Anschrift'>"
+			."\n<div class='adr' title='Anschrift'>\n\t".$anr." ".$aka." ".$vor." ".$nbest." ".$nam."<br>"
+			."\n\t".$str." ".$hsnr."<br>"
+			."\n\t".$plz." ".$ort."\n</div>";
 		}
 	}
 	pg_free_result($resa);
 	if ($j == 0) {
-		echo "\n<p class='err'>Keine Adressen.</p>\n";
+		echo "\n<p class='err'>Keine Adressen.</p>";
 	} elseif ($j > 1) {
 		echo "\n\t\t<p class='nwlink noprint'>"
@@ -137,15 +142,15 @@
 
 	// *** G R U N D B U C H ***
-	echo "\n<hr>\n<h3><img src='ico/Grundbuch_zu.png' width='16' height='16' alt=''> Grundb&uuml;cher</h3>\n";
+	echo "\n<hr>\n<h3><img src='ico/Grundbuch_zu.png' width='16' height='16' alt=''> Grundb&uuml;cher</h3>";
 	// person <benennt< namensnummer >istBestandteilVon>                Buchungsblatt
 	//                               >bestehtAusRechtsverhaeltnissenZu> namensnummer   (Nebenzweig/SonderfÃ€lle?)
 
-	$sqlg ="SELECT n.gml_id AS gml_n, n.laufendenummernachdin1421 AS lfd, n.zaehler, n.nenner, g.gml_id AS gml_g, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung as nr, g.blattart, wb.v AS blattartv, b.bezeichnung AS beznam 
-	FROM ax_person p JOIN ax_namensnummer n ON p.gml_id=n.benennt 
-	JOIN ax_buchungsblatt g ON g.gml_id=n.istbestandteilvon 
-	LEFT JOIN ax_buchungsblattbezirk b ON g.land=b.land AND g.bezirk=b.bezirk 
-	LEFT JOIN alkis_wertearten wb ON cast(g.blattart AS character varying)=wb.k AND wb.element='ax_buchungsblatt' AND wb.bezeichnung='blattart'
-	WHERE p.gml_id= $1
-	ORDER BY b.bezeichnung, g.buchungsblattnummermitbuchstabenerweiterung, n.laufendenummernachdin1421;";
+	$sqlg ="SELECT n.gml_id AS gml_n, n.laufendenummernachdin1421 AS lfd, n.zaehler, n.nenner, g.gml_id AS gml_g, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung as nr, g.blattart, wb.v AS blattartv, b.bezeichnung AS beznam "
+	."FROM ax_person p JOIN ax_namensnummer n ON p.gml_id=n.benennt "
+	."JOIN ax_buchungsblatt g ON g.gml_id=n.istbestandteilvon "
+	."LEFT JOIN ax_buchungsblattbezirk b ON g.land=b.land AND g.bezirk=b.bezirk "
+	."LEFT JOIN alkis_wertearten wb ON cast(g.blattart AS character varying)=wb.k AND wb.element='ax_buchungsblatt' AND wb.bezeichnung='blattart' "
+	."WHERE p.gml_id= $1 "
+	."ORDER BY b.bezeichnung, g.buchungsblattnummermitbuchstabenerweiterung, n.laufendenummernachdin1421;";
 	// buchungsblatt... mal mit und mal ohne fuehrende Nullen, bringt die Sortierung durcheinander
 
@@ -155,6 +160,8 @@
 
 	if (!$resg) {
-		echo "\n<p class='err'>Fehler bei Grundbuch</p>\n";
-		if ($debug > 2) {echo "\n<p class='err'>SQL=".$sqlg."</p>\n";}
+		echo "\n<p class='err'>Fehler bei Grundbuch</p>";
+		if ($debug > 2) {
+			echo "\n<p class='err'>SQL=<br>".htmlentities($sqlg, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";
+		}
 	}
 	echo "<table class='eig'>"
@@ -165,8 +172,9 @@
 		."\n\t<td class='heads'>Namensnummer<img src='ico/sort.png' width='10' height='10' alt='' title='Sortierung'></td>"
 		."\n\t<td class='head'>Anteil</td>"
-		."\n\t<td class='head nwlink noprint' title='Link: weitere Auskunft'>weit. Auskunft</td>"
+		."\n\t<td class='head nwlink noprint' title='Verlinkung zu anderen Nachweis-Arten und verbundenen Objekten'>weitere Auskunft</td>"
 	."\n</tr>";
 
 	$i=0;
+	$zpaar=false;
 	while($rowg = pg_fetch_array($resg)) {
 		$gmln=$rowg["gml_n"];
@@ -176,21 +184,22 @@
 		$blattkey=$rowg["blattart"]; // Key
 		$blattart=$rowg["blattartv"]; // Value
-
-		echo "\n<tr>"
-			."\n\t<td class='gbl'>"; // GB-Bezirk"
+		if ($zpaar) {$trclass='paa';} else {$trclass='unp';}
+		$zpaar=!$zpaar;
+		echo "\n<tr class='".$trclass."'>"
+			."\n\t<td>"; // GB-Bezirk <td class='gbl'>
 				if ($showkey) {echo "<span class='key'>".$rowg["bezirk"]."</span> ";}
 				echo $rowg["beznam"]
 			."</td>";
 
-			echo "\n\t<td class='gbl'>"; // Blattart
+			echo "\n\t<td>"; // Blattart
 				if ($showkey) {echo "<span class='key'>".$blattkey."</span> ";}
 				echo $blattart
 			."</td>";
 
-			echo "\n\t<td class='gbl'>"; // Blatt
+			echo "\n\t<td>"; // Blatt
 				echo "<span class='wichtig'>".$rowg["nr"]."</span>"
 			."</td>";
 
-			echo "\n\t<td class='gbl'>"; // Namensnummer
+			echo "\n\t<td>"; // Namensnummer
 				if ($namnum == "") {
 					echo "&nbsp;";
@@ -200,5 +209,5 @@
 			echo "</td>";
 
-			echo "\n\t<td class='gbl'>"; // Anteil
+			echo "\n\t<td>"; // Anteil
 				if ($zae == "") {
 					echo "&nbsp;";
@@ -207,5 +216,5 @@
 				} 
 			echo "</td>"
-			."\n\t<td class='gbl'>"
+			."\n\t<td>"
 				."\n\t\t<p class='nwlink noprint'>"
 					."\n\t\t\t<a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gmlg;
@@ -222,5 +231,5 @@
 	pg_free_result($resg);
 	echo "</table>";
-	if ($i == 0) {echo "\n<p class='err'>Kein Grundbuch.</p>\n";}
+	if ($i == 0) {echo "\n<p class='err'>Kein Grundbuch.</p>";}
 } else {
 	echo "\n\t<p class='err'>Fehler! Kein Treffer f&uuml;r\n\t<a target='_blank' href='alkisrelationen.php?gkz=".$gkz."&amp;gmlid=".$gmlid."'>".$gmlid."</a>\n</p>\n\n";
