login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[PHP] Array probleem

Offline BjornVH - 04/04/2007 19:31
Avatar van BjornVHNieuw lid Hey, ik heb nu deze code

  1. <?
  2. function passConvert($password)
  3. {
  4. $encar = array('2C'=>'0', '3A'=>'1', '4A'=>'2', '91'=>'3', '5D'=>'4', '7A'=>'5', '29'=>'6', 'BC'=>'7', '6E'=>'8', 'D4'=>'9',
  5. 'FF'=>'A', 'F3'=>'B', 'F8'=>'C', '9B'=>'D', '50'=>'E', '51'=>'F', '6D'=>'G', 'E9'=>'H', '9A'=>'I', 'B8'=>'J',
  6. '84'=>'K', 'A8'=>'L', '14'=>'M', '38'=>'N', 'CE'=>'O', '92'=>'P', '5C'=>'Q', 'F5'=>'R', 'EE'=>'S', 'B3'=>'T',
  7. '89'=>'U', '7B'=>'V', 'A2'=>'W', 'AD'=>'X', '71'=>'Y', 'E3'=>'Z', '48'=>'a', 'DB'=>'b', 'FC'=>'c',
  8. '09'=>'d', '1F'=>'e', '94'=>'f', '12'=>'g', '73'=>'h', '37'=>'i', '82'=>'j', '81'=>'k', '39'=>'l', 'C2'=>'m',
  9. '8D'=>'n', '7D'=>'o', '08'=>'p', '4F'=>'q', 'B0'=>'r', 'FE'=>'s', '79'=>'t', '0B'=>'u', 'D6'=>'v', '23'=>'w',
  10. '7C'=>'x', '4B'=>'y', '8E'=>'z');
  11.  
  12. $newpass = "";
  13. for ($i = 0; $i < strlen($password); $i++)
  14. {
  15. $newpass .= $encar[$password[$i]];
  16. }
  17.  
  18. return $newpass;
  19. }
  20. ?>


Om een hexadecimaal paswoord om te zetten naar tekst.

Maar het werkt niet, omdat ik er niet in slaag 2 letters tegelijk om te zetten via de array.

Weet iemand hoe ik dit zou moeten doen, bijvoorbeeld

  1. <?
  2. function passConvert($password)
  3. {
  4. $encar = array('2C'=>'0');
  5.  
  6. $newpass = "";
  7. for ($i = 0; $i < strlen($password); $i++)
  8. {
  9. $newpass .= $encar[$password[$i]];
  10. }
  11.  
  12. return $newpass;
  13. }
  14. ?>


Werkt niet, maar

  1. <?
  2. function passConvert($password)
  3. {
  4. $encar = array('2'=>'0C');
  5.  
  6. $newpass = "";
  7. for ($i = 0; $i < strlen($password); $i++)
  8. {
  9. $newpass .= $encar[$password[$i]];
  10. }
  11.  
  12. return $newpass;
  13. }
  14. ?>


werkt wel (passwordConvert van 2 geeft "0C" als output)

Dank bij voorbaat

Mvg,
Bjorn

15 antwoorden

Gesponsorde links
Offline Dark_Paul - 04/04/2007 19:42
Avatar van Dark_Paul PHP ver gevorderde Hoe ziet $password eruit?
Offline mesynthetix - 04/04/2007 20:07
Avatar van mesynthetix Nieuw lid @Dark_Paul: Password is een string, dat is te zien aan strlen.

Verder zou ik eerder een replace gebruiken:

  1. <?php // voor de kleurtjes
  2. foreach ($encar as $find => $replace) {
  3. $password = str_replace($find, $replace, $password);
  4. }
Offline BjornVH - 04/04/2007 20:08 (laatste wijziging 04/04/2007 20:12)
Avatar van BjornVH Nieuw lid Thanks, gelukt
Offline Godlord - 04/04/2007 20:11 (laatste wijziging 04/04/2007 20:27)
Avatar van Godlord PHP gevorderde
  1. <?php
  2. function passConvert($password)
  3. {
  4. $encar = array('2C', '3A', '4A', '91', '5D', '7A', '29', 'BC', '6E', 'D4', 'FF', 'F3', 'F8', '9B', '50', '51', '6D', 'E9', '9A', 'B8', '84', 'A8', '14', '38', 'CE', '92', '5C', 'F5', 'EE', 'B3', '89', '7B', 'A2', 'AD', '71', 'E3', '48', 'DB', 'FC', '09', '1F', '94', '12', '73', '37', '82', '81', '39', 'C2', '8D', '7D', '08', '4F', 'B0', 'FE', '79', '0B', 'D6', '23', '7C', '4B', '8E');
  5. $encar2 = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', ''Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v','w', 'x', 'y', 'z');
  6.  
  7. // Laat ook maar xD.
  8.  
  9. return $newpass;
  10. }
  11. ?>


Laat ook maar zag net dat het opgelost is xD.

Dit zou moeten werken . En btw. getallen horen niet eens tussen '' of "" behalve als er direct een ander teken op volgt maar gewone getallen niet.

voorbeeldje:
  1. <?php
  2. echo 9999;
  3. echo 'a_8';
  4. echo ' 33 33 ';
  5. echo '_ 88';
  6. echo 'Hallo ik ben nummer: '.44; /* Dit kan ook maar is best wel raar. Bij een var ok maar mag ook het volgende zijn. */
  7. echo 'Hallo ik ben nummer : 44';
  8. ?>


Gewoon een voorbeeldje voor de duidelijkheid.
Offline BjornVH - 04/04/2007 20:12
Avatar van BjornVH Nieuw lid Het is gelukt dankzij mesynthetix

Hartelijk dank!
Offline Gerard - 04/04/2007 20:14
Avatar van Gerard Ouwe rakker
  1. <?php // voor de kleurtjes
  2. foreach ($encar as $find => $replace) {
  3. $password = str_replace($find, $replace, $password);
  4. }
=>
  1. <?php // voor de kleurtjes
  2. $password = str_replace(array_keys($encar), array_values($encar), $password);
Offline BjornVH - 04/04/2007 20:20
Avatar van BjornVH Nieuw lid Ok heb nog iets kleins gevonden

Wat als ik nu bijvoorbeeld een wachtwoord heb zoals

ABCD

en in de array staan AB => 0, BC => 1, CD => 2

Dan zal hij ofwel A1D als output geven, in plaats van 02

help? 
Offline Godlord - 04/04/2007 20:25 (laatste wijziging 05/04/2007 16:57)
Avatar van Godlord PHP gevorderde Dat had ik al verwacht.

  1. <?php
  2. function passConvert($password)
  3. {
  4. $encar = array('2C', '3A', '4A', '91', '5D', '7A', '29', 'BC', '6E', 'D4', 'FF', 'F3', 'F8', '9B', '50', '51', '6D', 'E9', '9A', 'B8', '84', 'A8', '14', '38', 'CE', '92', '5C', 'F5', 'EE', 'B3', '89', '7B', 'A2', 'AD', '71', 'E3', '48', 'DB', 'FC', '09', '1F', '94', '12', '73', '37', '82', '81', '39', 'C2', '8D', '7D', '08', '4F', 'B0', 'FE', '79', '0B', 'D6', '23', '7C', '4B', '8E');
  5. $encar2 = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v','w', 'x', 'y', 'z');
  6.  
  7. $i = 0;
  8. $max = strlen($password) - 1;
  9. $newpass = "";
  10.  
  11. while ($i <= $max) {
  12. $newpass = $newpass.str_replace($encar, $encar2, substr($password, $i, 2));
  13. $i = $i + 2;
  14. }
  15.  
  16. return $newpass;
  17. }
  18. ?>


Probeer dit eens, zou moeten werken denk ik :/.
Offline BjornVH - 04/04/2007 20:30 (laatste wijziging 04/04/2007 20:31)
Avatar van BjornVH Nieuw lid Er stond een fout in je code (''Z')

Maar zelfs daar geen rekening gehouden geeft hij iets compleet anders
Offline mesynthetix - 04/04/2007 20:33
Avatar van mesynthetix Nieuw lid @Godlord: Je hebt ergens een errortje

@BjornVH: Zo te zien staan de foutmeldingen (wss display_errors) op Off, anders had je een E_PARSE voor je neus gekregen.

Verder is de oplossing van Proximus (gedeeltelijk van mij ) net zo goed.
Offline BjornVH - 04/04/2007 20:34 (laatste wijziging 04/04/2007 20:40)
Avatar van BjornVH Nieuw lid @mesyn:

Citaat:
Ok heb nog iets kleins gevonden

Wat als ik nu bijvoorbeeld een wachtwoord heb zoals

ABCD

en in de array staan AB => 0, BC => 1, CD => 2

Dan zal hij ofwel A1D als output geven, in plaats van 02


@Godlord: het moet ergens aan je arrays liggen, er is een letter tekort

Maar bedankt allemaal, ik vin het wel gewoon even de arrays overnemen

EDIT:
Gelukt De 10 mocht er niet staan in de 2de array...
Offline Godlord - 05/04/2007 04:04 (laatste wijziging 05/04/2007 04:04)
Avatar van Godlord PHP gevorderde ^^ hmmm dan werkte mijn code toch perfect op de arrays na .
Offline Wim - 05/04/2007 17:09 (laatste wijziging 05/04/2007 17:09)
Avatar van Wim Crew algemeen str_replace() kan ook array's aan...

string = str_replace (array search, array replace, string);

en uhm;
for ($i = 0; $i < strlen($password); $i++) ===>>> foreach
Offline mesynthetix - 05/04/2007 17:16
Avatar van mesynthetix Nieuw lid @wimmarien: Een for array is iets sneller dan een foreach array, dus win je wat snelheid op deze manier. En het is trouwens ook geen array, anders zou je PHP.net: str_split moeten gebruiken, wat het weer net iets langzamer maakt.
Offline Godlord - 05/04/2007 17:21
Avatar van Godlord PHP gevorderde @wimmarien: dit schijnt al opgelost te zijn en die for is nutteloos. Kijk maar naar het script dat ik heb gestuurd. Dat werkt tenminste nu zoals het moet.

Als je bv ABCD hebt en BC wordt herplaats door 23 dan heb je A23D tewijl hexadecimaal zo is dat het per 2 waardes is. Dus BC herplaatsing is in dat geval fout. Nota: BC is geen hexadecimaal voor 23 ik geef slecht een voorbeeld.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.531s