Index: trunk/info/info/alkisn/alkisgsnw.php
===================================================================
--- trunk/info/info/alkisn/alkisgsnw.php	(revision 412)
+++ trunk/info/info/alkisn/alkisgsnw.php	(revision 422)
@@ -8,4 +8,9 @@
 	2018-05-03 Neues Modul "gsnw" abgeleitet aus "fsnw"
 	2018-11-09 Umstellung Full-Schema
+	2020-02-20 Authentifizierung ausgelagert in Function darf_ich()
+	2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF']
+	2020-12-15 Input-Validation und Strict Comparisation (===)
+
+++ ToDo: Den Fall berÃŒcksichtigen, dass die Buchung vorhanden ist, aber das GB nicht (ModellschwÃ€che). Meldungen ausgeben.
 */
 
@@ -17,4 +22,6 @@
 	$sqlgs="SELECT s.gml_id, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung AS blatt, s.laufendenummer, s.buchungsart "
 		."FROM ax_buchungsstelle s JOIN ax_buchungsblatt b ON s.istbestandteilvon=b.gml_id ";
+	// Falls das Buchungsblatt fehlt (ModellschwÃ€che) wÃ€re ein LEFT JOIN hier nÃŒtzlich. Das Fehlen aber kontrollieren! ++
+
 	if ($gskennz == '') { // normaler Link ÃŒber gmlid
 		$sqlgs.="WHERE s.gml_id= $1 ";
@@ -23,5 +30,5 @@
 		$arr=explode("-", $gskennz, 4); // zerlegen
 		$zbez=trim($arr[0]); // Bezirk
-		if (strlen($zbez) == 6) {
+		if (strlen($zbez) === 6) {
 			$land=substr($zbez, 0, 2);
 			$zbez=substr($zbez, 2, 4);
@@ -73,5 +80,5 @@
 		$gmlid_d=$rowd["gml_id"];
 	}
-	if ($cntd == 0) { // KEINE dienende BS
+	if ($cntd === 0) { // KEINE dienende BS
 		$gmlid_d="";
 	} elseif ($cntd > 1) { // Problem: mehrere dienende BS
@@ -93,15 +100,14 @@
 	$gd=$gh; // dienend
 	$gr=$gd; // root
-	//$steps=0; // wie oft?
 	while($gd != "") {
-		//$steps++;
 		$gr=$gd; // sichern
 		$gd=bs_dienend($gh); // an?
 		$gh=$gd; // fuer weitere Loop
 	}
-	//$steps=$steps -1; // erfolgreiche Suchen
 	return $gr;
 }
 
+// H i e r   S t a r t
+ini_set("session.cookie_httponly", 1);
 session_start();
 $showkey="n"; $nodebug="";
@@ -118,14 +124,18 @@
 	} else {
 		$gskennz='';
-	}
-}
-if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
+		die("Fehlender Parameter");
+	}
+}
+if (isset($gkz)) {
+	if (!preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
+} else {
+	die("Fehlender Parameter");
+}
 if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
-if ($showkey == "j") {$showkey=true;} else {$showkey=false;}
+if ($showkey === "j") {$showkey=true;} else {$showkey=false;}
 if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");}
 
-require_once("alkis_conf_location.php");
-if ($auth == "mapbender") {require_once($mapbender);}
-include("alkisfkt.php");
+include "alkis_conf_location.php";
+include "alkisfkt.php";
 ?>
 <!doctype html>
@@ -145,5 +155,7 @@
 <body>
 <?php
-if ($nodebug == "j") {$debug=0;} 
+$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); }
+
+if ($nodebug === "j") {$debug=0;} 
 $con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisgsnw.php'");
 if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
@@ -163,5 +175,5 @@
 	}
 }
-echo "<p class='gskennz'>ALKIS Grundst&uuml;ck ".$gsbez."-".rtrim($gsblatt)."-".$gslfdnr."&nbsp;</p>\n\n<h2>Grundst&uuml;ck</h2>"; // Balken
+echo "<p class='balken gskennz'>ALKIS Grundst&uuml;ck ".$gsbez."-".rtrim($gsblatt)."-".$gslfdnr."&nbsp;</p>\n\n<h2>Grundst&uuml;ck</h2>"; // Balken
 
 if ($gerooted) {
@@ -176,11 +188,11 @@
 		."\n\t<td class='head nwlink noprint' title='Verlinkung zu anderen Nachweis-Arten und verbundenen Objekten'>weitere Auskunft</td>"
 	."\n</tr>";
-	//+++ Lage oder Nutzung zum FS in eine zus. Spalte oder Zeile?
-	//+++ Tabelle hat noch Platz, SQL in der Loop oder Subquery wÃ€re mÃ¶glich, weil i.d.R. nur wenige FS je GS gebucht sind.
+	//++ Lage oder Nutzung zum FS in eine zus. Spalte oder Zeile?
+	//++ Tabelle hat noch Platz, SQL in der Loop oder Subquery wÃ€re mÃ¶glich, weil i.d.R. nur wenige FS je GS gebucht sind.
 
 	$sqlfs="SELECT g.gemarkungsnummer, g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche 
 	FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 
 	WHERE f.istgebucht = $1 AND f.endet IS NULL AND g.endet IS NULL ";
-	if ($filtgem == '' ) { // ungefiltert
+	if ($filtgem === '' ) { // ungefiltert
 		$v=array($gmlid);
 	} else {
@@ -222,5 +234,5 @@
 	}
 	pg_free_result($resfs);
-	if ($j == 0) {echo "\n<tr class='unp'>\n\t<td colspan='5'><p class='warn'>Keine Flurst&uuml;cke im berechtigten Bereich.</p></td>\n</tr>";}
+	if ($j === 0) {echo "\n<tr class='unp'>\n\t<td colspan='5'><p class='warn'>Keine Flurst&uuml;cke im berechtigten Bereich.</p></td>\n</tr>";}
 	echo "\n</table>";
 } else { // konnte nicht bis zur Basis aufsteigen
@@ -236,5 +248,5 @@
 echo "\n<table class='outer'>";
 	$stufe=1;
-	$gezeigt=buchung_anzg($gmlid, "j", false, "", 2);
+	$gezeigt = buchung_anzg($gmlid, "j", false, "", 2);
 	$anzber=ber_bs_zaehl($gmlid);
 	$verf_next = array($gmlid);
@@ -257,4 +269,5 @@
 	}
 echo "\n</table>\n\n";
+//if ($debug > 1) {echo "<p class='dbg'>Buchung gezeigt = ".$gezeigt."</p>";}
 
 pg_close($con);
@@ -272,5 +285,5 @@
 echo "&nbsp;\n</div>";
 
-footer($gmlid, $_SERVER['PHP_SELF']."?", "");
+footer($gmlid, selbstverlinkung()."?", "");
 ?>
 </body>
