2015-01-24 2 views
0

Здравствуйте, здесь это маленький код для преобразования строки в шестнадцатеричный и наоборот.

С этим мы не ошибка строку в шестнадцатеричную:

<?php 
if(isset($_POST['upload'])) // si formulaire soumis 
{ 
    $content_dir = 'tmpcipher/'; // dossier où sera déplacé le fichier 
    $tmp_file = $_FILES['fichier']['tmp_name']; 
    if(!is_uploaded_file($tmp_file)) 
    { 

    } 
    // on vérifie maintenant l'extension 
    $type_file = $_FILES['fichier']['type']; 
    // on copie le fichier dans le dossier de destination 
    $name_file = $_FILES['fichier']['name']; 

    if(!move_uploaded_file($tmp_file, $content_dir . $name_file)) 
    { 

    } 
    $name_file2 = $_FILES['fichier']['name']; 
    $hex = bin2hex(file_get_contents($content_dir . $name_file2)); 
    unlink($content_dir . $name_file2); 
    $myfile2 = fopen($content_dir . $name_file2 . "2" , "w"); 
    $myfileurl = $content_dir . $name_file2 . "2"; 
    fwrite($myfile2, $str); 
    fclose($myfile2); 
    $myfile3 = $content_dir . $name_file2 . "2"; 
    if (file_exists($myfile3)) { 
    header('Content-Description: File Transfer'); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename='.basename($myfile3)); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($myfile3)); 
    readfile($myfile3); 
} 
} 
?> 

Reverse, с этим у нас есть ошибка:

<?php 
if(isset($_POST['upload'])) // si formulaire soumis 
{ 
    $content_dir = 'tmpcipher/'; // dossier où sera déplacé le fichier 
    $tmp_file = $_FILES['fichier']['tmp_name']; 
    if(!is_uploaded_file($tmp_file)) 
    { 

    } 
    // on vérifie maintenant l'extension 
    $type_file = $_FILES['fichier']['type']; 
    // on copie le fichier dans le dossier de destination 
    $name_file = $_FILES['fichier']['name']; 

    if(!move_uploaded_file($tmp_file, $content_dir . $name_file)) 
    { 

    } 
    $str0 = file_get_contents($content_dir . $name_file); //HEXADECIMAL CONTENT 
$hexstr1 = hex2bin("73616c7574"); //WORK 
$hexstr2 = hex2bin($str0); //ERROR 
    $name_file = substr($name_file,0,-1); 
    $myfile2 = fopen($content_dir . $name_file, "w"); 
    fwrite($myfile2, $str0); 
    fclose($myfile2); 
    $filectohex = file_get_contents($content_dir . $name_file); 
    $myfile3 = $content_dir . $name_file; 
    if (file_exists($myfile3)) { 
    header('Content-Description: File Transfer'); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename='.basename($myfile3)); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($myfile3)); 
    readfile($myfile3); 
} 
} 
?> 

php_error_log: [25-Jan-2015 00:34: 25 Европа/Берлин] PHP Предупреждение: hex2bin(): строка ввода должна быть шестнадцатеричной строкой в ​​C: \ xampp \ htdocs \ dec.php в строке 47

Когда я беру содержимое строки $ str0, и я делаю hex2bin с , оно работает. я не знаю, если учесть, что PHP мой вар является целым числом, пожалуйста, дайте мне решение :)

спасибо: D

[решено]: Написать переменную, которую вы хотите преобразовать в ASCII (шестнадцатеричное содержание , а затем преобразовать в ASCII содержимого этого файла (должно быть шестнадцатеричными).

$hex2bin($str0); ---> 
$myfile2 = fopen($content_dir . $name_file, "w"); 
fwrite($myfile2, $str0); 
fclose($myfile2); 
$myfile2path = $content_dir . $name_file; 
$bin = hex2bin(file_get_contents($myfile2path)); 

ответ

0

Вы пишете $str в файл, вместо $hex. файл пуст. Читает пустую строку, и hex2bin('') дает оценку Ошибка. В этом фрагменте кода:

// below you define $hex 
$hex = bin2hex(file_get_contents($content_dir . $name_file2)); 
unlink($content_dir . $name_file2); 
$myfile2 = fopen($content_dir . $name_file2 . "2" , "w"); 
$myfileurl = $content_dir . $name_file2 . "2"; 
// but here you write $str 
fwrite($myfile2, $str); 

Вы могли бы найти это просто повторяющий содержание $str0:

эхо "Содержание str0 является [$ str0] \ п"

+0

NOP, вы не понять, $ str0 - это содержимое файла, этот файл представляет собой шестнадцатеричное содержимое (по bin2hex), ошибка находится на: hex2bin ($ str0), когда я пишу в выходной файл $ str0 У меня есть содержимое моего ввода file, Когда я пишу в своем исходном файле hex2bin ($ str0), поэтому $ hexstr2 (ошибка на php_error_log), у меня есть пробельный символ. – dudeitscrypto

+0

Я не говорил о '$ str0', я говорил о' $ str', которая является другой переменной в вашем первом фрагменте кода. –

+0

Ohoh Я понимаю, что вы имеете в виду, но я вырезал короткую часть кода, определяемую им $ str, нет проблем с первой частью кода, я решил свою проблему, написав $ str0 в файле (шестнадцатеричное содержимое) и then hex2bin (file_get_content (filecontains $ str0)); $ myfile2 = fopen ($ content_dir. $ name_file, "w"); \t fwrite ($ myfile2, $ str0); \t fclose ($ myfile2); \t $ myfile2path = $ content_dir. $ Name_file; \t $ bin = hex2bin (file_get_contents ($ myfile2path)); \t $ myfile4 = fopen ($ content_dir. $ Name_file. "T", "w"); \t $ myfile4path = $ content_dir. $ name_file. «Т»; \t fwrite ($ myfile4, $ bin); \t fclose ($ myfile4); – dudeitscrypto