intern/ enthaelt dieselben Patientendaten wie der Adminbereich und war bisher genauso ungeschuetzt. config.inc.php aktiviert den Token-Filter jetzt fuer beide Verzeichnisse. Eigenen AJAX-Code oder Nicht-HTML-Ausgaben gibt es dort nicht, die Umstellung betrifft nur Formulare. intern/login.php rief nach dem Include ein zweites session_start() auf und setzte danach session.gc_maxlifetime und session.cookie_lifetime per ini_set(). Beides lief ins Leere, weil die Sitzung zu dem Zeitpunkt schon laeuft, und erzeugte Warnungen. Die Lebensdauer kommt aus session_set_cookie_params() in config.inc.php. 13 Dateien begannen mit einem UTF-8-BOM. Die drei Bytes gehen vor dem Include raus, womit die Header gesendet sind und session_set_cookie_params() sowie session_start() in config.inc.php scheitern - genau die Flags, um die es hier geht. Sichtbar wird das nur ohne output_buffering, aber darauf sollte sich die Sitzungssicherheit nicht verlassen. Nachgeprueft mit output_buffering=0 und error_reporting=E_ALL: admin/ und intern/ melden keine Header- oder Sessionwarnungen mehr, POSTs ohne Token liefern 403, mit Token laufen sie durch. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
37 lines
1.1 KiB
PHP
37 lines
1.1 KiB
PHP
<?php
|
|
/**
|
|
* @package Patientsuche
|
|
* @copyright Copyright (C) 2021 ctb-it.de Inc. All rights reserved.
|
|
*
|
|
*/
|
|
|
|
|
|
|
|
include("config.inc.php");
|
|
|
|
|
|
/* retrieve the search term that autocomplete sends */
|
|
$term = trim(strip_tags($_GET['term']));
|
|
|
|
$a_json = array();
|
|
$a_json_row = array();
|
|
|
|
$sql = 'SELECT * FROM persons WHERE vorname LIKE "%' . $term . '%" OR nachname LIKE "%' . $term . '%" OR email LIKE "%' . $term . '%" OR tele LIKE "%' . $term . '%" ORDER BY nachname, vorname ';
|
|
foreach ($pdo->query($sql) as $row) {
|
|
|
|
$userid = stripslashes($row['person_id']);
|
|
$name = stripslashes($row['nachname']);
|
|
$vorname = stripslashes($row['vorname']);
|
|
$geburtstag = stripslashes($row['geburtstag']);
|
|
$email = htmlentities(stripslashes($row['email']));
|
|
$tele = htmlentities(stripslashes($row['tele']));
|
|
$a_json_row["id"] = $userid;
|
|
$a_json_row["value"] = $vorname.' '.$name.' - '.$geburtstag.' - '.$email.' - '.$tele;
|
|
$a_json_row["label"] = $vorname.' '.$name.' - '.$geburtstag.' - '.$email.' - '.$tele;
|
|
array_push($a_json, $a_json_row);
|
|
|
|
}
|
|
// jQuery wants JSON data
|
|
echo json_encode($a_json);
|
|
|
|
?>
|