[PHP] Array probleem
BjornVH - 04/04/2007 19:31
Nieuw lid
Hey, ik heb nu deze code
<?
function passConvert($password)
{
$encar = array('2C'=>'0', '3A'=>'1', '4A'=>'2', '91'=>'3', '5D'=>'4', '7A'=>'5', '29'=>'6', 'BC'=>'7', '6E'=>'8', 'D4'=>'9',
'FF'=>'A', 'F3'=>'B', 'F8'=>'C', '9B'=>'D', '50'=>'E', '51'=>'F', '6D'=>'G', 'E9'=>'H', '9A'=>'I', 'B8'=>'J',
'84'=>'K', 'A8'=>'L', '14'=>'M', '38'=>'N', 'CE'=>'O', '92'=>'P', '5C'=>'Q', 'F5'=>'R', 'EE'=>'S', 'B3'=>'T',
'89'=>'U', '7B'=>'V', 'A2'=>'W', 'AD'=>'X', '71'=>'Y', 'E3'=>'Z', '48'=>'a', 'DB'=>'b', 'FC'=>'c',
'09'=>'d', '1F'=>'e', '94'=>'f', '12'=>'g', '73'=>'h', '37'=>'i', '82'=>'j', '81'=>'k', '39'=>'l', 'C2'=>'m',
'8D'=>'n', '7D'=>'o', '08'=>'p', '4F'=>'q', 'B0'=>'r', 'FE'=>'s', '79'=>'t', '0B'=>'u', 'D6'=>'v', '23'=>'w',
'7C'=>'x', '4B'=>'y', '8E'=>'z');
$newpass = "";
for ($i = 0; $i < strlen($password); $i++)
{
$newpass .= $encar[$password[$i]];
}
return $newpass;
}
?>
<?
function passConvert( $password )
{
$encar = array ( '2C' => '0' , '3A' => '1' , '4A' => '2' , '91' => '3' , '5D' => '4' , '7A' => '5' , '29' => '6' , 'BC' => '7' , '6E' => '8' , 'D4' => '9' , 'FF' => 'A' , 'F3' => 'B' , 'F8' => 'C' , '9B' => 'D' , '50' => 'E' , '51' => 'F' , '6D' => 'G' , 'E9' => 'H' , '9A' => 'I' , 'B8' => 'J' ,
'84' => 'K' , 'A8' => 'L' , '14' => 'M' , '38' => 'N' , 'CE' => 'O' , '92' => 'P' , '5C' => 'Q' , 'F5' => 'R' , 'EE' => 'S' , 'B3' => 'T' ,
'89' => 'U' , '7B' => 'V' , 'A2' => 'W' , 'AD' => 'X' , '71' => 'Y' , 'E3' => 'Z' , '48' => 'a' , 'DB' => 'b' , 'FC' => 'c' ,
'09' => 'd' , '1F' => 'e' , '94' => 'f' , '12' => 'g' , '73' => 'h' , '37' => 'i' , '82' => 'j' , '81' => 'k' , '39' => 'l' , 'C2' => 'm' ,
'8D' => 'n' , '7D' => 'o' , '08' => 'p' , '4F' => 'q' , 'B0' => 'r' , 'FE' => 's' , '79' => 't' , '0B' => 'u' , 'D6' => 'v' , '23' => 'w' ,
'7C' => 'x' , '4B' => 'y' , '8E' => 'z' ) ;
$newpass = "" ;
for ( $i = 0 ; $i < strlen ( $password ) ; $i ++ ) {
$newpass .= $encar [ $password [ $i ] ] ;
}
return $newpass ;
}
?>
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
<?
function passConvert($password)
{
$encar = array('2C'=>'0');
$newpass = "";
for ($i = 0; $i < strlen($password); $i++)
{
$newpass .= $encar[$password[$i]];
}
return $newpass;
}
?>
<?
function passConvert( $password )
{
$encar = array ( '2C' => '0' ) ;
$newpass = "" ;
for ( $i = 0 ; $i < strlen ( $password ) ; $i ++ ) {
$newpass .= $encar [ $password [ $i ] ] ;
}
return $newpass ;
}
?>
Werkt niet, maar
<?
function passConvert($password)
{
$encar = array('2'=>'0C');
$newpass = "";
for ($i = 0; $i < strlen($password); $i++)
{
$newpass .= $encar[$password[$i]];
}
return $newpass;
}
?>
<?
function passConvert( $password )
{
$encar = array ( '2' => '0C' ) ;
$newpass = "" ;
for ( $i = 0 ; $i < strlen ( $password ) ; $i ++ ) {
$newpass .= $encar [ $password [ $i ] ] ;
}
return $newpass ;
}
?>
werkt wel (passwordConvert van 2 geeft "0C" als output)
Dank bij voorbaat
Mvg,
Bjorn
15 antwoorden
Gesponsorde links
Dark_Paul - 04/04/2007 19:42
PHP ver gevorderde
Hoe ziet $password eruit?
mesynthetix - 04/04/2007 20:07
Nieuw lid
@Dark_Paul: Password is een string, dat is te zien aan strlen.
Verder zou ik eerder een replace gebruiken:
<?php // voor de kleurtjes
foreach ($encar as $find => $replace) {
$password = str_replace($find, $replace, $password);
}
<?php // voor de kleurtjes
foreach ( $encar as $find => $replace ) {
}
BjornVH - 04/04/2007 20:08 (laatste wijziging 04/04/2007 20:12)
Nieuw lid
Thanks, gelukt
Godlord - 04/04/2007 20:11 (laatste wijziging 04/04/2007 20:27)
PHP gevorderde
<?php
function passConvert($password)
{
$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');
$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');
// Laat ook maar xD.
return $newpass;
}
?>
<?php
function passConvert( $password )
{
$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' ) ; $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
');
// Laat ook maar xD.
return $newpass;
}
?>
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:
<?php
echo 9999;
echo 'a_8';
echo ' 33 33 ';
echo '_ 88';
echo 'Hallo ik ben nummer: '.44; /* Dit kan ook maar is best wel raar. Bij een var ok maar mag ook het volgende zijn. */
echo 'Hallo ik ben nummer : 44';
?>
<?php
echo 'Hallo ik ben nummer: ' .44 ; /* Dit kan ook maar is best wel raar. Bij een var ok maar mag ook het volgende zijn. */ echo 'Hallo ik ben nummer : 44' ; ?>
Gewoon een voorbeeldje voor de duidelijkheid.
BjornVH - 04/04/2007 20:12
Nieuw lid
Het is gelukt dankzij mesynthetix
Hartelijk dank!
Gerard - 04/04/2007 20:14
Ouwe rakker
<?php // voor de kleurtjes
foreach ($encar as $find => $replace) {
$password = str_replace($find, $replace, $password);
}
<?php // voor de kleurtjes
foreach ( $encar as $find => $replace ) {
}
=>
<?php // voor de kleurtjes
$password = str_replace(array_keys($encar), array_values($encar), $password);
<?php // voor de kleurtjes
Godlord - 04/04/2007 20:25 (laatste wijziging 05/04/2007 16:57)
PHP gevorderde
Dat had ik al verwacht.
<?php
function passConvert($password)
{
$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');
$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');
$i = 0;
$max = strlen($password) - 1;
$newpass = "";
while ($i <= $max) {
$newpass = $newpass.str_replace($encar, $encar2, substr($password, $i, 2));
$i = $i + 2;
}
return $newpass;
}
?>
<?php
function passConvert( $password )
{
$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' ) ; $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' ) ;
$i = 0 ;
$newpass = "" ;
while ( $i <= $max ) {
$i = $i + 2 ;
}
return $newpass ;
}
?>
Probeer dit eens, zou moeten werken denk ik :/.
BjornVH - 04/04/2007 20:30 (laatste wijziging 04/04/2007 20:31)
Nieuw lid
Er stond een fout in je code (''Z')
Maar zelfs daar geen rekening gehouden geeft hij iets compleet anders
BjornVH - 04/04/2007 20:34 (laatste wijziging 04/04/2007 20:40)
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...
Wim - 05/04/2007 17:09 (laatste wijziging 05/04/2007 17:09)
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
mesynthetix - 05/04/2007 17:16
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.
Godlord - 05/04/2007 17:21
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 .