From 25e935f489de7d13ee1d63609ea810423dc44d6a Mon Sep 17 00:00:00 2001 From: root Date: Thu, 16 Jul 2015 01:36:19 +0200 Subject: [PATCH] added exceptions, some more verification, checkboxes --- db_funcs.php | 39 ++++++++++++++------------- funcs.php | 38 +++++++++++++------------- person.php | 75 +++++++++++++++++++++++++++++++--------------------- style.css | 8 +++++- 4 files changed, 92 insertions(+), 68 deletions(-) diff --git a/db_funcs.php b/db_funcs.php index 49f4069..f358087 100644 --- a/db_funcs.php +++ b/db_funcs.php @@ -20,11 +20,12 @@ function db_get_uinfo($user, $pass){ } function db_list_anmeldungen(){ - $prep = $GLOBALS['dbc']->prepare('SELECT * FROM anmeldungen WHERE lower(uname)=lower(?)'); - $prep->execute(array($GLOBALS['uname'],)); if($GLOBALS['lvl'] >= 2){ $prep = $GLOBALS['dbc']->prepare('SELECT * FROM anmeldungen'); $prep->execute(); + }else{ + $prep = $GLOBALS['dbc']->prepare('SELECT * FROM anmeldungen WHERE lower(uname)=lower(?)'); + $prep->execute(array($GLOBALS['uname'],)); } return $prep->fetchAll(); } @@ -32,7 +33,9 @@ function db_list_anmeldungen(){ function db_get_person($id){ $prep = $GLOBALS['dbc']->prepare('SELECT * FROM anmeldungen WHERE id = ?'); $prep->execute(array($id,)); - return $prep->fetch(); + $ret = $prep->fetch(); + if($ret !== FALSE && $ret['uname'] != $GLOBALS['uname'] && $GLOBALS['lvl'] < 2) throw new Exception('PERMISSION_ERROR'); + return $ret; } function db_delete_person($id){ @@ -43,26 +46,25 @@ function db_delete_person($id){ $prep = $GLOBALS['dbc']->prepare('DELETE FROM anmeldungen WHERE id = ? and lower(uname) = ?'); $prep->execute(array($id,$GLOBALS['uname'])); } - return $prep->rowCount(); + if($prep->rowCount() != 1)throw new Exception('NOTHING_DELETED'); } function db_store_person($id, $pdata){ $p = db_get_person($id); if($p !== FALSE && $p['id'] == $id){ - // found, we do updating, if uname == uname. - if($p['uname'] == $GLOBALS['uname'] || $GLOBALS['lvl'] >= 2){ - if($pdata['analphabet'] == '')$pdata['analphabet'] = 0; - if($pdata['fotoerlaubnis'] == '')$pdata['fotoerlaubnis'] = 0; - if($pdata['videoerlaubnis'] == '')$pdata['videoerlaubnis'] = 0; - if($pdata['vorwissen'] == '')$pdata['vorwissen'] = 0; - if($pdata['gebdatum'] == '')$pdata['gebdatum'] = '1900-01-01'; - $prep = $GLOBALS['dbc']->prepare('UPDATE anmeldungen SET nname=?, vname=?, gebdatum=?, nationaliaet=?, sprachen=?, analphabet=?, '. - 'bemerkungen=?, vorwissen=?, fotoerlaubnis=?, videoerlaubnis=?, status=?,termin=? WHERE id=?'); - $prep->execute(array($pdata['nname'], $pdata['vname'], $pdata['gebdatum'], $pdata['nationaliaet'], $pdata['sprachen'], $pdata['analphabet'], - $pdata['bemerkungen'], $pdata['vorwissen'], $pdata['fotoerlaubnis'], $pdata['videoerlaubnis'], $pdata['status'], $pdata['termin'], $p['id'])); - return $prep->rowCount(); - } + // found, we do updating. We are permitted, as there was no exception rtrieving the personinfo. + if($pdata['analphabet'] == '')$pdata['analphabet'] = 0; + if($pdata['fotoerlaubnis'] == '')$pdata['fotoerlaubnis'] = 0; + if($pdata['videoerlaubnis'] == '')$pdata['videoerlaubnis'] = 0; + if($pdata['vorwissen'] == '')$pdata['vorwissen'] = 0; + if($pdata['gebdatum'] == '')$pdata['gebdatum'] = '1900-01-01'; + $prep = $GLOBALS['dbc']->prepare('UPDATE anmeldungen SET nname=?, vname=?, gebdatum=?, nationaliaet=?, sprachen=?, analphabet=?, '. + 'bemerkungen=?, vorwissen=?, fotoerlaubnis=?, videoerlaubnis=?, status=?,termin=? WHERE id=?'); + $prep->execute(array($pdata['nname'], $pdata['vname'], $pdata['gebdatum'], $pdata['nationaliaet'], $pdata['sprachen'], $pdata['analphabet'], + $pdata['bemerkungen'], $pdata['vorwissen'], $pdata['fotoerlaubnis'], $pdata['videoerlaubnis'], $pdata['status'], $pdata['termin'], $p['id'])); + if($prep->rowCount() != 1)throw new Exception('UPDATE_FAILED'); + return $id; }else{ // inserting a new person. if($pdata['analphabet'] == '')$pdata['analphabet'] = 0; @@ -74,8 +76,7 @@ function db_store_person($id, $pdata){ vorwissen, fotoerlaubnis, videoerlaubnis, status, termin) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) returning id;'); $prep->execute(array($GLOBALS['uname'], $pdata['nname'], $pdata['vname'], $pdata['gebdatum'], $pdata['nationaliaet'], $pdata['sprachen'], $pdata['analphabet'], $pdata['bemerkungen'], $pdata['vorwissen'], $pdata['fotoerlaubnis'], $pdata['videoerlaubnis'], $pdata['status'], $pdata['termin'])); - $r = $prep->fetchColumn(); - return -$r; + return $prep->fetchColumn(); } } diff --git a/funcs.php b/funcs.php index ee6e456..917705c 100644 --- a/funcs.php +++ b/funcs.php @@ -10,11 +10,11 @@ require_once('./db_funcs.php'); require_once('./html_funcs.php'); function login(){ -// if(!isset($_SERVER['HTTPS'])){ -// $url = 'https://'.$_SERVER["HTTP_HOST"].$_SERVER['REQUEST_URI']; -// header('Location: '.$url, true, 301); -// exit('

Redirecting to: '.$url.'

'); -// } + if(!isset($_SERVER['HTTPS'])){ + $url = 'https://'.$_SERVER["HTTP_HOST"].$_SERVER['REQUEST_URI']; + header('Location: '.$url, true, 301); + exit('

Redirecting to: '.$url.'

'); + } $uinfo = db_get_uinfo($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']); if($uinfo['lvl'] >= 1){ $GLOBALS['uname'] = $uinfo['uname']; @@ -42,47 +42,49 @@ function list_anmeldungen(){ } function store_person(){ - if(!isset($_REQUEST['delete']) && !isset($_REQUEST['save'])) return 0; + if(!isset($_REQUEST['delete']) && !isset($_REQUEST['save']))return; //var_export($_REQUEST); if(isset($_REQUEST['delete']))return db_delete_person($_REQUEST['id']); if(isset($_REQUEST['save'])){ - if(!isset($_REQUEST['vname']))return '-vname- not set!'; + if(!isset($_REQUEST['vname']))throw new Exception('NOT_SET vname'); $pdata['vname']=$_REQUEST['vname']; - if(!isset($_REQUEST['nname']))return '-nname- not set!'; + if(!isset($_REQUEST['nname']))throw new Exception('NOT_SET nname'); $pdata['nname']=$_REQUEST['nname']; - if(!isset($_REQUEST['gebdatum']))return '-gebdatum- not set!'; + if($pdata['vname'] == '' && $pdata['nname'] == '')throw new Exception('NO_NAME'); + + if(!isset($_REQUEST['gebdatum']))throw new Exception('NOT_SET gebdatum'); $pdata['gebdatum']=$_REQUEST['gebdatum']; - if(!isset($_REQUEST['nationaliaet']))return '-nationaliaet- not set!'; + if(!isset($_REQUEST['nationaliaet']))throw new Exception('NOT_SET nationalitaet'); $pdata['nationaliaet']=$_REQUEST['nationaliaet']; - if(!isset($_REQUEST['sprachen']))return '-sprachen- not set!'; + if(!isset($_REQUEST['sprachen']))throw new Exception('NOT_SET sprachen'); $pdata['sprachen']=$_REQUEST['sprachen']; - if(!isset($_REQUEST['vorwissen']))return '-vorwissen- not set!'; + if(!isset($_REQUEST['vorwissen']))throw new Exception('NOT_SET vorwissen'); $pdata['vorwissen']=$_REQUEST['vorwissen']; - if(!isset($_REQUEST['analphabet']))return '-analphabet- not set!'; + if(!isset($_REQUEST['analphabet']))$_REQUEST['analphabet'] = '0'; $pdata['analphabet']=$_REQUEST['analphabet']; - if(!isset($_REQUEST['fotoerlaubnis']))return '-fotoerlaubnis- not set!'; + if(!isset($_REQUEST['fotoerlaubnis']))$_REQUEST['fotoerlaubnis'] = '0'; $pdata['fotoerlaubnis']=$_REQUEST['fotoerlaubnis']; - if(!isset($_REQUEST['videoerlaubnis']))return '-videoerlaubnis- not set!'; + if(!isset($_REQUEST['videoerlaubnis']))$_REQUEST['videoerlaubnis'] = '0'; $pdata['videoerlaubnis']=$_REQUEST['videoerlaubnis']; - if(!isset($_REQUEST['bemerkungen']))return '-bemerkungen- not set!'; + if(!isset($_REQUEST['bemerkungen']))throw new Exception('NOT_SET bemerkungen'); $pdata['bemerkungen']=$_REQUEST['bemerkungen']; - if(!isset($_REQUEST['termin']))return '-termin- not set!'; + if(!isset($_REQUEST['termin']))throw new Exception('NOT_SET termin'); $pdata['termin']=$_REQUEST['termin']; - if(!isset($_REQUEST['status']))return '-status- not set!'; + if(!isset($_REQUEST['status']))throw new Exception('NOT_SET status'); $pdata['status']=$_REQUEST['status']; return db_store_person($_REQUEST['id'], $pdata); diff --git a/person.php b/person.php index 0874adb..335db4b 100644 --- a/person.php +++ b/person.php @@ -8,38 +8,53 @@ require_once('./funcs.php'); login(); -$status = store_person(); -$person = get_person($_REQUEST['id']); - -if(isset($_REQUEST['api'])){ - header('Content-Type: application/json'); - header('Access-Control-Allow-Origin: *'); - mb_internal_encoding('UTF-8'); - $send['status'] = $status; - $send['person'] = $person; - exit(json_encode($send)); -} +$id = 0; +try{ + $id = store_person(); + $person = get_person($_REQUEST['id']); + + if(isset($_REQUEST['api'])){ + header('Content-Type: application/json'); + header('Access-Control-Allow-Origin: *'); + mb_internal_encoding('UTF-8'); + $send['status'] = $status; + $send['person'] = $person; + exit(json_encode($send)); + } + + echo html_top("Person bearbeiten"); + echo "

Person bearbeiten

"; -echo html_top("Person bearbeiten"); -echo "

Person bearbeiten

"; + if(isset($_REQUEST['delete'])){ + exit('

Person gelöscht

Zurück zur Übersicht

'.html_bottom()); -if($status == 1 && isset($_REQUEST['delete'])){ - exit('

Person gelöscht

Zurück zur Übersicht

'.html_bottom()); + }elseif(isset($_REQUEST['save']) && isset($_REQUEST['id'])){ + echo '

Person aktualisiert

'; -}elseif(!isset($_REQUEST['id']) && isset($_REQUEST['delete'])){ - exit('

Nur existierende Personen können gelöscht werden

Zurück zur Übersicht

'.html_bottom()); + }elseif(isset($_REQUEST['save']) && $id >0){ + exit('

Person angelegt. ID:'.$id.' (Bearbeiten?)

'. + '

neue Person eintragen? oder doch Zurück zur Übersicht

'.html_bottom()); + } +} catch (Exception $e) { + $exc = $e->getMessage(); + if($exc == 'PERMISSION_ERROR'){ + exit('

Berechtigungsfehler.

Zurück zur Übersicht

'.html_bottom()); -}elseif(isset($_REQUEST['id']) && $person == NULL){ - exit('

Person existiert nicht

Oder die nötige Berechtigung zum einsehen dieser Person nicht vorhanden.
- Zurück zur Übersicht

'.html_bottom()); + }elseif($exc == 'NOTHING_DELETED'){ + exit('

Nur existierende Personen können gelöscht werden

Zurück zur Übersicht

'.html_bottom()); + } -}elseif($status == 1 && isset($_REQUEST['save'])){ - echo '

Person aktualisiert

'; -}elseif($status < 0){ - exit('

Person angelegt. ID:'.-$status.' (Bearbeiten?)

'. - '

neue Person eintragen? oder doch Zurück zur Übersicht

'.html_bottom()); + exit('

Unbekannter Fehler!

Bitte nutze den Live-Chat, um diesen Fehler zu melden. Bitte Fehlermeldung kopieren!
'. + 'Zurück zur Übersicht

Fehlermeldung

'.$e->getMessage()."\n".var_export($_REQUEST,true).'
'.html_bottom()); } + + +$fotoerlaubnis_check = $analphabet_check = $videoerlaubnis_check = ''; +if($person['analphabet'] == '1')$analphabet_check = 'checked="checked"'; +if($person['fotoerlaubnis'] == '1')$fotoerlaubnis_check = 'checked="checked"'; +if($person['videoerlaubnis'] == '1')$videoerlaubnis_check = 'checked="checked"'; + ?>

Zurück zur Übersicht

@@ -51,7 +66,7 @@ if($status == 1 && isset($_REQUEST['delete'])){

Nachname(n)

Geboren
-

+

Nationalität

Sprachkenntnisse
@@ -61,11 +76,11 @@ if($status == 1 && isset($_REQUEST['delete'])){

Status

Analphabet
-

+>

Fotoerlaubnis
-

+>

Videoerlaubnis
-

+>

Besonderes/Bemerkungen

Termin
@@ -76,5 +91,5 @@ if($status == 1 && isset($_REQUEST['delete'])){

Zurück zur Übersicht

- +