Browse code

bestehende Kunden über die API prüfen

Bernd Wurst authored on06/06/2020 06:20:57
Showing6 changed files
... ...
@@ -6,32 +6,44 @@ if (!isset($_SESSION['phone'])) {
6 6
     die();
7 7
 }
8 8
 
9
-function suche_kunde($number) {
9
+function suche_kunde($name, $number) {
10 10
         global $content;
11 11
         if (! $number) {
12 12
             return NULL;
13 13
         }
14
-        $recordfile = @json_decode(@file_get_contents('../record.json'), TRUE);
15
-        $ip = $_SERVER['REMOTE_ADDR'];
16
-        $count = 0;
17
-        foreach ($recordfile as $idx => $record) {
18
-            if ($record['ts'] < time() - 600) {
19
-                unset($recordfile[$idx]);
20
-            }
21
-            if ($record['ip'] == $ip) {
22
-                $count++;
14
+       $data = array("name" => $name, "telefon" => $number);
15
+
16
+        $curl = curl_init();
17
+
18
+        curl_setopt_array($curl, array(
19
+          CURLOPT_URL => "https://api.mosterei-wurst.de/api/v1/kunde/pruefen",
20
+          CURLOPT_RETURNTRANSFER => true,
21
+          CURLOPT_ENCODING => "",
22
+          CURLOPT_MAXREDIRS => 10,
23
+          CURLOPT_TIMEOUT => 30,
24
+          CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
25
+          CURLOPT_HTTPHEADER => array("Content-Type: application/json"),
26
+          CURLOPT_CUSTOMREQUEST => "POST"));
27
+
28
+        curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
29
+
30
+        $response = curl_exec($curl);
31
+        $err = curl_error($curl);
32
+        
33
+        $ret = @json_decode($response, true);
34
+        if (!$ret || $ret["status"] == 'error' || !$ret["kundennr"]) {
35
+            if (isset($ret["errno"]) && $ret["errno"] == "429") {
36
+                $content .= '<div class="card text-white bg-danger mb-3">
37
+                <div class="card-header">Fehler</div>
38
+                <div class="card-body">Die Suche anhand der Telefonnummer wurde verweigert, weil zu viele Zugriffe auf diese Funktion vorgenommen wurden. Bitte geben Sie Ihre Daten neu ein oder versuchen Sie es in wenigen Minuten noch einmal.</div>
39
+                </div>';
23 40
             }
24
-        }
25
-        $recordfile[] = array('ip' => $ip, 'ts' => time());
26
-        file_put_contents('../record.json', json_encode($recordfile));
27
-        if ($count > 1 || count($recordfile) > 10) {
28
-            $content .= '<div class="card text-white bg-danger mb-3">
29
-            <div class="card-header">Fehler</div>
30
-            <div class="card-body">Die Suche anhand der Telefonnummer wurde verweigert, weil zu viele Zugriffe auf diese Funktion vorgenommen wurden. Bitte geben Sie Ihren Namen nochmal ein oder versuchen Sie es in wenigen Minuten noch einmal.</div>
31
-            </div>';
32 41
             return null;
33 42
         }
43
+        
44
+         return $ret;
34 45
 
46
+        /*
35 47
         $kundenliste = json_decode(file_get_contents('../kunden.json'), TRUE);
36 48
         foreach ($kundenliste as $k) {
37 49
                 foreach ($k['kontakt'] as $kon) {
... ...
@@ -40,13 +52,24 @@ function suche_kunde($number) {
40 52
                         }
41 53
                 }
42 54
         }
55
+        */
43 56
 }
44 57
 
45 58
 
46 59
 $content = '';
47
-$kunde = suche_kunde($_SESSION['phone']);
60
+$kunde = null;
61
+if (isset($_SESSION['name'])) {
62
+    $kunde = suche_kunde($_SESSION['name'], $_SESSION['phone']);
63
+}
48 64
 if ($kunde) {
49
-    $_SESSION['kundennr'] = $kunde['id'];
65
+    $_SESSION['kundennr'] = $kunde['kundennr'];
66
+    $fields = array("fname" => "vorname", "lname" => "nachname", "address" => "adresse", "zip" => "plz", "city" => "ort");
67
+
68
+    foreach ($fields as $sesskey => $arrkey) {
69
+        $_SESSION[$sesskey] = $kunde[$arrkey];
70
+    }
71
+    unset($_SESSION['name']);
72
+
50 73
 } else {
51 74
     unset($_SESSION['kundennr']);
52 75
 }
... ...
@@ -60,16 +83,24 @@ if (isset($_REQUEST['error'])) {
60 83
 
61 84
 $headline = 'Adresse eingeben';
62 85
 if ($kunde) {
86
+    $headline = 'Willkommen zurück!';
63 87
     $content .= '
64
-        <p>Wir haben Ihre Telefonnummer erkannt und diese Felder schon einmal vorausgefüllt. Bitte prüfen Sie die Angaben und ändern Sie die Inhalte bei Bedarf.</p>
88
+        <p>Schön, wir kennen uns ja schon! Wenn sich an Ihrer Adresse seit Ihrem letztem Besuch etwas geändert hat, ändern Sie es bitte hier. Ansonsten können Sie die Felder so lassen. Aus Datenschutzgründen werden die gespeicherten Daten hier nicht angezeigt.</p>
65 89
     ';
66 90
 } else { 
67 91
     $content .= '
68
-        <p>Bitte geben Sie in diesem Schritt Ihre Daten ein.</p>
92
+        <p>Bitte geben Sie in diesem Schritt Ihre Adresse ein.</p>
69 93
     ';
70 94
 }
71 95
 if (!$kunde) {
72
-    $kunde = array('nachname' => '', 'vorname' => '', 'strasse' => '', 'plz' => '', 'ort' => '');
96
+    $kunde = array('nachname' => '', 'vorname' => '', 'adresse' => '', 'plz' => '', 'ort' => '');
97
+    $fields = array("fname" => "vorname", "lname" => "nachname", "address" => "adresse", "zip" => "plz", "city" => "ort");
98
+
99
+    foreach ($fields as $sesskey => $arrkey) {
100
+        if (isset($_SESSION[$sesskey])) {
101
+            $kunde[$arrkey] = $_SESSION[$sesskey];
102
+        }
103
+    }
73 104
 }
74 105
 
75 106
 $content .= '
... ...
@@ -80,7 +111,7 @@ $content .= '
80 111
         <div class="col-sm-6"><input class="form-control" id="lname" name="lname" type="text" placeholder="Nachname" autocomplete="family-name" value="'.$kunde['nachname'].'"></div>
81 112
     </div>
82 113
     <div class="form-group form-group-lg row">
83
-        <div class="col-sm-12"><input class="form-control" id="address" name="address" type="text" placeholder="Straße" autocomplete="street-address" value="'.$kunde['strasse'].'"></div>
114
+        <div class="col-sm-12"><input class="form-control" id="address" name="address" type="text" placeholder="Straße" autocomplete="street-address" value="'.$kunde['adresse'].'"></div>
84 115
     </div>
85 116
     <div class="form-group form-group-lg row">
86 117
         <div class="col-sm-4"><input class="form-control" id="zip" name="zip" type="text" placeholder="PLZ" autocomplete="postal-code" value="'.$kunde['plz'].'"></div>
... ...
@@ -28,6 +28,8 @@ $(function () {
28 28
         $('#btn-anhaenger').addClass('btn-primary');
29 29
         $('#btn-gitterbox').removeClass('btn-primary');
30 30
         $('#btn-gitterbox').addClass('btn-default');
31
+        $('#modal-kennzeichen').modal("show");
32
+        $('#kennz-modal').focus();
31 33
          $('#details-anhaenger').show();
32 34
         $('#details-gitterbox').hide();
33 35
         $('#lieferart').val('anhaenger');
... ...
@@ -44,5 +46,10 @@ $(function () {
44 46
                 $('form').submit();
45 47
             });
46 48
         });
49
+    $('#btn-kennzeichen-ok').click(function () {
50
+        $('#kennz').val($('#kennz-modal').text());
51
+        $('#modal-kennzeichen').modal("hide");
52
+        $('form').submit();
53
+    });
47 54
 });
48 55
 
... ...
@@ -3,6 +3,7 @@
3 3
 
4 4
 body {
5 5
   font-family: linux_biolinum_o;
6
+  font-size: 150%;
6 7
   background-color: #ffa;
7 8
 }
8 9
 
... ...
@@ -17,7 +18,7 @@ h1, h2, h3 {
17 18
 }
18 19
 @media(min-width:992px){
19 20
     h1 {
20
-        font-size: 500%;
21
+        font-size: 250%;
21 22
     }
22 23
 
23 24
     h1.termsheader {
... ...
@@ -24,12 +24,23 @@ $content .= '
24 24
     <div class="modal fade" role="dialog" id="modal-gitterbox"><div class="modal-dialog">
25 25
     <div class="form-group form-group-lg modal-content"><div class="modal-header">Wie viele Gitterboxen haben Sie gefüllt?</div>
26 26
         <div class="modal-body row justify-content-center">
27
-        <div class="col-sm-2"><a href="#" class="btn btn-block btn-lg btn-outline-primary btn-gbcount" id="btn-gbcount-1">1</a></div>
28
-        <div class="col-sm-2"><a href="#" class="btn btn-block btn-lg btn-outline-primary btn-gbcount" id="btn-gbcount-2">2</a></div>
29
-        <div class="col-sm-2"><a href="#" class="btn btn-block btn-lg btn-outline-primary btn-gbcount" id="btn-gbcount-3">3</a></div>
30
-        <div class="col-sm-2"><a href="#" class="btn btn-block btn-lg btn-outline-primary btn-gbcount" id="btn-gbcount-4">4</a></div>
31
-        <div class="col-sm-2"><a href="#" class="btn btn-block btn-lg btn-outline-primary btn-gbcount" id="btn-gbcount-5">5</a></div>
27
+          <div class="col-sm-2"><a href="#" class="btn btn-block btn-lg btn-outline-primary btn-gbcount" id="btn-gbcount-1">1</a></div>
28
+          <div class="col-sm-2"><a href="#" class="btn btn-block btn-lg btn-outline-primary btn-gbcount" id="btn-gbcount-2">2</a></div>
29
+          <div class="col-sm-2"><a href="#" class="btn btn-block btn-lg btn-outline-primary btn-gbcount" id="btn-gbcount-3">3</a></div>
30
+          <div class="col-sm-2"><a href="#" class="btn btn-block btn-lg btn-outline-primary btn-gbcount" id="btn-gbcount-4">4</a></div>
31
+          <div class="col-sm-2"><a href="#" class="btn btn-block btn-lg btn-outline-primary btn-gbcount" id="btn-gbcount-5">5</a></div>
32
+        </div>
32 33
     </div>
34
+    </div></div>
35
+
36
+    <div class="modal fade" role="dialog" id="modal-kennzeichen"><div class="modal-dialog">
37
+    <div class="form-group form-group-lg modal-content"><div class="modal-header">Wie lautet das Kennzeichen Ihres Anhängers?</div>
38
+        <div class="modal-body row justify-content-center">
39
+          <div class="col-sm-10"><input class="form-control" type="text" name="kennz" id="kennz-modal" placeholder="Kennzeichen des Anhängers"></div>
40
+        </div>
41
+        <div class="modal-body row justify-content-center">
42
+          <div class="col-sm-10"><a href="#" class="btn btn-block btn-lg btn-outline-primary btn-ok" id="btn-kennzeichen-ok">Weiter &gt;</a></div>
43
+        </div>
33 44
     </div>
34 45
     </div></div>
35 46
 
... ...
@@ -9,9 +9,13 @@ if (isset($_REQUEST['type'])) {
9 9
 }
10 10
 $content = '';
11 11
 $number = '';
12
+$name = '';
12 13
 if (isset($_COOKIE['NUMBER'])) {
13 14
     $number = $_COOKIE['NUMBER'];
14 15
 }
16
+if (isset($_COOKIE['NAME'])) {
17
+    $name = $_COOKIE['NAME'];
18
+}
15 19
 if (isset($_REQUEST['error'])) {
16 20
     $content .= '<div class="card text-white bg-danger mb-3">
17 21
     <div class="card-header">Fehler</div>';
... ...
@@ -20,11 +24,17 @@ if (isset($_REQUEST['error'])) {
20 24
     } else {
21 25
         $content .= '<div class="card-body">Bitte geben Sie unbedingt eine Telefonnummer an, damit wir Sie erreichen können.</div>';
22 26
     }
27
+    if (!isset($_REQUEST['num']) || trim($_REQUEST['num']) == '') {
28
+        $content .= '<div class="card-body">Bitte geben Sie Ihren Namen ein, unter dem wir diesen Auftrag führen sollen.</div>';
29
+    }
23 30
     $content .= '
24 31
     </div>';
25 32
     if (isset($_REQUEST['num'])) {
26 33
         $number = $_REQUEST['num'];
27 34
     }
35
+    if (isset($_REQUEST['name'])) {
36
+        $name = $_REQUEST['name'];
37
+    }
28 38
 }
29 39
 
30 40
 $headline = 'Neuen Auftrag starten';
... ...
@@ -44,15 +54,18 @@ if (isset($_REQUEST['noremember'])) {
44 54
 }
45 55
 
46 56
 $content .= '
47
-    <p>Bitte teilen Sie uns zuerst Ihre Telefonnummer mit, unter der wir Sie benachrichtigen können.</p>
57
+    <p>Bitte teilen Sie uns zuerst Ihren Namen und Ihre Telefonnummer mit, damit wir prüfen können, ob wir Sie schon kennen.</p>
48 58
     <form class="form" action="save.php" method="post">
49 59
     <input type="hidden" name="form" value="start">
60
+    <div class="form-group form-group-lg">
61
+       <div class="input-group"><input class="form-control form-control-lg" id="name" name="name" type="text" placeholder="Name" autocomplete="name" value="'.$name.'"></div>
62
+    </div>
50 63
     <div class="form-group form-group-lg">
51 64
        <div class="input-group"><div class="input-group-prepend"><span class="input-group-text"><span class="fas fa-mobile-alt" aria-hidden="true"></span></span></div><input class="form-control form-control-lg" id="phone" name="phone" type="tel" placeholder="Telefonnummer" autocomplete="mobile tel" value="'.$number.'"></div>
52 65
         <small class="form-text text-muted">Tipp: Wenn Sie hier eine Mobiltelefonnummer eingeben, werden Sie bequem per SMS benachrichtigt.</small>
53 66
     </div>
54 67
     <div class="form-group form-group-lg">
55
-        <div class="form-check"><input class="form-check-input" type="checkbox" name="save" id="check-save" value="yes" '.$checked.'><label for="check-save" class="form-check-label"> Diese Nummer in diesem Browser merken.</label></div>
68
+        <div class="form-check"><input class="form-check-input" type="checkbox" name="save" id="check-save" value="yes" '.$checked.'><label for="check-save" class="form-check-label"> Daten in diesem Browser merken.</label></div>
56 69
     </div>
57 70
     <div class="form-group form-group-lg">
58 71
         <div><input class="btn btn-primary btn-lg" type="submit" value="Weiter &gt;"></div>
... ...
@@ -41,8 +41,17 @@ if (isset($_REQUEST['form'])) {
41 41
             }
42 42
             $number = format_number($number);
43 43
 
44
+            $name = trim($_REQUEST['name']);
45
+            if (! $name) {
46
+                $redirect = 'index.php?error&name=';
47
+                break;
48
+            }
49
+
50
+            $_SESSION['name'] = htmlspecialchars($name);
51
+
44 52
             $_SESSION['phone'] = htmlspecialchars($number);
45 53
             if (isset($_REQUEST['save']) && $_REQUEST['save'] == 'yes') {
54
+                setcookie('NAME', $name, time() + 24*3600*500, "");
46 55
                 setcookie('NUMBER', $number, time() + 24*3600*500, "");
47 56
             }
48 57