|
|
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo
|
|
[ PHP ] Porównanie MD5 i wy?wietlenie wyników. |
Autor |
Wiadomość |
Crypt3r
Pomógł: 1 raz Posty: 22
|
Wysłany: 09-03-2015, 01:33 [ PHP ] Porównanie MD5 i wyświetlenie wyników.
|
|
|
Problem dotyczy poprzedniego wątku: http://przemo.org/phpBB2/...ic.php?t=153084
Tym razem chodzi o wyświetlenie wyników. Potrzebuję w szablonie wyświetlić status prawidłowej (OK) bądź nieprawidłowej sumy kontrolnej pliku (BŁĄD).
Kod szablonu gdzie {STATUS} wyświetla status.
Kod: | $template->assign_vars(array(
'LICZBA' => $i,
'NAZWA' => $nazwa_pliku,
'MD5' => $suma_md5,
'STATUS' => $md5_tablica,
)); |
Dla pojedynczego pliku wystarczy.
Kod: | $md5file = file_get_contents("md5file.txt");
if (md5_file("test.txt") == $md5file)
{
echo "The file is ok.";
}
else
{
echo "The file has been changed.";
}
?> |
Ktoś mi jeszcze podpowiedział, że mogę zrobić to w ten sposób.
Kod: | foreach ( $tablica as $klucz => $wart )
{
echo $klucz . ' - ' ( $wart == md5_file($klucz) ? 'OK' : 'NIE OK' ) . "\n";
} |
Z tym, ze w tym kodzie coś mi nie bangla i generalnie nie mogę upakować w nim kodu szablonu {STATUS}.
Zakładam, że ciągle kwestia rozbija się o tę pętlę foreach, ale nie za bardzo wiem gdzie jest błąd? |
|
|
|
|
Gadatliwa Kasia
|
|
|
|
Tommekk80
Pomógł: 1411 razy Posty: 4780
|
Wysłany: 09-03-2015, 07:40
|
|
|
Zaglądałeś, jak to jest napisane np w check_files.php? Tam jest porównywanie sumy kontrolnej właśnie wg zawartości check_data.php. Może nawet niepotrzebnie piszesz to co piszesz? |
|
|
|
|
Crypt3r
Pomógł: 1 raz Posty: 22
|
Wysłany: 09-03-2015, 15:25
|
|
|
Tommekk80, oczywiście że zaglądałem. Posiłkowałem się tym plikiem, jednak potrzebuję prostego rozwiązania. Rozwiązanie Przema jest w porządku, wiele w nim opcji i danych, a mi wystarczy jedynie to co stworzyłem w tabelce (z poprzedniego wątku).
Stworzyłem coś takiego, ale nie chce za bardzo wyświetlać. Mało tego dubluje ciągle ostatni zapis z pierwszego foreach.
Kod: | foreach ($md5_tablica as $nazwa_pliku => $suma_md5) { //zwraca z tablicy ($md5_tablica): nazwę pliku ($nazwa_pliku) i sumę md5 ($suma_md5)
$i++; //standardowa inkrementacja każdej linii :)
//echo "$i.<br/>";
//echo "$nazwa_pliku <br/>";
//echo "$suma_md5 <br/><br/>";
//definicja {FUNKCJA} funkcji w szablonie tpl
foreach ( $md5_tablica as $nazwa_pliku => $suma_md5 )
{
echo $nazwa_pliku . ' - ' . ( $suma_md5 == md5_file($nazwa_pliku) ? 'OK' : 'NIE OK' ) . "\n";
} |
W tym i tak jest błąd, to pewne. Kwestia rozbija się tylko o porównanie sum plików z serwera z sumami, które znajdują się w pliku checker_sumy.php
Tutaj, cały kod pliku checker.php
Kod: | <?php
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
include($phpbb_root_path . 'checker_sumy.'.$phpEx);
include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_checker.' . $phpEx);
$page_title = $lang['beta'];
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
if ($board_config['disable_checker'])
{
message_die(GENERAL_MESSAGE, $lang['disable']);
}
/* Nagłówek */
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
{
echo 'Test echo!<br/><br/>'; //jakiś tam sobie echo show :)
if ($userdata['user_level'] == ADMIN)
{
$handle = fopen('checker_sumy.'.$phpEx , 'r'); //otwiera plik checker_sumy.php
foreach ($md5_tablica as $nazwa_pliku => $suma_md5) { //zwraca z tablicy ($md5_tablica): nazwę pliku ($nazwa_pliku) i sumę md5 ($suma_md5)
$i++; //standardowa inkrementacja każdej linii :)
//echo "$i.<br/>";
//echo "$nazwa_pliku <br/>";
//echo "$suma_md5 <br/><br/>";
//definicja {FUNKCJA} funkcji w szablonie tpl
foreach ( $md5_tablica as $nazwa_pliku => $suma_md5 )
{
echo $nazwa_pliku . ' - ' . ( $suma_md5 == md5_file($nazwa_pliku) ? 'OK' : 'NIE OK' ) . "\n";
}
$template->assign_block_vars('checker', array(
'LICZBA' => $i,
'NAZWA' => $nazwa_pliku,
'MD5' => $suma_md5,
'STATUS' => $md5_tablica
));
}
$template->set_filenames(array('body' => 'checker_body.tpl'));
$template->pparse('body');
}
else
{
message_die(GENERAL_MESSAGE, $lang['error']);
}
}
/* Stopka */
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
?> |
|
|
|
|
|
Tommekk80
Pomógł: 1411 razy Posty: 4780
|
Wysłany: 09-03-2015, 16:03
|
|
|
Czemu masz pętlę w pętli? Ta w środku wydaje się być bez sensu.
Kod: | foreach ( $md5_tablica as $nazwa_pliku => $suma_md5 )
{
echo $nazwa_pliku . ' - ' . ( $suma_md5 == md5_file($nazwa_pliku) ? 'OK' : 'NIE OK' ) . "\n";
} |
|
|
|
|
|
Crypt3r
Pomógł: 1 raz Posty: 22
|
Wysłany: 09-03-2015, 16:16
|
|
|
Dobra, przeniosłem ją pod wczytywanie szablonu, jednak tak czy siak pliku nie porównuje i ciągle wyświetla NIE OK. To i tak nie zmienia faktu, że czego bym nie robił to nie upakuję tego w szablon.
Kod: | $template->assign_block_vars('checker', array(
'STATUS' => $md5_tablica
));
} |
Cały kod pliku wygląda teraz tak:
Kod: | <?php
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
include($phpbb_root_path . 'checker_sumy.'.$phpEx);
include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_checker.' . $phpEx);
$page_title = $lang['beta'];
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
if ($board_config['disable_checker'])
{
message_die(GENERAL_MESSAGE, $lang['disable']);
}
/* Nagłówek */
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
{
echo 'Test echo!<br/><br/>'; //jakiś tam sobie echo show :)
if ($userdata['user_level'] == ADMIN)
{
$handle = fopen('checker_sumy.'.$phpEx , 'r'); //otwiera plik checker_sumy.php
foreach ($md5_tablica as $nazwa_pliku => $suma_md5) { //zwraca z tablicy ($md5_tablica): nazwę pliku ($nazwa_pliku) i sumę md5 ($suma_md5)
$i++; //standardowa inkrementacja każdej linii :)
//echo "$i.<br/>";
//echo "$nazwa_pliku <br/>";
//echo "$suma_md5 <br/><br/>";
//definicja {FUNKCJA} funkcji w szablonie tpl
$template->assign_block_vars('checker', array(
'LICZBA' => $i,
'NAZWA' => $nazwa_pliku,
'MD5' => $suma_md5,
'STATUS' => $md5_tablica
));
}
foreach ($md5_tablica as $nazwa_pliku => $suma_md5 )
{
echo $nazwa_pliku . ' - ' . ($suma_md5 == md5_file($nazwa_pliku) ? 'OK' : 'NIE OK' ) . "\n";
}
$template->set_filenames(array('body' => 'checker_body.tpl'));
$template->pparse('body');
}
else
{
message_die(GENERAL_MESSAGE, $lang['error']);
}
}
/* Stopka */
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
?> |
Zrzut z wyświetlania.
|
|
|
|
|
Tommekk80
Pomógł: 1411 razy Posty: 4780
|
Wysłany: 09-03-2015, 16:20
|
|
|
Załączyłbyś wszystkie pliki? Jak masz zapisane nazwy plików w checker_sumy.php ?
//edit -
Kod: | 'STATUS' => $md5_tablica |
skoro status = cała tablica, nie dziw się, że ci zwraca 'Array' |
|
|
|
|
Crypt3r
Pomógł: 1 raz Posty: 22
|
Wysłany: 09-03-2015, 17:12
|
|
|
Oczywiście, nie ma problemu. Jeśli uda sie skończyć tego moda, to jak najbardziej go tutaj udostępnię.
checker.php
Kod: | <?php
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
include($phpbb_root_path . 'checker_sumy.'.$phpEx);
include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_checker.' . $phpEx);
$page_title = $lang['beta'];
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
if ($board_config['disable_checker'])
{
message_die(GENERAL_MESSAGE, $lang['disable']);
}
/* Nagłówek */
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
{
echo 'Test echo!<br/><br/>'; //jakiś tam sobie echo show :)
if ($userdata['user_level'] == ADMIN)
{
$handle = fopen('checker_sumy.'.$phpEx , 'r'); //otwiera plik checker_sumy.php
foreach ($md5_tablica as $nazwa_pliku => $suma_md5) { //zwraca z tablicy ($md5_tablica): nazwę pliku ($nazwa_pliku) i sumę md5 ($suma_md5)
$i++; //standardowa inkrementacja każdej linii :)
//echo "$i.<br/>";
//echo "$nazwa_pliku <br/>";
//echo "$suma_md5 <br/><br/>";
//definicja {FUNKCJA} funkcji w szablonie tpl
$template->assign_block_vars('checker', array(
'LICZBA' => $i,
'NAZWA' => $nazwa_pliku,
'MD5' => $suma_md5,
'STATUS' => $md5_tablica
));
}
foreach ($md5_tablica as $nazwa_pliku => $suma_md5 )
{
echo $nazwa_pliku . ' - ' . ($suma_md5 == md5_file($nazwa_pliku) ? 'OK' : 'NIE OK' ) . "\n";
}
$template->set_filenames(array('body' => 'checker_body.tpl'));
$template->pparse('body');
}
else
{
message_die(GENERAL_MESSAGE, $lang['error']);
}
}
/* Stopka */
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
?> |
checker_sumy.php
Kod: | <?php
$md5_tablica['index.php'] = F6D676F15750BFC27430EFA65F9DE551;
$md5_tablica['config.php'] = DB8967C7127A331B8225E2602C6B77DE;
$md5_tablica['viewtopic.php'] = D621C41C12B8ED9540D0BE6D1B6CDE0F;
?> |
lang_checker.php
Kod: | <?php
// Główne
$lang['beta'] = 'Checker (beta)!';
$lang['error'] = 'Checker dostępny jest tylko dla głównego admina!';
$lang['disable'] = 'Cheker jest wyłączony! Włącz go w panelu admina.';
?> |
checker_body.tpl
Kod: | <table width="100%" cellspacing="1" cellpadding="2" border="0" align="center">
<tr>
<td align="left">
<span class="sciezka">Ścieżka: <a href="{U_INDEX}">{L_INDEX}</a> » <a href="{U_CHECKER}">{L_CHECKER}</a></span>
</td>
</tr>
</table>
<table width="100%" cellpadding="3" cellspacing="1" border="0" class="linia_forum">
<tr>
<td class="belka_gora" colspan="4" align="center"><span class="index_tekst">Checker plików</span></td>
</tr>
<tr>
<td class="tlo1" align="center" width="10%"><span class="naglowek_kolor_b">#</span></td>
<td class="tlo1" align="center" width="30%"><span class="naglowek_kolor_b">Nazwa pliku</span></td>
<td class="tlo1" align="center" width="40%"><span class="naglowek_kolor_b">Suma (md5)</span></td>
<td class="tlo1" align="center" width="20%"><span class="naglowek_kolor_b">Status</span></td>
</tr>
<!-- BEGIN checker -->
<tr>
<td class="tlo1" align="center" width="10%">{checker.LICZBA}</td>
<td class="tlo1" align="center" width="30%">{checker.NAZWA}</td>
<td class="tlo1" align="center" width="40%">{checker.MD5}</td>
<td class="tlo1" align="center" width="20%">{checker.STATUS}</td>
</tr>
<!-- END checker -->
<tr>
<td class="belka_dol" colspan="4"></td>
</tr>
</table> |
|
|
|
|
|
Tommekk80
Pomógł: 1411 razy Posty: 4780
|
Wysłany: 09-03-2015, 17:34
|
|
|
Kod: | <?php
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
include($phpbb_root_path . 'checker_sumy.'.$phpEx);
include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_checker.' . $phpEx);
$page_title = $lang['beta'];
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
if ($board_config['disable_checker'])
{
message_die(GENERAL_MESSAGE, $lang['disable']);
}
/* Nagłówek */
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
{
echo 'Test echo!<br/><br/>'; //jakiś tam sobie echo show :)
if ($userdata['user_level'] == ADMIN)
{
$handle = fopen('checker_sumy.'.$phpEx , 'r'); //otwiera plik checker_sumy.php
foreach ($md5_tablica as $nazwa_pliku => $suma_md5) { //zwraca z tablicy ($md5_tablica): nazwę pliku ($nazwa_pliku) i sumę md5 ($suma_md5)
$i++; //standardowa inkrementacja każdej linii :)
//echo "$i.<br/>";
//echo "$nazwa_pliku <br/>";
//echo "$suma_md5 <br/><br/>";
//definicja {FUNKCJA} funkcji w szablonie tpl
$status = ($suma_md5 == md5_file($nazwa_pliku) ? 'OK' : 'NIE OK' );
$template->assign_block_vars('checker', array(
'LICZBA' => $i,
'NAZWA' => $nazwa_pliku,
'MD5' => $suma_md5,
'STATUS' => $status
));
}
$template->set_filenames(array('body' => 'checker_body.tpl'));
$template->pparse('body');
}
else
{
message_die(GENERAL_MESSAGE, $lang['error']);
}
}
/* Stopka */
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
?> |
W checker_sumy.php sumy md5 w cudzysłów jeszcze wziąłem - i działa niby...
checker.png
|
|
Plik ściągnięto 13501 raz(y) 4,64 KB |
|
|
|
|
|
Crypt3r
Pomógł: 1 raz Posty: 22
|
Wysłany: 09-03-2015, 20:41
|
|
|
Dobry z Ciebie człowiek Tomku. Zauważ, że przy sumie kontrolnej z małymi literami jest OK, a gdy wstawi się zupełnie tę samą wyświetla NIE OK. Taka mała ciekawostka. Mam program pod Windowsem, który pobiera sumy md5, sha itd. po czym zapisuej w pliku txt, jednak z wielkimi literkami. Ale na to, jest prosta rada.
Kod: | $status = strtolower($suma_md5) == md5_file($nazwa_pliku) ? 'OK' : 'NIE OK'; |
I gotowe. Bez względu na ich format, po jakiejkolwiek zmianie w plikach na serwerze wyświetla się odpowiedni status. Pobawię się jeszcze z językami. Gdy już wszystko będzie gotowe i będzie pracowało na produkcji, udostępnię tutaj na forum.
P.S. "Ciapki" dla sumy kontrolnej w pliku z sumami tak naprawdę nie mają żadnego znaczenia. Działa tak i tak. |
_________________ Po pierwsze nie zamierzam dyskutować z debilami, trollami i hejterami. |
|
|
|
|
Tommekk80
Pomógł: 1411 razy Posty: 4780
|
Wysłany: 09-03-2015, 21:46
|
|
|
Crypt3r napisał/a: | Działa tak i tak |
Nie wiem, mi z tą trójką w pierwszym znaku wywalało błąd. Przy literze było git. |
|
|
|
|
Gadatliwa Kasia
|
|
|
|
Crypt3r
Pomógł: 1 raz Posty: 22
|
Wysłany: 09-03-2015, 22:24
|
|
|
Tommekk80 napisał/a: | Crypt3r napisał/a: | Działa tak i tak |
Nie wiem, mi z tą trójką w pierwszym znaku wywalało błąd. Przy literze było git. |
Wszystko działa, po dodaniu zmiany wielkich literek na małe. Przy porównywaniu znaków ma to znaczenie. Pomimo tego i tak wyświetla te z pliku checker_sumy.php
Spróbuję jeszcze popracować nad wyświetleniem dwóch sum, ale to i tak nie ma znaczenia. Checker jest na tyle banalny w samym zamyśle, że przyda się większości do sprawdzania czy czasem: Nie znalazł się ktoś życzliwy pakując PHPshell'a na serwer.
Dzięki Tomku za pomoc. Będę pisał w przypadku poważniejszych problemów. Jak na razie sobie radzę. |
|
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
Kopiowanie wszelkich treści zawartych na forum, modyfikacji oraz instrukcji bez zgody administracji i autorów tematów/postów zabronione!
Powered by phpBB modified by Przemo © 2003 phpBB
| Strona wygenerowana w 0,13 sekundy. Zapytań do SQL: 15 | |
|
|