Link naar website (zoals track & trace)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Eric Lokker

Eric Lokker

03/12/2018 16:52:42
Quote Anchor link
Hoe kan ik een klant een link geven waarin 2 inlogcodes verwerkt zijn?

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
 
PHP hulp

PHP hulp

17/12/2018 21:45:43
 
- Ariën -
Beheerder

- Ariën -

03/12/2018 16:57:02
Quote Anchor link
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 status-module een IP-ban geven voor een korte tijd.
Gewijzigd op 03/12/2018 17:03:29 door - Ariën -
 
Eric Lokker

Eric Lokker

03/12/2018 17:07:03
Quote Anchor link
- 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.


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
 
- Ariën -
Beheerder

- Ariën -

03/12/2018 17:13:50
Quote Anchor link
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.
Gewijzigd op 03/12/2018 17:17:04 door - Ariën -
 
Eric Lokker

Eric Lokker

03/12/2018 17:29:11
Quote Anchor link
- 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.

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.
 
- Ariën -
Beheerder

- Ariën -

03/12/2018 17:34:08
Quote Anchor link
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.
Gewijzigd op 03/12/2018 17:34:51 door - Ariën -
 
Eric Lokker

Eric Lokker

03/12/2018 18:56:34
Quote Anchor link
- 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.


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.
 
- Ariën -
Beheerder

- Ariën -

03/12/2018 19:08:00
Quote Anchor link
Ben je bekend met $_GET[] en hoe je de dta uit de URL in je site kan verwerken?

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)
PHP script in nieuw venster Selecteer het PHP script
1
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']);}?>">
 
Eric Lokker

Eric Lokker

03/12/2018 19:26:12
Quote Anchor link
Nee niet echt bekend eigenlijk.
De regel in het php bestand ziet er nu als volgt uit om te communiceren met het database.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>          


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.
Gewijzigd op 03/12/2018 19:33:39 door - Ariën -
 
- Ariën -
Beheerder

- Ariën -

03/12/2018 19:31:28
Quote Anchor link
De code die ik heb heeft niks met databases te maken. Je geeft de waarde gewoon enkel in de URL mee, en je gebruikt die in je HTML-code, zoals je invulveld.

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
 
Adoptive Solution

Adoptive Solution

03/12/2018 23:44:43
Quote Anchor link
Vond nog wat in het archief.
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>


De ontvang pagina :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.