Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Trasformare codice da vb a php

    Qualcuno mi può trasformare questo codice VB in PHP??

    Grazie in anticipo..
    codice:
    Public Function LockToKey(lck As String) As String
      Dim h As Integer, j As Integer, n As Integer
      n = 5
      h = InStr(1, lck, " ")
      If h Then lck = Left$(lck, h - 1)
      h = Asc(lck) Xor Asc(Right$(lck, 1)) Xor Asc(Right$(lck, 2)) Xor n
      h = (h \ 16) Xor (h * 16)
      Do While h > 255
        h = h - 256
      Loop
      Select Case h
        Case 0, 5, 36, 96, 124, 126
          LockToKey = "/%DCN" & Right$("00" & CStr(h), 3) & "%/"
        Case Else
          LockToKey = Chr$(h)
      End Select
      For j = 2 To Len(lck)
        h = Asc(Mid$(lck, j, 1)) Xor Asc(Mid$(lck, j - 1, 1))
        h = (h \ 16) Xor (h * 16)
        Do While h > 255
          h = h - 256
        Loop
        Select Case h
          Case 0, 5, 36, 96, 124, 126
            LockToKey = LockToKey & "/%DCN" & Right$("00" & CStr(h), 3) & "%/"
          Case Else
            LockToKey = LockToKey & Chr$(h)
        End Select
      Next
    End Function

  2. #2
    io c'avevo provato ma non funzionava ^^

    leggi la mail che ti ho inviato ... nel mio codice sorgente ciè un metodo della classe apposito per fare la cosa

    se non erro si chiama Lock2Key

    codice:
    	// Lock To Key function written by [RO]VeNoM
    
    	/*-------------------
    		NOT COMMENTED
    	-------------------*/
    	
    	/**
    	 * PHPDCFrameWork::__lock2key()
    	 * 
    	 * This function decode LOCK sendend from HUB SERVER and CLIENT.
    	 * Return decoded LOCK, called KEY
    	 * 
    	 * @param $_LOCK		// LOCK String
    	 * @return 
    	 */
    	function __lock2key($_LOCK) {
    		// Get LOCK String Length
    		$LockLength = strlen($_LOCK);
    
    		// Start to Decode FIRST CHAR
    		$h = ord($_LOCK{0}) ^ ord( $_LOCK{ $LockLength - 1} ) ^ ord( $_LOCK{ $LockLength - 2} ) ^ 5;
    		while ($h > 255) {$h = $h - 256;}
    	    $h = (($h<<4) & 240) | (($h>>4) & 15);
    		$a = $h;
    
    		if ($a == '126' OR $a == '124' OR $a == '96' OR $a == '36' OR $a == '5' OR $a == '0') {	
    			$LockToKey = "/%DCN";
    			if ($a < 100) {$LockToKey .= "0";}
    			if ($a < 10) {$LockToKey .= "0";}
    			$LockToKey .= $a;
    			$LockToKey .= "%/";
    		} else {
    			$LockToKey = chr($a);
    		}
    	
    		// Decode Other Chars
    		for ($j = 1; $j < strlen($_LOCK); $j++) {
    			$h = ord($_LOCK{$j}) ^ ord($_LOCK{$j-1});
    			while ($h > 255) {$h = $h - 256;}
    			$h = (($h<<4) & 240) | (($h>>4) & 15);
    			$a = $h;
    		
    			if ($a == '126' OR $a == '124' OR $a == '96' OR $a == '36' OR $a == '5' OR $a == '0') {
    				$LockToKey .= "/%DCN";
    				if ($a < 100) {$LockToKey .= "0";}
    				if ($a < 10) {$LockToKey .= "0";}
    		    	$LockToKey .= $a;
    				$LockToKey .= "%/";	
    			} else {
    				$LockToKey .= chr($a);
    			}
    		}
    		
    		// Return Dedoced LOCK String
    		return $LockToKey;
    	}

  3. #3
    Si ho visto questa tua funzione, ma non calcola bene o forse non li passo bene i parametri che vuole la funzione.
    Devo passare intero Lock o una parte del Lock? Se una parte, quale?

  4. #4
    fai un bel cerca ... guarda dove richiama la funzione e guarda cosa passo ... nn ho il codice a portata di mano qui

  5. #5
    si ho vito, ma il codice è lungo più di 1000 righe e non è facile trovare tutte quelle variabili in mezzo a tutto quel casino. Hai passato il valore di lock a diverse variabili trasformandole in array ecc. ci ho provato anche io ma non va in nessun modo.

  6. #6
    risolto, in base al codice VB che ho trovato e in base alla tua funzione ho riscritto tutta la funzione in modo mio.


    Cmq in tua funzione considerando la lock:
    $Lock EXTENDEDPROTOCOL::This_hub_was_written_by_Yoshi::C TRL[)Ñæ] Pk=YnHub|

    Li passavi solamente:
    EXTENDEDPROTOCOL::This_hub_was_written_by_Yoshi::C TRL[)Ñæ] Pk=YnHub
    Toglievi $Lock e il carattere |

  7. #7
    dunque ... la | finale è il terminatore e non c'entra con la lock

    il $Lock ... boh ... nn ricordo perché non lo passavo

  8. #8
    Originariamente inviato da daniele_dll
    dunque ... la | finale è il terminatore e non c'entra con la lock

    il $Lock ... boh ... nn ricordo perché non lo passavo
    Si lo so che il simbolo | è il terminale di invio o ricezzione dati..

    Il $Lock non lo passavi perchè ricavavi prima il nome del dato ricevuto tipo lock, to, nicklist ecc... E' poi in base a questo li passavi una stringa apposita...

    Cmq grazie ancora una volta Daniele_DLL

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.