Link naar website (zoals track & trace)
Ik heb een site (pagina) gebouwd www.rsnld.nl/reparatiestatus/ op deze pagina kan men een bonnummer en relatienummer invoeren en zo een status zien.
Nu wil ik een link aan de klant geven waardoor ze gelijk in hun statusmelding terecht komen (dus zonder dat ze die nummers moeten invoeren)
Hoe zou ik dat kunnen doen?
Alvast bedankt voor het meedenken
Deze class kan ook zeker helpen bij het omzetten van bestaande ID's naar niet-traceerbare ID-nummers:
https://github.com/ivanakimov/hashids.php
Een idee is ook om brute-forcen van deze ID-Hashes tegen te gaan. Na tien pogingen die status-module een IP-ban geven voor een korte tijd.
Gewijzigd op 03/12/2018 17:03:29 door - Ariën -
- Ariën - op 03/12/2018 16:57:02:
Genereer een unieke en niet-herleidbare ID. Zoals: RJH4K86DBR5LF5
Deze class kan ook zeker helpen bij het omzetten van bestaande ID's naar niet-traceerbare ID-nummers:
https://github.com/ivanakimov/hashids.php
Een idee is ook om brute-forcen van deze ID-Hashes tegen te gaan. Na tien pogingen die module een IP-ban geven voor een korte tijd.
Deze class kan ook zeker helpen bij het omzetten van bestaande ID's naar niet-traceerbare ID-nummers:
https://github.com/ivanakimov/hashids.php
Een idee is ook om brute-forcen van deze ID-Hashes tegen te gaan. Na tien pogingen die module een IP-ban geven voor een korte tijd.
De bedoeling is eigenlijk dat met een QRcode krijgt op een afgiftebon of een klikbare link in een email. In ons systeem kunnen wij de bonnummer en het relatienummer koppelen aan een QRcode. Ik begrijp dus niet echt wat u met het bovenstaande bedoeld en waarom men dan een niet herleidbare ID nodig heeft.
Mvg,
Eric
http://www.site.nl/service?id=54 dan is het voorspelbaar dat 53 en 52 etc. ook bestaan. En dan liggen je klantgegevens op straat. Iedereen kan dan met de ID's proberen.
Met een genoemde hash voorkom je dat.
QR-codes zijn leuk, maar dit moet niet het hoofddoel worden. Op een normale computer kan je er niks mee.
Ik neem wel aan dat een reparatie een eigen tabel heeft in je database, en dus een eigen ID (auto. increment) is.
Heel logisch, als je jouw klanten een link meegeeft als Met een genoemde hash voorkom je dat.
QR-codes zijn leuk, maar dit moet niet het hoofddoel worden. Op een normale computer kan je er niks mee.
Ik neem wel aan dat een reparatie een eigen tabel heeft in je database, en dus een eigen ID (auto. increment) is.
Gewijzigd op 03/12/2018 17:17:04 door - Ariën -
- Ariën - op 03/12/2018 17:13:50:
Heel logisch, als je jouw klanten een link meegeeft als http://www.site.nl/service?id=54 dan is het voorspelbaar dat 53 en 52 etc. ook bestaan. En dan liggen je klantgegevens op straat. Iedereen kan dan met de ID's proberen.
Met een genoemde hash voorkom je dat.
QR-codes zijn leuk, maar dit moet niet het hoofddoel worden. Op een normale computer kan je er niks mee.
Ik neem wel aan dat een reparatie een eigen tabel heeft in je database, en dus een eigen ID (auto. increment) is.
Met een genoemde hash voorkom je dat.
QR-codes zijn leuk, maar dit moet niet het hoofddoel worden. Op een normale computer kan je er niks mee.
Ik neem wel aan dat een reparatie een eigen tabel heeft in je database, en dus een eigen ID (auto. increment) is.
Het is (bijna) onmogelijk om dat te achterhalen. relatienummers bestaan uit 6 cijfers die niet opvolgen tevens moet je dan ook een bijbehorend bonnummer hebben die uit 8 cijfers bestaan die ook niet opvolgen.
Het heeft inderdaad een database met een ID en bonnummer. Deze nummers wil ik dus in een link verwerken zodat ze dat niet zelf op de website hoeven te doen.
Eventueel kan je die al in de URL meegeven zodat het al in het tekstveld staat bij het 'inloggen'. Dit kan ook met het relatienummer. Dan hoeven je klanten zien op OK te klikken.
Gewijzigd op 03/12/2018 17:34:51 door - Ariën -
- Ariën - op 03/12/2018 17:34:08:
Als je al niet-opvolgende ID's hebt, is dat hashen niet eens nodig. Maar waarom dan niet enkel een bonnummer door hen in te laten typen?
Eventueel kan je die al in de URL meegeven zodat het al in het tekstveld staat bij het 'inloggen'. Dit kan ook met het relatienummer. Dan hoeven je klanten zien op OK te klikken.
Eventueel kan je die al in de URL meegeven zodat het al in het tekstveld staat bij het 'inloggen'. Dit kan ook met het relatienummer. Dan hoeven je klanten zien op OK te klikken.
Klopt, dat is wat ik wil. MAAR... hoe moet zo'n url eruit zien zodat ze daar op klikken en alleen op de OK knop hoeven te klikken.
De URL in de verstuurde mail is dan bijvoorbeeld:
https://www.site.nl/service?bonnummer=12345&klantnummer=54321
De twee nummers kan kan je dan eenvoudig in je input-veld tonen met:
Code (php)
1
2
2
Klantnummer: <input type="text" name="klantnummer" value="<?php if(isset($_GET['klantnummer'])){ echo htmlspecialchars($_GET['klantnummer']);} ?>"><br>
Bonnummer: <input type="text" name="bonnnummer" value="<?php if(isset($_GET['bonnummer'])) { echo htmlspecialchars($_GET['bonnummer']);}?>">
Bonnummer: <input type="text" name="bonnnummer" value="<?php if(isset($_GET['bonnummer'])) { echo htmlspecialchars($_GET['bonnummer']);}?>">
De regel in het php bestand ziet er nu als volgt uit om te communiceren met het database.
Code (php)
1
2
3
4
2
3
4
<Center>
<form method="post">
<b>Bonnummer.</b> <input type="text" name="value" value="<?php echo $sValue ?>" style="border-style: solid; border-width: 1px; background-color: #FFFFFF" size="20" > <b>Relatienummer.</b> <input type="text" name="relid" value="<?php echo $sRelId ?>" style="background-color: #FFFFFF" size="20" >Versturen : <input type="submit">
</form>
<form method="post">
<b>Bonnummer.</b> <input type="text" name="value" value="<?php echo $sValue ?>" style="border-style: solid; border-width: 1px; background-color: #FFFFFF" size="20" > <b>Relatienummer.</b> <input type="text" name="relid" value="<?php echo $sRelId ?>" style="background-color: #FFFFFF" size="20" >Versturen : <input type="submit">
</form>
Betekend dit dat ik jou php gegevens hierin moet verwerken of elders in het php bestand?
Edit:
Ik heb code-tags geplaatst. Gelieve dit in het vervolg zelf toe te voegen aan je bericht.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken. Tevens hoef je het laatste bericht hiervoor niet integraal te quoten. We weten toch wel waar je op reageert.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken. Tevens hoef je het laatste bericht hiervoor niet integraal te quoten. We weten toch wel waar je op reageert.
Gewijzigd op 03/12/2018 19:33:39 door - Ariën -
Uiteraard escapen we de invoer voor de veiligheid tegen XSS, en controleren we of de $_GET variabelen ook daadwerkelijk bestaan. Anders krijg je mogelijk Notice-foutmeldingen als je de GET-waardes niet in de URL hebt staan, omdat je een GET-waarde wil oproepen wat niet bestaat.
Lees meer op GET v.s. POST hier:
https://www.w3schools.com/tags/ref_httpmethods.asp
Het ene bestand heeft een form waar je een klant- en bonnummer invult.
Die worden encrypt.
Een URL wordt aangemaakt die je naar de klant kunt sturen.
Een tweede bestand simuleert dat een klant op de link heeft geklikt en op de inlogpagina terecht komt.
Aanpassen, uitbreiden, wijzigen naar eigen smaak en situatie.
Bekijken doe je hier :
http://adoptive.2kool4u.net/bedrijf/zend.php
De zend pagina :
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
//https://naveensnayak.wordpress.com/2013/03/12/simple-php-encrypt-and-decrypt/
function encrypt_decrypt($action, $string) {
$output = false;
$encrypt_method = "AES-256-CBC";
$secret_key = 'This is my secret key';
$secret_iv = 'This is my secret iv';
// hash
$key = hash( 'sha256', $secret_key );
// iv - encrypt method AES-256-CBC expects 16 bytes - else you will get a warning
$iv = substr( hash( 'sha256', $secret_iv ), 0, 16 );
if( $action == 'encrypt' ) {
$output = openssl_encrypt( $string, $encrypt_method, $key, 0, $iv );
$output = base64_encode( $output );
} else if( $action == 'decrypt' ) {
$output = openssl_decrypt( base64_decode( $string ), $encrypt_method, $key, 0, $iv );
}
return $output;
}
if ( $_POST['submit']) {
$klantnummer = strip_tags( trim( $_POST['klantnummer'] ) );
$bestelbon = strip_tags( trim( $_POST['bestelbon'] ) );
$plain_txt = $klantnummer . '!' . $bestelbon;
echo "<p>Plain Text = " . $plain_txt . '<br />' . PHP_EOL;
$encrypted_txt = encrypt_decrypt('encrypt', $plain_txt);
echo "Encrypted Text = $encrypted_txt" . '<br />' . PHP_EOL;
$decrypted_txt = encrypt_decrypt('decrypt', $encrypted_txt);
echo "Decrypted Text = $decrypted_txt" . '<br />' . PHP_EOL;
if ( $plain_txt === $decrypted_txt ) {
echo "SUCCESS" . '<br />' . PHP_EOL;
} else {
echo "FAILED" . '<br />' . PHP_EOL;
}
echo '<p>Deze link stuur je naar de klant. Klik erop en je komt op de inlogpagina.</p>';
echo '<p><a href="' . dirname($_SERVER["SCRIPT_NAME"]) . '/ontvang.php?login=' . $encrypted_txt . '">' .
// of gebruik een harde URL.
$_SERVER["HTTP_HOST"] . dirname($_SERVER["SCRIPT_NAME"]) . '/ontvang.php?login=' . $encrypted_txt . '</a></p>' ;
}
?>
<form method="POST" action="zend.php">
Klantnummer <input type="number" name="klantnummer" value="" /><br />
Bestelbonnummer <input type="number" name="bestelbon" value="" /><br />
<input type="submit" name="submit" value="Submit" />
</form>
//https://naveensnayak.wordpress.com/2013/03/12/simple-php-encrypt-and-decrypt/
function encrypt_decrypt($action, $string) {
$output = false;
$encrypt_method = "AES-256-CBC";
$secret_key = 'This is my secret key';
$secret_iv = 'This is my secret iv';
// hash
$key = hash( 'sha256', $secret_key );
// iv - encrypt method AES-256-CBC expects 16 bytes - else you will get a warning
$iv = substr( hash( 'sha256', $secret_iv ), 0, 16 );
if( $action == 'encrypt' ) {
$output = openssl_encrypt( $string, $encrypt_method, $key, 0, $iv );
$output = base64_encode( $output );
} else if( $action == 'decrypt' ) {
$output = openssl_decrypt( base64_decode( $string ), $encrypt_method, $key, 0, $iv );
}
return $output;
}
if ( $_POST['submit']) {
$klantnummer = strip_tags( trim( $_POST['klantnummer'] ) );
$bestelbon = strip_tags( trim( $_POST['bestelbon'] ) );
$plain_txt = $klantnummer . '!' . $bestelbon;
echo "<p>Plain Text = " . $plain_txt . '<br />' . PHP_EOL;
$encrypted_txt = encrypt_decrypt('encrypt', $plain_txt);
echo "Encrypted Text = $encrypted_txt" . '<br />' . PHP_EOL;
$decrypted_txt = encrypt_decrypt('decrypt', $encrypted_txt);
echo "Decrypted Text = $decrypted_txt" . '<br />' . PHP_EOL;
if ( $plain_txt === $decrypted_txt ) {
echo "SUCCESS" . '<br />' . PHP_EOL;
} else {
echo "FAILED" . '<br />' . PHP_EOL;
}
echo '<p>Deze link stuur je naar de klant. Klik erop en je komt op de inlogpagina.</p>';
echo '<p><a href="' . dirname($_SERVER["SCRIPT_NAME"]) . '/ontvang.php?login=' . $encrypted_txt . '">' .
// of gebruik een harde URL.
$_SERVER["HTTP_HOST"] . dirname($_SERVER["SCRIPT_NAME"]) . '/ontvang.php?login=' . $encrypted_txt . '</a></p>' ;
}
?>
<form method="POST" action="zend.php">
Klantnummer <input type="number" name="klantnummer" value="" /><br />
Bestelbonnummer <input type="number" name="bestelbon" value="" /><br />
<input type="submit" name="submit" value="Submit" />
</form>
De ontvang pagina :
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
//https://naveensnayak.wordpress.com/2013/03/12/simple-php-encrypt-and-decrypt/
function encrypt_decrypt($action, $string) {
$output = false;
$encrypt_method = "AES-256-CBC";
$secret_key = 'This is my secret key';
$secret_iv = 'This is my secret iv';
// hash
$key = hash( 'sha256', $secret_key );
// iv - encrypt method AES-256-CBC expects 16 bytes - else you will get a warning
$iv = substr( hash( 'sha256', $secret_iv ), 0, 16 );
if( $action == 'encrypt' ) {
$output = openssl_encrypt( $string, $encrypt_method, $key, 0, $iv );
$output = base64_encode( $output );
} else if( $action == 'decrypt' ) {
$output = openssl_decrypt( base64_decode( $string ), $encrypt_method, $key, 0, $iv );
}
return $output;
}
if ( isset( $_GET['login'] ) ) {
$string = $_GET['login'];
echo '<p>Via URL : ' . $string . '</p>';
$decrypted_txt = encrypt_decrypt('decrypt', $string);
echo '<p>Via URL decrypted : ' . $decrypted_txt . '</p>' . PHP_EOL;
$numbers = explode('!', $decrypted_txt);
echo '<pre>' . print_r( $numbers, TRUE ) . '</pre>';
?>
<p>Zoek nu de order erbij met klantnummer <b><?php echo $numbers[0]; ?></b> en bonnummer <b><?php echo $numbers[1]; ?></b></p>
<?php
}
?>
<p><a href="zend.php">Verstuur een nieuwe link</a></p>
//https://naveensnayak.wordpress.com/2013/03/12/simple-php-encrypt-and-decrypt/
function encrypt_decrypt($action, $string) {
$output = false;
$encrypt_method = "AES-256-CBC";
$secret_key = 'This is my secret key';
$secret_iv = 'This is my secret iv';
// hash
$key = hash( 'sha256', $secret_key );
// iv - encrypt method AES-256-CBC expects 16 bytes - else you will get a warning
$iv = substr( hash( 'sha256', $secret_iv ), 0, 16 );
if( $action == 'encrypt' ) {
$output = openssl_encrypt( $string, $encrypt_method, $key, 0, $iv );
$output = base64_encode( $output );
} else if( $action == 'decrypt' ) {
$output = openssl_decrypt( base64_decode( $string ), $encrypt_method, $key, 0, $iv );
}
return $output;
}
if ( isset( $_GET['login'] ) ) {
$string = $_GET['login'];
echo '<p>Via URL : ' . $string . '</p>';
$decrypted_txt = encrypt_decrypt('decrypt', $string);
echo '<p>Via URL decrypted : ' . $decrypted_txt . '</p>' . PHP_EOL;
$numbers = explode('!', $decrypted_txt);
echo '<pre>' . print_r( $numbers, TRUE ) . '</pre>';
?>
<p>Zoek nu de order erbij met klantnummer <b><?php echo $numbers[0]; ?></b> en bonnummer <b><?php echo $numbers[1]; ?></b></p>
<?php
}
?>
<p><a href="zend.php">Verstuur een nieuwe link</a></p>