Re: benutzerstatus abfragen bzw. vergleichen
Verfasst: 20.02.2024 20:16
Nien nicht ganz. es müssen zwei bedingungen erfüllt sein..
entweder leer und user ist normal
oder leer und user ist gründer.
Das leer mus in jedemfall in verbindung mit einem der beiden anderen zusammen true ergeben.
Sonst würde der Block ja jedesmall ausgefüllt wenn das forum geladen wird.
Um mal zum verständniss den genazen code der diese aufgabe macht:
Wenn du den auseinander pflückst ist der erste teil:
der soll also bei aufruf des forums prüfen auf folgendes:
Also der teil macht folgendes.
Wenn also jetzt die Seite aufgerufen soll erstmal geprüft werden ob der Benutzer eine csstamp Eintrag in der Tabelle hate und falls nicht dann wird geprüft ob eben normaler oder Gründer ist. dann wird ein csstamp (Hashwert aus time()) erstellt.
Das hab ich halt so gemacht weil wenn ein Benutzer sich registriert wird ja in dem Feld nix eingetragen. Ja ich weis man könnte das wahrscheinlich auch so programmieren das bei der Registrierung der Hashwert eingetragen wird. Ich weis nur leider nicht wie. Weil mein wissen dafür eben noch nicht ausreichend ist. Wenn man das so machen könnte das bei der Registrierung eben schon der wert individuell eingetragen wird würde man diesen Code teil nämlich nicht brauchen.
Nachfolgend der zweite Code teil:
Damit wird die id ermittelt welche den csstamp des besuchers hat. und dann der selbe hashwert in die rufzeichentabelle eingetragen. Somit ist die verknüpfung des Besuchers mit der Rufzeichendatenbankstabelle hergestellt.
Ich hoffe ich konnte es somit verdeutlichen.
entweder leer und user ist normal
oder leer und user ist gründer.
Das leer mus in jedemfall in verbindung mit einem der beiden anderen zusammen true ergeben.
Sonst würde der Block ja jedesmall ausgefüllt wenn das forum geladen wird.
Um mal zum verständniss den genazen code der diese aufgabe macht:
Code: Alles auswählen
if (empty($this->user->data['csstamp']) && $this->user->data['user_type'] == USER_NORMAL || $this->user->data['user_type'] == USER_FOUNDER)
{
$cs_timestamp = time();
$sql = 'UPDATE ' . USERS_TABLE . '
SET csstamp = "' . $this->db->sql_escape($cs_timestamp) . '"
WHERE user_id = "' . $this->db->sql_escape($this->user->data['user_id']) . '"';
$this->db->sql_query($sql);
}
$sql = 'SELECT id
FROM ' . $this->callsign_table . '
WHERE csstamp = "' . $this->db->sql_escape($this->user->data['csstamp']) . '"';
$result = $this->db->sql_query($sql);
$id = $this->db->sql_fetchrow($result);
$this->db->sql_freeresult($result);
if (empty($id) && $this->user->data['user_type'] == USER_NORMAL || $this->user->data['user_type'] == USER_FOUNDER)
{
$sql_ary = [];
$sql_ary[] = [
'csstamp' => $this->user->data['csstamp'],
'callsign_1' => '',
'callsign_2' => '',
'callsign_3' => '',
'callsign_4' => '',
'callsign_5' => '',
'vorname' => '',
'nachname' => '',
'street' => '',
'plz' => '',
'city' => '',
'country' => '',
'email' => '',
'flag' => '',
'qslmgrcallsign ' => '',
'homepage' => '',
'twitter' => '',
'skype' => '',
'bio' => '',
'lat_n' => '',
'lat_n_deg' => '',
'lat_n_min' => '',
'lat_n_sec' => '',
'len_e' => '',
'len_e_deg' => '',
'len_e_min' => '',
'len_e_sec' => '',
'pic' => '',
'tech' => '',
'gridsq' => '',
'itzone' => '',
'cqzone' => '',
'qslmgr' => 0,
'qslvorname' => '',
'qslnachname' => '',
'qslstreet' => '',
'qslcity' => '',
'qslcountry' => '',
];
$this->db->sql_multi_insert($this->callsign_table, $sql_ary);
}
Wenn du den auseinander pflückst ist der erste teil:
Code: Alles auswählen
if (empty($this->user->data['csstamp']) && $this->user->data['user_type'] == USER_NORMAL || $this->user->data['user_type'] == USER_FOUNDER)
{
$cs_timestamp = time();
$sql = 'UPDATE ' . USERS_TABLE . '
SET csstamp = "' . $this->db->sql_escape($cs_timestamp) . '"
WHERE user_id = "' . $this->db->sql_escape($this->user->data['user_id']) . '"';
$this->db->sql_query($sql);
}
Also der teil macht folgendes.
Wenn also jetzt die Seite aufgerufen soll erstmal geprüft werden ob der Benutzer eine csstamp Eintrag in der Tabelle hate und falls nicht dann wird geprüft ob eben normaler oder Gründer ist. dann wird ein csstamp (Hashwert aus time()) erstellt.
Das hab ich halt so gemacht weil wenn ein Benutzer sich registriert wird ja in dem Feld nix eingetragen. Ja ich weis man könnte das wahrscheinlich auch so programmieren das bei der Registrierung der Hashwert eingetragen wird. Ich weis nur leider nicht wie. Weil mein wissen dafür eben noch nicht ausreichend ist. Wenn man das so machen könnte das bei der Registrierung eben schon der wert individuell eingetragen wird würde man diesen Code teil nämlich nicht brauchen.
Nachfolgend der zweite Code teil:
Code: Alles auswählen
$sql = 'SELECT id
FROM ' . $this->callsign_table . '
WHERE csstamp = "' . $this->db->sql_escape($this->user->data['csstamp']) . '"';
$result = $this->db->sql_query($sql);
$id = $this->db->sql_fetchrow($result);
$this->db->sql_freeresult($result);
if (empty($id) && $this->user->data['user_type'] == USER_NORMAL || $this->user->data['user_type'] == USER_FOUNDER)
{
$sql_ary = [];
$sql_ary[] = [
'csstamp' => $this->user->data['csstamp'],
'callsign_1' => '',
'callsign_2' => '',
'callsign_3' => '',
'callsign_4' => '',
'callsign_5' => '',
'vorname' => '',
'nachname' => '',
'street' => '',
'plz' => '',
'city' => '',
'country' => '',
'email' => '',
'flag' => '',
'qslmgrcallsign ' => '',
'homepage' => '',
'twitter' => '',
'skype' => '',
'bio' => '',
'lat_n' => '',
'lat_n_deg' => '',
'lat_n_min' => '',
'lat_n_sec' => '',
'len_e' => '',
'len_e_deg' => '',
'len_e_min' => '',
'len_e_sec' => '',
'pic' => '',
'tech' => '',
'gridsq' => '',
'itzone' => '',
'cqzone' => '',
'qslmgr' => 0,
'qslvorname' => '',
'qslnachname' => '',
'qslstreet' => '',
'qslcity' => '',
'qslcountry' => '',
];
$this->db->sql_multi_insert($this->callsign_table, $sql_ary);
Ich hoffe ich konnte es somit verdeutlichen.