Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: generowanie linkow z zahashowanym id
Forum PHP.pl > Forum > PHP
wewior
chodzi mi o sposob niejawnego wkladania id do linka tzn mam adres typu
www.domena.pl/?sHash=abc123
gdzie abc123 jest zakodowanym w jakis sposob id, nie musi to byc super bezpieczne i nie do odkodowania (w sumie musi byc do odkodowania bo taki jest cele ze w linku jest przesylane id) ale zeby nie bylo jawnie w linku numeru, probowalem base64 ale on generuje rozne znaki niepotrzebne, np znaki = ktore w linku nie sa korzystne wolalbym miec same alfanumeryczne znaki...
moze byc tak ze do id jest dodawany jakis tekst ale nie chcialbym tez zeby to bylo za dlugie...
jesli podobny temat byl juz prosze o odeslanie, nie moglem znalezc...
pyro
możesz se zrobić sam funkcję szyfrującąw sposób:

// EDIT, dałem jako funkcje winksmiley.jpg

  1. <?php
  2. function szyfruj($gdzie)
  3. {
  4. $z_czego = array('a','b','c') // i tak dalej...
  5. $na_co = array('Bz', 'Wo', 'Gr'); // i tak dalej...
  6. $a = str_replace($z_czego, $na_co, $gdzie);
  7. return $a;
  8. }
  9. function deszyfruj($gdzie)
  10. {
  11. $z_czego = array('Bz', 'Wo', 'Gr'); // i tak dalej...
  12. $na_co = array('a','b','c') // i tak dalej...
  13. $a = str_replace($z_czego, $na_co, $gdzie);
  14. return $a;
  15. }
  16. ?>


aczkolwiek nie rozumiem po co ci to
wewior
chodzi po prostu o ukrycie id w linku, podany przyklad jest ok ale nie jest to jeszcze to o co mi chodzi, troche za duzo kombinowania
vokiel
To może lepiej funkcje mieszające;
Np sh1, czy md5, a pozniej porównać
  1. <?php
  2. if (md5($id) == $_GET['sHash']){
  3. echo 'hash ok';
  4. }else {
  5. echo 'hash to sciema';
  6. }
  7. //Ale w takim przypadku hash rób z dwóch rzeczy np 
  8. $sHash = md5($id.$login);
  9. $sHash = md5($id.TWOJ_UNIKALNY_CIAG_SZYFRUJACY);
  10. // tak będzie bezpieczniej
  11. ?>
wewior
spoko, myslalem o tym z tym ze md5 ma ta wade ze trzeba przeleciec cala baze zeby sprawdzic a jesli jest to plik csv to nie da sie zadac zapytania o md5 i trzeba robic funkcje osobna do pobierania, a w przypadku np base64 mam od razu do rozkodowania id
druga sprawa ze chcialbym miec krotki ten parametr a md5 jest dosyc dlugi...
mike
~wewior a cóż to jest za parametr, że chcesz go kodować?
pyro
Cytat(wewior @ 13.08.2008, 13:15:38 ) *
chodzi po prostu o ukrycie id w linku, podany przyklad jest ok ale nie jest to jeszcze to o co mi chodzi, troche za duzo kombinowania


przeciwnie, poprostu se musisz reszte alfabetu dopisac i jego odpowiednik o_O
wewior
mike >> chodzi bardziej o wyglad linka, troche bardziej kosmetyka niz jakis konkretny cel programistyczny, pozniej pewnie i tak bedzie to korzystalo z rewritow, ale po prostu takie zaloznie zeby nie szlo calkiem jawnie
dadexix
http://pl2.php.net/manual/pl/book.mcrypt.php

hashować za pomocą soli X a potem odhashowywać za pomocą X:)
wewior
dadexix >> mozesz troche szerzej lub z przykladem bo nie wiem na co patrzec w tej dokumentacji...
dadexix
szczerze to tego nie uzywalem..
http://pl2.php.net/manual/pl/mcrypt.examples.php
  1. <?php
  2. $key = "this is a secret key";
  3. $input = "Let us meet at 9 o'clock at the secret place.";
  4.  
  5. $encrypted_data = mcrypt_cbc(MCRYPT_3DES, $key, $input, MCRYPT_ENCRYPT);
  6. ?>


a potem zmieniamy w zwykły string:
  1. <?php
  2. $key = "this is a secret key";
  3. $input = "Let us meet at 9 o'clock at the secret place.";
  4.  
  5. $decrypted_data = mcrypt_cbc(MCRYPT_3DES, $key, $encrypted_data, MCRYPT_ENCRYPT);
  6.  
  7. i teraz
  8. $decrypted_data = "Let us meet at 9 o'clock at the secret place.";
  9. ?>


Więcej nie pomogę:)
Kicok
  1. <?php
  2.  
  3. //$przykladowyID = 1;
  4. //$przykladowyID = 100;
  5. //$przykladowyID = 9999999999;
  6. $przykladowyID = 123456;
  7.  
  8. $zakodowanyID = base_convert( $przykladowyID, 10, 36 );
  9. echo "Zakodowany: $zakodowanyID<br>";
  10.  
  11. $rozkodowanyID = base_convert( $zakodowanyID, 36, 10 );
  12. echo "Rozkodowany: $rozkodowanyID";
  13.  
  14. ?>


Lekkie rozwiązanie z użyciem base_convert" title="Zobacz w manualu PHP" target="_manual. Wady:
- da się odgadnąć kolejne ID ( Mając ID "aaa" wiemy, że kolejnym będzie "aab" )
- ID z zakresu 0-9 oczywiście pozostaną niezmienione
dadexix
jak by liczby zamieniać na HEX/BIN?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.