diff --git a/docs/m7MdMK b/docs/m7MdMK new file mode 100644 index 0000000..46aec41 --- /dev/null +++ b/docs/m7MdMK @@ -0,0 +1 @@ +m7MdMK \ No newline at end of file diff --git a/docs/threema-20221219-154859460.jpg b/docs/threema-20221219-154859460.jpg new file mode 100644 index 0000000..defe168 Binary files /dev/null and b/docs/threema-20221219-154859460.jpg differ diff --git a/package.json b/package.json index a945972..029e337 100644 --- a/package.json +++ b/package.json @@ -22,8 +22,10 @@ "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", - "eject": "react-scripts eject" - }, + "eject": "react-scripts eject", + + "postbuild": "cp ./src/.htaccess ./build/ && sudo cp -r -v ./build/static/ /opt/lampp/htdocs/dog/ && sudo cp -v ./build/* /opt/lampp/htdocs/dog/" +}, "eslintConfig": { "extends": [ "react-app", @@ -43,6 +45,6 @@ ] }, "xxxhomepage____": "http://localhost:3000/dog", - "xxxxhomepage": "https://hope-fly.de/dog", - "homepage": "http://localhost/dog" + "homepage": "https://hope-fly.de/dog", + "xxxxhomepage": "http://localhost/dog" } diff --git a/php/php-dog/classes/ranStr.php b/php/php-dog/classes/ranStr.php new file mode 100644 index 0000000..4f02dae --- /dev/null +++ b/php/php-dog/classes/ranStr.php @@ -0,0 +1,26 @@ + diff --git a/php/php-dog/getDog.php b/php/php-dog/getDog.php index f3e132c..73aadfd 100644 --- a/php/php-dog/getDog.php +++ b/php/php-dog/getDog.php @@ -15,20 +15,21 @@ $db_connection = new Database(); $conn = $db_connection->dbConnection(); $data = json_decode(file_get_contents("php://input")); -// $data = json_decode('{ "qr_id": "m7MdMK" }'); +//$data = json_decode('{ "qr_id": "m7MdMK" }'); +var_dump( get_defined_vars() ); + +var_dump( get_defined_vars() ); +echo "xxxxxxx"; +echo $data; +echo "-------"; $returnData = new CMsg(0); $fields = ['fields' => ['qr_id']]; // if(true) -// IF REQUEST METHOD IS NOT EQUAL TO POST -if($_SERVER["REQUEST_METHOD"] != "POST") -{ - $returnData = msg(0,404,'Page Not Found!',$fields,null); -} // CHECKING EMPTY FIELDS -elseif(!isset($data->qr_id) +if(!isset($data->qr_id) || empty(trim($data->qr_id)) ) { @@ -42,8 +43,8 @@ else try { - $fetch_user_by_email = "SELECT * FROM `dogs` WHERE `qr_id`=:qr_id"; - $query_stmt = $conn->prepare($fetch_user_by_email); + $fetch_user_qr_id = "SELECT id, qr_id, email, name, phone, qr_code, picture FROM `dogs` WHERE `qr_id`=:qr_id"; + $query_stmt = $conn->prepare($fetch_user_qr_id); $query_stmt->bindValue(':qr_id', $qr_id,PDO::PARAM_STR); $query_stmt->execute(); @@ -53,6 +54,10 @@ else $row = $query_stmt->fetch(PDO::FETCH_ASSOC); $returnData = new CMsg(1,200,'get dog',$fields,$row); } + else + { + $returnData = new CMsg(0,422,'no dog',$fields); + } } catch(PDOException $e) { diff --git a/php/php-dog/login.php b/php/php-dog/login.php index d92e729..b9779e5 100644 --- a/php/php-dog/login.php +++ b/php/php-dog/login.php @@ -108,7 +108,7 @@ try } else { - $returnData = new CMsg(0,422,'Invalid Email Address!'); + $returnData = new CMsg(0,422,'Invalid Email Address! No Email found!'); } } catch(PDOException $e) diff --git a/src/.htaccess b/src/.htaccess new file mode 100644 index 0000000..1cccaa1 --- /dev/null +++ b/src/.htaccess @@ -0,0 +1,4 @@ +Options -MultiViews + RewriteEngine On + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.html [QSA,L] \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx index ab71f31..61a8d69 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -19,6 +19,7 @@ function App()
+ } /> } /> } /> } /> diff --git a/src/components/Dog.tsx b/src/components/Dog.tsx index c5d18de..4585cdd 100644 --- a/src/components/Dog.tsx +++ b/src/components/Dog.tsx @@ -1,15 +1,47 @@ -import React from 'react' -import { useParams, useSearchParams } from "react-router-dom"; +import { ResponseT, UserCtx, UserCtxT } from '../context/UserContext'; +import React, { useContext, useState } from 'react' +import { useParams } from "react-router-dom"; +import Img from './Img'; +import DogNameTxt from './DogNameTxt'; -export default function Dog() +const Dog = () => { + const {getDog, dog} = useContext(UserCtx) as UserCtxT; + + // m7MdMK const params = useParams(); - const searchParams = useSearchParams(); + const qr_id = Object.values(params)[0]; + var data; + var needData = dog.success === undefined; + if(needData) + { + data = getDog(qr_id); // await not allowed?! => workaraound + } + var email = "nicht definiert;" + var phone = "nicht definiert;" + var picPath = "nicht definiert;" + var qrPath = "nicht definiert;" + var name = "nicht definiert;" + if(dog.success === 1) + { + name = dog.data.name; + qrPath = dog.data.qr_code; + picPath = dog.data.picture; + email = dog.data.email; + phone = dog.data.phone; + } + return (
-

Dog

-

{Object.keys(params)[0]}: {Object.values(params)[0]}

-

{Object.keys(params)[1]}: {Object.values(params)[1]}

+

Hast Du mich gefunden?

+ {/*

name: {name}

+

email: {email}

+

phone: {phone}

+

pic: {picPath}

+

qr: {qrPath}

*/} + +
) -} \ No newline at end of file +} +export default Dog; \ No newline at end of file diff --git a/src/components/DogNameTxt.tsx b/src/components/DogNameTxt.tsx new file mode 100644 index 0000000..b50fdd2 --- /dev/null +++ b/src/components/DogNameTxt.tsx @@ -0,0 +1,13 @@ +import React from 'react' + +export default function DogNameTxt( + {name, email, phone}: + {name: string, email: string, phone: string}) { + return ( +
+

Hallo ich bin die

{name}!

+

bitte schreib eine Mail an

{email}

+ oder ruf

{phone} an,

damit ich schnell wieder Heim komme.

+
+ ) +} diff --git a/src/components/Img.tsx b/src/components/Img.tsx new file mode 100644 index 0000000..8b2b2c0 --- /dev/null +++ b/src/components/Img.tsx @@ -0,0 +1,10 @@ +import React from 'react' + +export default function Img({pth}: {pth: string}) +{ + return ( +
+ +
+ ) +} diff --git a/src/components/Pic.tsx b/src/components/Pic.tsx new file mode 100644 index 0000000..5e384c5 --- /dev/null +++ b/src/components/Pic.tsx @@ -0,0 +1,9 @@ +import React from 'react' + +export default function Pic() { + return ( +
+ +
+ ) +} diff --git a/src/components/Register.tsx b/src/components/Register.tsx index b1fd162..cdfc8be 100644 --- a/src/components/Register.tsx +++ b/src/components/Register.tsx @@ -19,7 +19,8 @@ const Register = () => { }) } - const submitForm = async (e: React.FormEvent) => { + const submitForm = async (e: React.FormEvent) => + { e.preventDefault(); if(!Object.values(formData).every(val => val.trim() !== '')){ @@ -38,7 +39,6 @@ const Register = () => { setSuccessMsg("false"); setErrMsg(data.message); } - } return ( diff --git a/src/context/UserContext.tsx b/src/context/UserContext.tsx index 29b59c0..b0cffb9 100644 --- a/src/context/UserContext.tsx +++ b/src/context/UserContext.tsx @@ -15,6 +15,28 @@ export type TUser = name: string } +export type DogT = +{ + id: number, + qr_id: string, + email: string, + name: string, + phone: string, + qr_code: string, + picture: string +}; + +export type ResponseT = +{ + success: number, + status: number, + message: string, + fields: string, + data: DogT +} | any; + + + export type UserCtxT = { user: TUser | null, @@ -42,20 +64,25 @@ export type UserCtxT = getUser: () => Promise, - logout: () => void + logout: () => void, + + getDog: (str: string | undefined) => Promise, + + dog: ResponseT } export const UserCtx = createContext(null); export const Axios = axios.create({ -// baseURL: 'http://localhost/dog/php-dog/', - baseURL: 'https://hope-fly.de/dog/php-dog/', + baseURL: 'http://localhost/dog/php-dog/', + // baseURL: 'https://hope-fly.de/dog/php-dog/', }); export const UserCtxProvider = ({children}:TUserContextProviderProps) => { const [user, setUser] = useState(null); const [wait, setWait] = useState(false); + const [dog, setDog] = useState({}); const registerUser = async ({email,password}: {email: string, password: string}) => { @@ -154,6 +181,29 @@ export const UserCtxProvider = ({children}:TUserContextProviderProps) => { setUser(null); } + const getDog = async ( str: string | undefined) => + { + var ret: ResponseT = {}; + setWait(true); + + try + { + ret = await Axios.post('getDog.php', + { + qr_id: str + }); + setDog(ret.data as ResponseT); + setWait(false); + return; + } + catch (error:any) + { + console.log('error message: ', error.message); + setWait(false); + return; + } + }; + return ( { wait, user, getUser, - logout + logout, + getDog, + dog }} > {children} diff --git a/src/context/aa.html b/src/context/aa.html new file mode 100644 index 0000000..e754d45 --- /dev/null +++ b/src/context/aa.html @@ -0,0 +1 @@ +
\n/opt/lampp/htdocs/dog/php-dog/getDog.php:19:\narray (size=11)\n  '_GET' => \n    array (size=0)\n      empty\n  '_POST' => \n    array (size=0)\n      empty\n  '_COOKIE' => \n    array (size=0)\n      empty\n  '_FILES' => \n    array (size=0)\n      empty\n  '_ENV' => \n    array (size=0)\n      empty\n  '_REQUEST' => \n    array (size=0)\n      empty\n  '_SERVER' => \n    array (size=41)\n      'UNIQUE_ID' => string 'Y6C9BuTmzZ42bjnn8ahTGQAAAAg' (length=27)\n      'HTTP_HOST' => string 'localhost' (length=9)\n      'HTTP_CONNECTION' => string 'keep-alive' (length=10)\n      'CONTENT_LENGTH' => string '18' (length=2)\n      'HTTP_SEC_CH_UA' => string '"Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"' (length=64)\n      'HTTP_ACCEPT' => string 'application/json, text/plain, */*' (length=33)\n      'CONTENT_TYPE' => string 'application/json' (length=16)\n      'HTTP_SEC_CH_UA_MOBILE' => string '?0' (length=2)\n      'HTTP_USER_AGENT' => string 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36' (length=101)\n      'HTTP_SEC_CH_UA_PLATFORM' => string '"Linux"' (length=7)\n      'HTTP_ORIGIN' => string 'http://localhost:3000' (length=21)\n      'HTTP_SEC_FETCH_SITE' => string 'same-site' (length=9)\n      'HTTP_SEC_FETCH_MODE' => string 'cors' (length=4)\n      'HTTP_SEC_FETCH_DEST' => string 'empty' (length=5)\n      'HTTP_REFERER' => string 'http://localhost:3000/' (length=22)\n      'HTTP_ACCEPT_ENCODING' => string 'gzip, deflate, br' (length=17)\n      'HTTP_ACCEPT_LANGUAGE' => string 'de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7' (length=35)\n      'PATH' => string '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin' (length=70)\n      'LD_LIBRARY_PATH' => string '/opt/lampp/lib:/opt/lampp/lib' (length=29)\n      'SERVER_SIGNATURE' => string '' (length=0)\n      'SERVER_SOFTWARE' => string 'Apache/2.4.54 (Unix) OpenSSL/1.1.1s PHP/8.1.12 mod_perl/2.0.12 Perl/v5.34.1' (length=75)\n      'SERVER_NAME' => string 'localhost' (length=9)\n      'SERVER_ADDR' => string '::1' (length=3)\n      'SERVER_PORT' => string '80' (length=2)\n      'REMOTE_ADDR' => string '::1' (length=3)\n      'DOCUMENT_ROOT' => string '/opt/lampp/htdocs' (length=17)\n      'REQUEST_SCHEME' => string 'http' (length=4)\n      'CONTEXT_PREFIX' => string '' (length=0)\n      'CONTEXT_DOCUMENT_ROOT' => string '/opt/lampp/htdocs' (length=17)\n      'SERVER_ADMIN' => string 'you@example.com' (length=15)\n      'SCRIPT_FILENAME' => string '/opt/lampp/htdocs/dog/php-dog/getDog.php' (length=40)\n      'REMOTE_PORT' => string '52696' (length=5)\n      'GATEWAY_INTERFACE' => string 'CGI/1.1' (length=7)\n      'SERVER_PROTOCOL' => string 'HTTP/1.1' (length=8)\n      'REQUEST_METHOD' => string 'POST' (length=4)\n      'QUERY_STRING' => string '' (length=0)\n      'REQUEST_URI' => string '/dog/php-dog/getDog.php' (length=23)\n      'SCRIPT_NAME' => string '/dog/php-dog/getDog.php' (length=23)\n      'PHP_SELF' => string '/dog/php-dog/getDog.php' (length=23)\n      'REQUEST_TIME_FLOAT' => float 1671478534.0123\n      'REQUEST_TIME' => int 1671478534\n  'db_connection' => \n    object(Database)[1]\n      private 'db_host' => string 'localhost' (length=9)\n      private 'db_name' => string 'k200835_dog' (length=11)\n      private 'db_username' => string 'k200835_user_dog' (length=16)\n      private 'db_password' => string 'X0pEiBsXN3RLazGhQVvP' (length=20)\n  'conn' => \n    object(PDO)[2]\n  'data' => \n    object(stdClass)[3]\n      public 'qr_id' => string 'm7MdMK' (length=6)\n  '_SESSION' => \n    array (size=0)\n      empty\n
\n/opt/lampp/htdocs/dog/php-dog/getDog.php:21:\narray (size=11)\n  '_GET' => \n    array (size=0)\n      empty\n  '_POST' => \n    array (size=0)\n      empty\n  '_COOKIE' => \n    array (size=0)\n      empty\n  '_FILES' => \n    array (size=0)\n      empty\n  '_ENV' => \n    array (size=0)\n      empty\n  '_REQUEST' => \n    array (size=0)\n      empty\n  '_SERVER' => \n    array (size=41)\n      'UNIQUE_ID' => string 'Y6C9BuTmzZ42bjnn8ahTGQAAAAg' (length=27)\n      'HTTP_HOST' => string 'localhost' (length=9)\n      'HTTP_CONNECTION' => string 'keep-alive' (length=10)\n      'CONTENT_LENGTH' => string '18' (length=2)\n      'HTTP_SEC_CH_UA' => string '"Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"' (length=64)\n      'HTTP_ACCEPT' => string 'application/json, text/plain, */*' (length=33)\n      'CONTENT_TYPE' => string 'application/json' (length=16)\n      'HTTP_SEC_CH_UA_MOBILE' => string '?0' (length=2)\n      'HTTP_USER_AGENT' => string 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36' (length=101)\n      'HTTP_SEC_CH_UA_PLATFORM' => string '"Linux"' (length=7)\n      'HTTP_ORIGIN' => string 'http://localhost:3000' (length=21)\n      'HTTP_SEC_FETCH_SITE' => string 'same-site' (length=9)\n      'HTTP_SEC_FETCH_MODE' => string 'cors' (length=4)\n      'HTTP_SEC_FETCH_DEST' => string 'empty' (length=5)\n      'HTTP_REFERER' => string 'http://localhost:3000/' (length=22)\n      'HTTP_ACCEPT_ENCODING' => string 'gzip, deflate, br' (length=17)\n      'HTTP_ACCEPT_LANGUAGE' => string 'de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7' (length=35)\n      'PATH' => string '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin' (length=70)\n      'LD_LIBRARY_PATH' => string '/opt/lampp/lib:/opt/lampp/lib' (length=29)\n      'SERVER_SIGNATURE' => string '' (length=0)\n      'SERVER_SOFTWARE' => string 'Apache/2.4.54 (Unix) OpenSSL/1.1.1s PHP/8.1.12 mod_perl/2.0.12 Perl/v5.34.1' (length=75)\n      'SERVER_NAME' => string 'localhost' (length=9)\n      'SERVER_ADDR' => string '::1' (length=3)\n      'SERVER_PORT' => string '80' (length=2)\n      'REMOTE_ADDR' => string '::1' (length=3)\n      'DOCUMENT_ROOT' => string '/opt/lampp/htdocs' (length=17)\n      'REQUEST_SCHEME' => string 'http' (length=4)\n      'CONTEXT_PREFIX' => string '' (length=0)\n      'CONTEXT_DOCUMENT_ROOT' => string '/opt/lampp/htdocs' (length=17)\n      'SERVER_ADMIN' => string 'you@example.com' (length=15)\n      'SCRIPT_FILENAME' => string '/opt/lampp/htdocs/dog/php-dog/getDog.php' (length=40)\n      'REMOTE_PORT' => string '52696' (length=5)\n      'GATEWAY_INTERFACE' => string 'CGI/1.1' (length=7)\n      'SERVER_PROTOCOL' => string 'HTTP/1.1' (length=8)\n      'REQUEST_METHOD' => string 'POST' (length=4)\n      'QUERY_STRING' => string '' (length=0)\n      'REQUEST_URI' => string '/dog/php-dog/getDog.php' (length=23)\n      'SCRIPT_NAME' => string '/dog/php-dog/getDog.php' (length=23)\n      'PHP_SELF' => string '/dog/php-dog/getDog.php' (length=23)\n      'REQUEST_TIME_FLOAT' => float 1671478534.0123\n      'REQUEST_TIME' => int 1671478534\n  'db_connection' => \n    object(Database)[1]\n      private 'db_host' => string 'localhost' (length=9)\n      private 'db_name' => string 'k200835_dog' (length=11)\n      private 'db_username' => string 'k200835_user_dog' (length=16)\n      private 'db_password' => string 'X0pEiBsXN3RLazGhQVvP' (length=20)\n  'conn' => \n    object(PDO)[2]\n  'data' => \n    object(stdClass)[3]\n      public 'qr_id' => string 'm7MdMK' (length=6)\n  '_SESSION' => \n    array (size=0)\n      empty\n
xxxxxxx \ No newline at end of file diff --git a/src/context/aaa.json b/src/context/aaa.json new file mode 100644 index 0000000..2907c88 --- /dev/null +++ b/src/context/aaa.json @@ -0,0 +1,117 @@ + { + data: { + success: 0, + status: 422, + message: "Invalid Email Address!", + fields: "Invalid Email Address!", + data: null, + }, + status: 200, + statusText: "OK", + headers: { + "cache-control": "no-store, no-cache, must-revalidate", + "content-length": "107", + "content-type": "application/json; charset=UTF-8", + expires: "Thu, 19 Nov 1981 08:52:00 GMT", + pragma: "no-cache", + }, + config: { + transitional: { + silentJSONParsing: true, + forcedJSONParsing: true, + clarifyTimeoutError: false, + }, + adapter: [ + "xhr", + "http", + ], + transformRequest: [ + function transformRequest(data, headers) { + const contentType = headers.getContentType() || ''; + const hasJSONContentType = contentType.indexOf('application/json') > -1; + const isObjectPayload = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isObject(data); + if (isObjectPayload && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isHTMLForm(data)) { + data = new FormData(data); + } + const isFormData = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFormData(data); + if (isFormData) { + if (!hasJSONContentType) { + return data; + } + return hasJSONContentType ? JSON.stringify((0,_helpers_formDataToJSON_js__WEBPACK_IMPORTED_MODULE_2__["default"])(data)) : data; + } + if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArrayBuffer(data) || _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isBuffer(data) || _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isStream(data) || _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFile(data) || _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isBlob(data)) { + return data; + } + if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArrayBufferView(data)) { + return data.buffer; + } + if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isURLSearchParams(data)) { + headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); + return data.toString(); + } + let isFileList; + if (isObjectPayload) { + if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { + return (0,_helpers_toURLEncodedForm_js__WEBPACK_IMPORTED_MODULE_3__["default"])(data, this.formSerializer).toString(); + } + if ((isFileList = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { + const _FormData = this.env && this.env.FormData; + return (0,_helpers_toFormData_js__WEBPACK_IMPORTED_MODULE_4__["default"])(isFileList ? { + 'files[]': data + } : data, _FormData && new _FormData(), this.formSerializer); + } + } + if (isObjectPayload || hasJSONContentType) { + headers.setContentType('application/json', false); + return stringifySafely(data); + } + return data; + }, + ], + transformResponse: [ + function transformResponse(data) { + const transitional = this.transitional || defaults.transitional; + const forcedJSONParsing = transitional && transitional.forcedJSONParsing; + const JSONRequested = this.responseType === 'json'; + if (data && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isString(data) && (forcedJSONParsing && !this.responseType || JSONRequested)) { + const silentJSONParsing = transitional && transitional.silentJSONParsing; + const strictJSONParsing = !silentJSONParsing && JSONRequested; + try { + return JSON.parse(data); + } catch (e) { + if (strictJSONParsing) { + if (e.name === 'SyntaxError') { + throw _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_5__["default"].from(e, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_5__["default"].ERR_BAD_RESPONSE, this, null, this.response); + } + throw e; + } + } + } + return data; + }, + ], + timeout: 0, + xsrfCookieName: "XSRF-TOKEN", + xsrfHeaderName: "X-XSRF-TOKEN", + maxContentLength: -1, + maxBodyLength: -1, + env: { + FormData: function FormData() { [native code] }, + Blob: function Blob() { [native code] }, + }, + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + }, + headers: { + Accept: "application/json, text/plain, */*", + "Content-Type": "application/json", + }, + baseURL: "http://localhost/dog/php-dog/", + method: "post", + url: "login.php", + data: "{\"email\":\"conny.rankl@web.de\",\"password\":\"mellyHund\"}", + }, + request: { + }, + } \ No newline at end of file