Perso Check Script erweitern?

Shorty1968

Erfahrenes Mitglied
Hallo,
ich möchte in meinem Shop für einen Ab 18 Jahren bereich,ein Script einstezen welches ich über Google gefunden habe Personalausweis überprüfen – PHP lernen , ich möchte das man bei einem Erfolgreicher Überprüfung in eine andere Gruppe verschoben wird und der Admin des Shops eine Mail bekommt das sich ein Kunde erfolgreich Freigeschaltet hat mit angaben sprich Name des kunden.

Aber das übersteigt völlig meine Fähigkeiten und ich hoffe das wir da zusammen etwas machen können?
 
Lösung
So. Es ist geschafft.
Nur wäre es schön wenn einer von den Php Profis da nochmal rüber kuckt wegen Sql injection und was da noch gibt.

Erstens muss die Datei

shoproot/templates/tpl_modified/module/product_info/product_info_v1.html
PHP:
         <a href="../perso_check.php" target="popup" onclick="window.open(' ','popup','scrollbars=yes, width=800, height=700')">Perso Check (PopUp)</a>
in dieses
PHP:
    <a href="{'perso_check.php'|xtc_href_link}" target="popup" onclick="window.open(' ','popup','scrollbars=yes, width=800, height=700')">Perso Check (PopUp)</a>
geändert werden.

Dann sieht das Haupt Script jetzt so aus
PHP:
<?php
include ('includes/application_top.php');
/*
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
*/...
irgendwie hast du was verdreht
Glaube das es so besser ist
PHP:
<?php
error_reporting(E_ALL);
ini_set('display_errors', true);
if(!isset($_SESSION)){
        session_start();
}
//-----------------------------   danbank daten honzugeben ------------------------------
   $dbhost = 'localhost';
   $dbuser = 'test';
   $dbpass = '+++++';
   $dbname = '++++++';
   $mysqli = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);


require ('includes/application_top.php');

// create smarty elements
$smarty = new Smarty;

require (DIR_WS_INCLUDES.'header.php');

// include boxes
require (DIR_FS_CATALOG.'templates/'.CURRENT_TEMPLATE.'/source/boxes.php');

//use perso_check.php language file
require_once (DIR_WS_LANGUAGES.$_SESSION['language'].'/persocheck.php');

$breadcrumb->add('Personalausweis Check', xtc_href_link('perso_check.php', '', 'SSL'));


var_dump($_SESSION);
if(isset($_SESSION['customer_id']) AND isset($_SESSION['customer_email_address'])){

   ?>
Neuer Personalausweis:<br>
<form action="?check=1" method="post" >
IDD &lt;&lt; <input value="L7LY61T641" type="text" size="10" maxlength="10" name="ida">&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;<br>
<input value="8012104" type="text" size="7" maxlength="7" name="idb"> &lt; <input value="2409238d"type="text" size="8" maxlength="8" name="idc">&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;<input value="8"  type="text" size="1" maxlength="1" name="idd"> <br>
<input type="submit" value="überprüfen">
</form>

<br><hr><br>

Alter Personalausweis:<br>
<form action="?check=1" method="post" >
<input  type="text" size="11" maxlength="11" name="ida">&lt;&lt;
<input type="text" size="7" maxlength="7" name="idb">&lt;
<input  type="text" size="7" maxlength="7" name="idc">&lt;&lt;&lt;&lt;&lt;
<input type="text" size="1" maxlength="1" name="idd"> <br>
<input type="submit" value="überprüfen">
</form>
<?php
}else{


die("Du  mußt eingeloggtsein um die Personalausweis Daten anzugeben!!<br><a href='#'>Login Url angeben</a>");

}

//---------------------------------------------- Ab hier das perso  script unverändert , bis aufdie üaar zeilen die hinzu kamen mit der datenabnk
function check_number($id, $checknumber) {
$p = 7;
$sum = 0;
for($i=0; $i < strlen($id); $i++) {
$char = $id{$i};

if($char >= '0' && $char <= '9')
$int = intval($char);
else
$int = ord($char)-55;

$sum += $int*$p;

if($p==1)
$p=7;
else if($p==3)
$p=1;
else if($p==7)
$p=3;
}

$last_number = substr(strval($sum), -1);

return $last_number == $checknumber;
}

//Gibt die Art (neu vs. alt) des Personalausweis zurück
function perso_type($id) {
$splits = explode(" ", strtoupper($id));
if(strlen($splits[0]) == 11 && strlen($splits[1]) == 7 && strlen($splits[2]) == 7 && strlen($splits[3]) == 1) {
return 'old';
} else if(strlen($splits[0]) == 10 && strlen($splits[1]) == 7 && strlen($splits[2]) == 8 && strlen($splits[3]) == 1) {
return 'new';
} else {
return 'unknown';
}
}

//Sind die Prüfziffern gültig
function perso_checksum($id) {
$splits = explode(" ", strtoupper($id));

$checksums = array();
$perso_type = perso_type($id);

if($perso_type == 'unknown') {
return false;
}

$checksums[] = array(substr($splits[0],0,9), substr($splits[0],9,1));
$checksums[] = array(substr($splits[1],0,6), substr($splits[1],6,1));
$checksums[] = array(substr($splits[2],0,6), substr($splits[2],6,1));
$checksums[] = array(substr($splits[0],0,10).substr($splits[1],0,7).substr($splits[2],0,7), $splits[3]);


//Überprüfung der Checksummen
foreach($checksums as $checksum) {
if(!check_number($checksum[0], $checksum[1])) {
return false;
}
}

   return true;
}

//Ist der Perso noch gültig?
function perso_gueltig($id) {
   $splits = explode(" ", $id);

   $valid_until = mktime(0,0,0, substr($splits[2], 2, 2) , substr($splits[2], 4, 2) , "20".substr($splits[2], 0, 2));

   //Ist der Perso noch gültig
   if(time() > $valid_until)
      return false;

   return true;
}

//Informationen aus dem Perso beziehen
function perso_info($id) {
   $splits = explode(" ", $id);

   //$return: Ein Objekt mit den Daten aus der Ausweisnummer
   $return = new stdClass();
   $return->perso_type = perso_type($id);
   $return->geb = new stdClass();
   $return->geb->tag= $splits[1]{4} . $splits[1]{5}; //Geburtstag
   $return->geb->monat = $splits[1]{2} . $splits[1]{3}; //Geburtsmonat
   $return->geb->jahr = $splits[1]{0} . $splits[1]{1}; //Geburtsjahr
   if($return->geb->jahr > intval(date("y"))) {
$return->geb->jahr = "19".$return->geb->jahr;
   } else {
$return->geb->jahr = "20".$return->geb->jahr;
   }


   $alter = date("Y") - $return->geb->jahr;

   //Hatte er schon Geburtstag?
if( (date("n") < $return->geb->monat) OR (date("n") == $return->geb->monat AND date("j") < $return->geb->tag) ) {
$alter--;
}

   $return->alter = $alter;

   if($alter >= 18) {
      $return->volljaehrig = true;
   } else {
      $return->volljaehrig = false;
   }

   $return->ablauf = new stdClass();
   $return->ablauf->tag = $splits[2]{4} . $splits[2]{5}; //Ausweis Ablauf Tag
   $return->ablauf->monat = $splits[2]{2} . $splits[2]{3}; //Ausweis Ablauf Monat
   $return->ablauf->jahr = "20".$splits[2]{0} . $splits[2]{1}; //Ausweis Ablauf Jahr

   if($return->perso_type == 'old') {
$return->herkunft = $splits[0]{10};
   } else {
        $return->herkunft = $splits[2]{7};
   }
   //Ein Deutscher?
   if(strtolower($return->herkunft) == "d") {
      $return->deutscher = true;
   } else {
      $return->deutscher = false;
   }
   //Behördenkennzahl als Nummer
   $return->behoerdenkennzahl = substr($splits[0], 0, 4);

   return $return;
}


//Beispiel zur Verwendung
if(isset($_GET['check'])) {
   $perso_id = $_POST['ida']." ".$_POST['idb']." ".$_POST['idc']." ".$_POST['idd'];
   if(perso_checksum($perso_id)) {
      echo "Personalausweisnummer korrekt!";

//------------------------------------------------------------------------------- Das kamhinzu -------------------------------
$id_der_eingelogt_ist = $mysqli->real_escape_string($_SESSION['customer_id']);
$email_der_eingelogt_ist = $mysqli->real_escape_string($_SESSION['customer_email_address']);


   if(! $mysqli ) {
      die('Could not connect: ' . mysqli_error());
   }
   echo 'Connected successfully<br>';
   $sql = "UPDATE customers SET customers_status='6' WHERE customers_id='$id_der_eingelogt_ist'  AND customers_email_address='$email_der_eingelogt_ist'";

   if (mysqli_query($mysqli, $sql)) {
       echo 'status geändert  auf 6 für Personalausweiß Gruppe<br>';
       echo 'ID = '.htmlspecialchars($id_der_eingelogt_ist).'<br>';
       echo 'Email = '.htmlspecialchars($email_der_eingelogt_ist);
   } else {
      echo "Error updating record: " . mysqli_error($conn);
   }




//---------------------------------------------------------------------------------------------------------------------------------
   if(!perso_gueltig($perso_id)) {
      echo "<br> <b>Perso ist abgelaufen!</b>";
   }
      echo "<br><br> Daten der Ausweisnummer: <pre>";
      $data = perso_info($perso_id);
      print_r($data);
      echo "</pre>";
   } else {
      echo "Personalausweisnummer falsch!<br><br>";
   }
}

//---------------------------------------------------------------------------------------------------------------------------------

$smarty->assign('language', $_SESSION['language']);
$smarty->caching = 0;
$main_content = $smarty->fetch(CURRENT_TEMPLATE.'/module/perso_check.html');
$smarty->assign('main_content',$main_content);

$smarty->caching = 0;
if(!defined(RM)) $smarty->load_filter('output', 'note');
$smarty->display(CURRENT_TEMPLATE.'/index.html');
include ('includes/application_bottom.php');
?>
 
Dieser Teil muss in meiner Version drausen bleiben.
Code:
Neuer Personalausweis:<br>
<form action="?check=1" method="post" >
IDD &lt;&lt; <input value="L7LY61T641" type="text" size="10" maxlength="10" name="ida">&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;<br>
<input value="8012104" type="text" size="7" maxlength="7" name="idb"> &lt; <input value="2409238d"type="text" size="8" maxlength="8" name="idc">&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;<input value="8"  type="text" size="1" maxlength="1" name="idd"> <br>
<input type="submit" value="überprüfen">
</form>

<br><hr><br>

Alter Personalausweis:<br>
<form action="?check=1" method="post" >
<input  type="text" size="11" maxlength="11" name="ida">&lt;&lt;
<input type="text" size="7" maxlength="7" name="idb">&lt;
<input  type="text" size="7" maxlength="7" name="idc">&lt;&lt;&lt;&lt;&lt;
<input type="text" size="1" maxlength="1" name="idd"> <br>
<input type="submit" value="überprüfen">
</form>
den das habe ich mit
Code:
$main_content = $smarty->fetch(CURRENT_TEMPLATE.'/module/perso_check.html');
in eine eigenes Template gepackt und in meiner Version hat es auch geklappt aber in deiner bekomme ich eine Rote Seite bzw geht der Link nicht mehr.
 
Achso die geschichte. Schick mir mal die version die du vorher hattest. Mit den kram drum herum so wie du das eben in den Anhang gehabt hattest. Weil dann muß ja eigentlich nur die reinfolge geändert werden
 
So. Es ist geschafft.
Nur wäre es schön wenn einer von den Php Profis da nochmal rüber kuckt wegen Sql injection und was da noch gibt.

Erstens muss die Datei

shoproot/templates/tpl_modified/module/product_info/product_info_v1.html
PHP:
         <a href="../perso_check.php" target="popup" onclick="window.open(' ','popup','scrollbars=yes, width=800, height=700')">Perso Check (PopUp)</a>
in dieses
PHP:
    <a href="{'perso_check.php'|xtc_href_link}" target="popup" onclick="window.open(' ','popup','scrollbars=yes, width=800, height=700')">Perso Check (PopUp)</a>
geändert werden.

Dann sieht das Haupt Script jetzt so aus
PHP:
<?php
include ('includes/application_top.php');
/*
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
*/

error_reporting(E_ALL);
ini_set('display_errors', true);

if(isset($_SESSION['customer_id']) AND isset($_SESSION['customer_email_address'])){
echo "Du bist eingeloggt und kannst deine Personalien jetzt Personaliesieren";
   ?>
<html>
  <head>
    <style>
    body{
  text-align:center;

  width:80%;
  margin:0 auto;
  border:5px solid black;
  padding:10px;
}

.unten,.oben{
  text-align:center;
  display:flex;
  padding:10px;
}
.links{
  flex:1;

}
.rechts{
  flex:2;
}
h2{
    text-decoration:underline;
}
    </style>
  </head>
<body>

<h2>Neuer Personalausweis:</h2>
<div  class="oben">
<aside class="links">
<form action="?check=1" method="post" >
IDD &lt;&lt; <input value=""  type="text" size="10" maxlength="10" name="ida">&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;<br>
<input value=""  type="text" size="7" maxlength="7" name="idb"> &lt; <input value="" type="text" size="8" maxlength="8" name="idc">&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;<input value=""  type="text" size="1" maxlength="1" name="idd"> <br>
<input type="submit" value="überprüfen">
</form>
</aside>
<aside class="rechts">
  <img  class="pers" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRmYfhlN92maA5n5cCi-Af9VdKL7X1y_MiUJx8rPwa6g9n60HHJ">
</aside>
</div>
<br><hr><br>

<h2>Alter Personalausweis:</h2><br>
<div  class="unten">
<aside class="links">
<form action="?check=1" method="post" >
<input  type="text" size="11" maxlength="11" name="ida">&lt;&lt;
<input type="text" size="7" maxlength="7" name="idb">&lt;
<input  type="text" size="7" maxlength="7" name="idc">&lt;&lt;&lt;&lt;&lt;
<input type="text" size="1" maxlength="1" name="idd"> <br>
<input type="submit" value="überprüfen">
</form>
</aside>
<aside class="rechts">
  <img  class="pers" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRDoVtnkIepn0_qK7Gqu6grt7KMcN0lDN_FqdYVyDpd1woA1024Zw">
</aside>
</div>
</body>
</html>
<?php
}else{
    die("Du  mußt eingelogt sein um die Personalausweis Daten anzugeben!!<br><a href='#'>Login Url hier rein</a>");
}

//-----------------------------   danbank daten honzugeben ------------------------------
   $dbhost = 'localhost';
   $dbuser = 'sebastian1012_test';
   $dbpass = 'pwtest';
   $dbname = 'sebastian1012_test';
   $mysqli = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);

//---------------------------------------------- Ab hier das perso  script unverändert , bis aufdie üaar zeilen die hinzu kamen mit der datenabnk
function check_number($id, $checknumber) {
$p = 7;
$sum = 0;
for($i=0; $i < strlen($id); $i++) {
$char = $id{$i};

if($char >= '0' && $char <= '9')
$int = intval($char);
else
$int = ord($char)-55;
$sum += $int*$p;

if($p==1)
$p=7;
else if($p==3)
$p=1;
else if($p==7)
$p=3;
}

$last_number = substr(strval($sum), -1);
return $last_number == $checknumber;
}

//Gibt die Art (neu vs. alt) des Personalausweis zurück
function perso_type($id) {
$splits = explode(" ", strtoupper($id));
if(strlen($splits[0]) == 11 && strlen($splits[1]) == 7 && strlen($splits[2]) == 7 && strlen($splits[3]) == 1) {
return 'old';
} else if(strlen($splits[0]) == 10 && strlen($splits[1]) == 7 && strlen($splits[2]) == 8 && strlen($splits[3]) == 1) {
return 'new';
} else {
return 'unknown';
}
}

//Sind die Prüfziffern gültig
function perso_checksum($id) {
$splits = explode(" ", strtoupper($id));

$checksums = array();
$perso_type = perso_type($id);

if($perso_type == 'unknown') {
return false;
}

$checksums[] = array(substr($splits[0],0,9), substr($splits[0],9,1));
$checksums[] = array(substr($splits[1],0,6), substr($splits[1],6,1));
$checksums[] = array(substr($splits[2],0,6), substr($splits[2],6,1));
$checksums[] = array(substr($splits[0],0,10).substr($splits[1],0,7).substr($splits[2],0,7), $splits[3]);


//Überprüfung der Checksummen
foreach($checksums as $checksum) {
if(!check_number($checksum[0], $checksum[1])) {
return false;
}
}

   return true;
}

//Ist der Perso noch gültig?
function perso_gueltig($id) {
   $splits = explode(" ", $id);

   $valid_until = mktime(0,0,0, substr($splits[2], 2, 2) , substr($splits[2], 4, 2) , "20".substr($splits[2], 0, 2));

   //Ist der Perso noch gültig
   if(time() > $valid_until)
      return false;
   return true;
}

//Informationen aus dem Perso beziehen
function perso_info($id) {
   $splits = explode(" ", $id);

   //$return: Ein Objekt mit den Daten aus der Ausweisnummer
   $return = new stdClass();
   $return->perso_type = perso_type($id);
   $return->geb = new stdClass();
   $return->geb->tag= $splits[1]{4} . $splits[1]{5}; //Geburtstag
   $return->geb->monat = $splits[1]{2} . $splits[1]{3}; //Geburtsmonat
   $return->geb->jahr = $splits[1]{0} . $splits[1]{1}; //Geburtsjahr
   if($return->geb->jahr > intval(date("y"))) {
$return->geb->jahr = "19".$return->geb->jahr;
   } else {
$return->geb->jahr = "20".$return->geb->jahr;
   }


   $alter = date("Y") - $return->geb->jahr;

   //Hatte er schon Geburtstag?
if( (date("n") < $return->geb->monat) OR (date("n") == $return->geb->monat AND date("j") < $return->geb->tag) ) {
$alter--;
}

   $return->alter = $alter;

   if($alter >= 18) {
      $return->volljaehrig = true;
   } else {
      $return->volljaehrig = false;
   }

   $return->ablauf = new stdClass();
   $return->ablauf->tag = $splits[2]{4} . $splits[2]{5}; //Ausweis Ablauf Tag
   $return->ablauf->monat = $splits[2]{2} . $splits[2]{3}; //Ausweis Ablauf Monat
   $return->ablauf->jahr = "20".$splits[2]{0} . $splits[2]{1}; //Ausweis Ablauf Jahr

   if($return->perso_type == 'old') {
$return->herkunft = $splits[0]{10};
   } else {
        $return->herkunft = $splits[2]{7};
   }
   //Ein Deutscher?
   if(strtolower($return->herkunft) == "d") {
      $return->deutscher = true;
   } else {
      $return->deutscher = false;
   }
   //Behördenkennzahl als Nummer
   $return->behoerdenkennzahl = substr($splits[0], 0, 4);
   return $return;
}

if(isset($_GET['check'])) {
   $perso_id = $_POST['ida']." ".$_POST['idb']." ".$_POST['idc']." ".$_POST['idd'];
   if(perso_checksum($perso_id)) {
      echo "Personalausweisnummer korrekt!";
$id_der_eingelogt_ist = $mysqli->real_escape_string($_SESSION['customer_id']);
$email_der_eingelogt_ist = $mysqli->real_escape_string($_SESSION['customer_email_address']);


   if(! $mysqli ) {
      die('Could not connect: ' . mysqli_error());
   }
   echo 'Connected successfully<br>';
   $sql = "UPDATE customers SET customers_status='5' WHERE customers_id='$id_der_eingelogt_ist'  AND customers_email_address='$email_der_eingelogt_ist'";

   if (mysqli_query($mysqli, $sql)) {
       echo 'status geändert  auf 5 für Personalausweiß Gruppe<br>';
       echo 'ID = '.htmlspecialchars($id_der_eingelogt_ist).'<br>';
       echo 'Email = '.htmlspecialchars($email_der_eingelogt_ist);
   } else {
      echo "Error updating record: " . mysqli_error($conn);
   }
  if(!perso_gueltig($perso_id)) {
      echo "<br> <b>Perso ist abgelaufen!</b>";
   }
      echo "<br><br> Daten der Ausweisnummer: <pre>";
      $data = perso_info($perso_id);
      print_r($data);
      echo "</pre>";
   } else {
      echo "Personalausweisnummer falsch!<br><br>";
   }
}
?>

Kann da mal einer rüber kucken ?
Funktionieren tut jetzt alles , auch im Shop ist es eingebaut und läuft. Es geht nur noch darum ob der Code so bleiben kann oder wegen sq-injection und co noch was geändert werden sollte
Danke
 
Zuletzt bearbeitet:
Lösung
@basti1012 Gut, dass du fragst :) Im Folgenden meine Anmerkungen dazu:

error_reporting(E_ALL); ini_set('display_errors', true);
Bitte sowas nie auf einem Production Server ausführen.

$perso_id = $_POST['ida']." ".$_POST['idb']." ".$_POST['idc']." ".$_POST['idd'];
Das wirft möglicherweise Fehler, wenn die Variablen nicht im $_POST sind.

die('Could not connect: ' . mysqli_error());
Bitte sowas nie auf einem Production Server ausführen.

mysqli_query($mysqli, $sql)
Bitte sowas nie auf einem Production Server mit Nutzereingaben ausführen, wenn nicht absolut nötig, und auch nicht, wenn mysqli_real_escape_string im Einsatz ist. Prepared Statements!

mysqli_error($conn);
Bitte sowas nie auf einem Production Server ausführen.
 
Das wirft möglicherweise Fehler, wenn die Variablen nicht im $_POST sind.
Ok , das wahr schon im fertigen Perso Script so eingebaut und hatte da auch gar nicht drauf geachtet. Aber recht hast du natürlich ,das sollte man noch ändern.

Bitte sowas nie auf einem Production Server ausführen.

Wie meinst du das genau ? Meinst du damit ,fals mal ein Fehler kommt damit der User nicht sehen kann was da nicht läuft und da durch rückschlüsse ziehen kann wie man was umgehen könnte ? Etwas doof beschrieben ,aber habe mal gelesen das durch solche Fehler ausgaben einige Leute schon mal gehackt worden sind.

Aber gut ,solche Fehler Meldungen könnte man dann ja immer error-log schreiben ?

Du schriebst noch das mysqli_query($mysqli, $sql) auch nicht ausführen sollte.Aber wie kann man das umgehen ? Weil wird doch gebraucht um den Query auszuführen oder geht das auch anders.?

Ziel ist es ja das dieses Script mit in den Template einzubauen. Da der Shop ja schon eine Datenbank Verbindung aufbaut kann aus den Script ja der ganze Connect zur Datenbank auch raus.
Nur das mit den mysqli_query($mysqli, $sql) wüßte ich jetzt nicht wie man das ändern könnte?
 
Ich versuche es auch mit dem Template,aber irgendwie verzweifel ich daran.

Den warum auch immer greifen die include und require in der .php nicht,auch das template einbinden mit.
Code:
require ('includes/application_top.php');

// create smarty elements
$smarty = new Smarty;

require (DIR_WS_INCLUDES.'header.php');

// include boxes
require (DIR_FS_CATALOG.'templates/'.CURRENT_TEMPLATE.'/source/boxes.php');

$smarty->fetch(CURRENT_TEMPLATE.'/module/perso_check.html');
oder
Code:
$smarty->assign('language', $_SESSION['language']);
$smarty->caching = 0;
$main_content = $smarty->fetch(CURRENT_TEMPLATE.'/module/perso_check.html');
$smarty->assign('main_content',$main_content);

$smarty->caching = 0;
if(!defined(RM)) $smarty->load_filter('output', 'note');
$smarty->display(CURRENT_TEMPLATE.'/index.html');
include ('includes/application_bottom.php');
Klappt nicht in den anderen .php dateien klappt es da steht es genau so drinne.
 
Meinst du damit ,fals mal ein Fehler kommt damit der User nicht sehen kann was da nicht läuft und da durch rückschlüsse ziehen kann wie man was umgehen könnte ? Etwas doof beschrieben ,aber habe mal gelesen das durch solche Fehler ausgaben einige Leute schon mal gehackt worden sind.
Ja, genau das meinte ich ;)

Aber gut ,solche Fehler Meldungen könnte man dann ja immer error-log schreiben ?
Ja, das würde ich auch empfehlen. Möglicherweise muss man aber auch hier aufpassen, keine sensitiven Daten (Nutzername, Passwort[-hash], IP-Adresse, ... - je nach Datenschutz) da hineinzuschreiben.
Ich weiß, dass ins Errorlog zu schreiben meist eine Sache ist, die einem ein gegebenes Framework / Library abnimmt, folglich also eher keine Sache für einen Codeschnipsel ist - wie von dir geliefert, @basti1012. Der Kommentar war auch eher an @Shorty1968 gerichtet.

Du schriebst noch das mysqli_query($mysqli, $sql) auch nicht ausführen sollte.Aber wie kann man das umgehen ?
Siehe:
Prepared Statements!

in den anderen .php dateien klappt es da steht es genau so drinne.
Zeig mal die anderen PHP-Dateien und wie diese via Smarty eingebunden werden.
 
Zurück