Iemand hier met ervaring in php die even kan meekijken met me? Ik heb een oud stukje waar ik een hele simpele licentiecode opbouw met de volgende procedure:
Delphi Code:
function EncodePWDEx(Data, SecurityString: string; MinV: Integer = 0;
MaxV: Integer = 5): string;
const
Codes = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var
i, x: integer;
s1, s2, ss: string;
begin
if minV > MaxV then
begin
i := minv;
minv := maxv;
maxv := i;
end;
if MinV < 0 then MinV := 0;
if MaxV > 100 then MaxV := 100;
Result := '';
if Length(SecurityString) < 16 then Exit;
for i := 1 to Length(SecurityString) do
begin
s1 := Copy(SecurityString, i + 1,Length(securitystring));
if Pos(SecurityString[i], s1) > 0 then Exit;
if Pos(SecurityString[i], Codes) <= 0 then Exit;
end;
s1 := Codes;
s2 := '';
for i := 1 to Length(SecurityString) do
begin
x := Pos(SecurityString[i], s1);
if x > 0 then s1 := Copy(s1, 1,x - 1) + Copy(s1, x + 1,Length(s1));
end;
ss := securitystring;
for i := 1 to Length(Data) do
begin
s2 := s2 + ss[Ord(Data[i]) mod 16 + 1];
ss := Copy(ss, Length(ss), 1) + Copy(ss, 1,Length(ss) - 1);
s2 := s2 + ss[Ord(Data[i]) div 16 + 1];
ss := Copy(ss, Length(ss), 1) + Copy(ss, 1,Length(ss) - 1);
end;
Result := MakeRNDString(s1, Random(MaxV - MinV) + minV + 1);
for i := 1 to Length(s2) do Result := Result + s2[i] + MakeRNDString(s1,
Random(MaxV - MinV) + minV);
end;
Nu ben ik die "even" aan het herschrijven naar php, omdat dat even nodig is - zodat ik die oude functie netjes in een php kan wegwerken om de boel automatisch te laten gaan. Heb nu al een beter systeem voor licenties, maar deze wordt nog gebruikt in een aantal oudere - en dus nog altijd nodig.
Mijn php code tot nu toe:
PHP Code:
function EncodePWDEx($data, $security_string, $min_v = 0, $max_v = 5) {
$codes = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
if($min_v > $max_v) {
$i = $min_v;
$min_v = $max_v;
$max_v = $i;
}
if($min_v < 0) {
$min_v = 0;
}
if($max_v > 100) {
$max_v = 100;
}
if(strlen($security_string) < 16) return '';
$len = strlen($security_string);
$s1 = '';
for ($i = 0; $i < $len; $i++) {
$x = $i +1;
$s1 = substr($security_string, $x, $len - $x);
if(stripos($s1, $security_string[$i]) > 0) {
return '';
}
if(stripos($codes, $security_string[$i]) <= 0) {
return '';
}
}
$s1 = $codes;
$s2 = '';
for ($i = 0; $i < $len; $i++) {
$x = stripos($security_string[$i], $s1);
if($x > 0) {
$s1 = substr($s1, 1, $x -1) + substr($s1, $x +1, strlen($s1));
}
}
$ss = $security_string;
$len = strlen($data);
for ($i = 0; $i < $len; $i++) {
$s2 .= $ss[ord($data[$i]) % 16 +1];
$ss = substr($ss, strlen($ss), 1) . substr($ss, 1, strlen($ss) -1);
$s2 .= $ss[ord($data[$i]) / 16 +1];
$ss = substr($ss, strlen($ss), 1) . substr($ss, 1, strlen($ss) -1);
}
$res = MakeRNDString($s1, rand(0, $max_v - $min_v) + $min_v +1);
for ($i = 0; $i < strlen($s2); $i++) {
$res .= $s2[$i] + MakeRNDString($s1, rand(0, $max_v - $min_v) + $min_v +1);
}
return $res;
}
Alleen loop ik vast - krijg meldingen zoals:
Code:
NOTICE String offset cast occurred on line number 51
NOTICE String offset cast occurred on line number 51
NOTICE String offset cast occurred on line number 51
NOTICE String offset cast occurred on line number 51
NOTICE String offset cast occurred on line number 51
NOTICE Uninitialized string offset: 13 on line number 49
Nu de bovenstaande delphi functie heb ik niet zelf gemaakt, ben die ergens tegen gekomen lange tijd geleden - Op zich zou ik al 90% goed moeten hebben van de functie in php, maar ergens doe ik toch iets anders/mis .. iemand die eens wilt/kan meekijken? Bedoeling is dat ik uit beide hetzelfde resultaat kan krijgen.. zodat ik een oud licentiesysteem kan omzetten in de website, en dat niet meer handmatig moet gebeuren, nieuwe programma's werken al met een ander systeem - maar aantal nog op deze "oude"..
Alvast bedankt voor de hulp
Bookmarks