ďťż

intruz

Napraw Licznik PA mini.otwarty.pl

Skrypt ten naprawia błędne stany liczników w panelu administratora, w popularnym skrypcie katalogów mini.otwarty.pl. Błędy te powstają w wyniku przerwania połączenia z serwerem, kliknięcia kilku linków przed całkowitym załadowaniem się strony itp.

I. Cechy

1. Wersja 1.1
- usuwa tylko i wyłącznie błędne wartości wyświetlane w zbiorczym zestawieniu ilości kategorii, podkategorii, wpisów i relacji w panelu administratora
- wyświetla na czerwono ilość o jaką różnią się wartości przedstawiane w PA, a rzeczywiste.
2. Skrypt ten współpracuje z bazami danych tworzonych przez skrypt katalogu stron mini.otwarty.pl 1.0 oraz 1.1 (więcej informacji o skrypcie znajdziesz TUTAJ.
3. Działa całkowicie automatycznie, nie trzeba edytować zawartości pliku skryptu, gdyż korzysta z pliku "./otwarty_inc/config.php" na serwerze gdzie katalog ten jest zainstalowany.
4. Skrypt ten napisałem po około 4 dniach praktyki z PHP, wcześniej nie miałem żadnego doświadczenia w programowaniu w tym języku, jednak za pomocą metody prób i błędów pozbyłem się wszystkich problemów i działa (chyba) bezawaryjnie.
Jestem całkowitym amatorem dlatego kod jest toporny, nie zaawansowany, ale przez to mało skomplikowany, a co najważniejsze działa tak jak zamierzyłem.
Jednak mimo to proszę o ostrożność w posługiwaniu się nim, najlepiej jakby jacyś zaawansowani programiści się jeszcze wypowiedzieli na jego temat. Sam przetestowałem go kilka razy i działa moim zdaniem bez zarzutu.

II. Instalacja

1. Pobierz archiwum ze skryptem i wypakuj plik "napraw_licznik.php".
2. Umieść go na serwerze w folderze w jakim zainstalowany jest Twój skrypt katalogu stron.
3. Wejdź do pliku "napraw_licznik.php" wpisując jego nazwę po adresie katalogu. Np. "http://www.katalog.forumbiznesu.eu/napraw_licznik.php", lub "http://forumbiznesu.eu/katalog/napraw_licznik.php"
4. Pojawi się okno kontrolne z wyświetloną liczbą błędów w każdej z ilości.
5. Jeżeli zdecydujesz się na naprawę to kliknij link "tak napraw"
6. Po naprawieniu ponownie pojawi się okno kontrolne z wynikami ponownego wyszukiwania błędów, tym razem jednak żadnych nie będzie.
7. Plik "napraw_licznik.php" można usunąć potem z serwera, jednak jeżeli chciałbyś go ponownie użyć, nie musi być usuwany.

Bardzo proszę o pomoc w wykryciu i naprawieniu błędów. Będę także bardzo wdzięczny za propozycje i pomoc w modyfikowaniu skryptu.

Pozdrawiam

Twardes


Podaję także kod źródłowy. Może ktoś będzie zainteresowany


<?php

//
// @nazwa            Napraw Licznik PA mini.otwarty.pl
// @wersja            1.1
// @autor           Twardes
// @email              twardes0040@wp.pl
// @strona domowa     www.php.forumbiznesu.eu
// @copyright         Twardes 2007
//

?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="pl">
</head>
<?

include "otwarty_inc/config.php";

$sql = mysql_connect($dbhost, $dbuser, $dbpss);
$db = mysql_select_db($dbname);

$ilosci = "SELECT * FROM `" . $prefix . "ilosci`";
$ilosci_q = mysql_query($ilosci);

while ($l = mysql_fetch_assoc($ilosci_q))
{
    $ile[$l['nazwa']] = $l[ilosc];
}

$kategorie = "SELECT * FROM `" . $prefix . "kategorie`";
$kategorie_q = mysql_query($kategorie);
$kategorie_ile = mysql_num_rows($kategorie_q);

$kategorie_n = "SELECT * FROM `" . $prefix . "kategorie` WHERE `akt` =0";
$kategorie_n_q = mysql_query($kategorie_n);
$kategorie_n_ile = mysql_num_rows($kategorie_n_q);

$kategorie_a_ile = $kategorie_ile - $kategorie_n_ile;

$podkategorie = "SELECT * FROM `" . $prefix . "podkategorie`";
$podkategorie_q = mysql_query($podkategorie);
$podkategorie_ile = mysql_num_rows($podkategorie_q);

$podkategorie_n = "SELECT * FROM `" . $prefix . "podkategorie` WHERE `akt` =0";
$podkategorie_n_q = mysql_query($podkategorie_n);
$podkategorie_n_ile = mysql_num_rows($podkategorie_n_q);

$podkategorie_a_ile = $podkategorie_ile - $podkategorie_n_ile;

$wpisy = "SELECT * FROM `" . $prefix . "wpisy`";
$wpisy_q = mysql_query($wpisy);
$wpisy_ile = mysql_num_rows($wpisy_q);

$wpisy_n = "SELECT * FROM `" . $prefix . "wpisy` WHERE `akt` =0";
$wpisy_n_q = mysql_query($wpisy_n);
$wpisy_n_ile = mysql_num_rows($wpisy_n_q);

$wpisy_a_ile = $wpisy_ile - $wpisy_n_ile;

$wpisy_m = "SELECT * FROM `" . $prefix . "wpisy` WHERE `moje` =1";
$wpisy_m_q = mysql_query($wpisy_m);
$wpisy_m_ile = mysql_num_rows($wpisy_m_q);

$relacje = "SELECT * FROM `" . $prefix . "relacje`";
$relacje_q = mysql_query($relacje);
$relacje_ile = mysql_num_rows($relacje_q);

function gdyniezero($roznica)
{
    if ($roznica != 0)
    {
        return ('<font color="#FF0000"><b>' . $roznica . '</b></font>');
    }
    else
        return ($roznica);
}

$kategorie_r = $ile[kat_a] + $ile[kat_n] - $kategorie_ile;
$kategorie_a_r = $ile[kat_a] - $kategorie_a_ile;
$kategorie_n_r = $ile[kat_n] - $kategorie_n_ile;
$podkategorie_r = $ile[pod_a] + $ile[pod_n] - $podkategorie_ile;
$podkategorie_a_r = $ile[pod_a] - $podkategorie_a_ile;
$podkategorie_n_r = $ile[pod_n] - $podkategorie_n_ile;
$wpisy_r = $ile[wpi_a] + $ile[wpi_n] - $wpisy_ile;
$wpisy_a_r = $ile[wpi_a] - $wpisy_a_ile;
$wpisy_n_r = $ile[wpi_n] - $wpisy_n_ile;
$wpisy_m_r = $ile[moje] - $wpisy_m_ile;
$relacje_r = $ile[rel] - $relacje_ile;

?>

<title>Napraw Licznik w PA mini.otwarty.pl</title>

<p align="center"><b><font size="5">Napraw Licznik w PA mini.otwarty.pl</font></b></p>
<p align="center">&nbsp;</p>
<p align="center">Skrypt służy do aktualizacji kilku pozycji panelu
administratora.<br>Uaktualnia on wpisy w tabeli *ilości w bazie danych
skryptu katalogu stron mini.otwarty.pl</p>
<div align="center">

<table border="1" cellspacing="0" cellpadding="4">
        <tr>
            <td>&nbsp;</td>
            <td>
            <p align="center">Ilość w PA</td>
            <td>
            <p align="center">Rzeczywista ilość</td>
            <td>
            <p align="center">Różnica</td>
        </tr>
        <tr>
            <td>
            <p align="center">Kategorie (wszystkie) </td>
            <td align="center"><?= $ile[kat_a] + $ile[kat_n] ?></td>
            <td align="center"><?= $kategorie_ile ?></td>
            <td align="center"><?= gdyniezero($kategorie_r) ?></td>
        </tr>
        <tr>
            <td>
            <p align="center">Kategorie aktywne</td>
            <td align="center"><?= $ile[kat_a] ?></td>
            <td align="center"><?= $kategorie_a_ile ?></td>
            <td align="center"><?= gdyniezero($kategorie_a_r) ?></td>
        </tr>
        <tr>
            <td>
            <p align="center">Kategorie nieaktywne</td>
            <td align="center"><?= $ile[kat_n] ?></td>
            <td align="center"><?= $kategorie_n_ile ?></td>
            <td align="center"><?= gdyniezero($kategorie_n_r) ?></td>
        </tr>
        <tr>
            <td>
            <p align="center">Podkategorie (wszystkie)</td>
            <td align="center"><?= $ile[pod_a] + $ile[pod_n] ?></td>
            <td align="center"><?= $podkategorie_ile ?></td>
            <td align="center"><?= gdyniezero($podkategorie_r) ?></td>
        </tr>
        <tr>
            <td>
            <p align="center">Podkategorie aktywne</td>
            <td align="center"><?= $ile[pod_a] ?></td>
            <td align="center"><?= $podkategorie_a_ile ?></td>
            <td align="center"><?= gdyniezero($podkategorie_a_r) ?></td>
        </tr>
        <tr>
            <td>
            <p align="center">Podkategorie nieaktywne</td>
            <td align="center"><?= $ile[pod_n] ?></td>
            <td align="center"><?= $podkategorie_n_ile ?></td>
            <td align="center"><?= gdyniezero($podkategorie_n_r) ?></td>
        </tr>
        <tr>
            <td>
            <p align="center">Wpisy (wszystkie) </td>
            <td align="center"><?= $ile[wpi_a] + $ile[wpi_n] ?></td>
            <td align="center"><?= $wpisy_ile ?></td>
            <td align="center"><?= gdyniezero($wpisy_r) ?></td>
        </tr>
        <tr>
            <td>
            <p align="center">Wpisy aktywne</td>
            <td align="center"><?= $ile[wpi_a] ?></td>
            <td align="center"><?= $wpisy_a_ile ?></td>
            <td align="center"><?= gdyniezero($wpisy_a_r) ?></td>
        </tr>
        <tr>
            <td>
            <p align="center">Wpisy nieaktywne</td>
            <td align="center"><?= $ile[wpi_n] ?></td>
            <td align="center"><?= $wpisy_n_ile ?></td>
            <td align="center"><?= gdyniezero($wpisy_n_r) ?></td>
        </tr>
        <tr>
            <td>
            <p align="center">Wpisy moje</td>
            <td align="center"><?= $ile[moje] ?></td>
            <td align="center"><?= $wpisy_m_ile ?></td>
            <td align="center"><?= gdyniezero($wpisy_m_r) ?></td>
        </tr>
        <tr>
            <td>
            <p align="center">Relacje wpis / podkategoria</td>
            <td align="center"><?= $ile[rel] ?></td>
            <td align="center"><?= $relacje_ile ?></td>
            <td align="center"><?= gdyniezero($relacje_r) ?></td>
        </tr>
    </table>
    </div>
<p align="center"><font size="1" face="Verdana">autor:
<a href="http://www.php.forumbiznesu.eu">Twardes</a>
wersja v1.0test</font></p>&nbsp;<p align="center">
Czy chcesz naprawić licznik w Panelu Administratora?<br>

<a href="napraw_licznik.php?a=tak">tak napraw</a> | <a href="./otwarty_admin/index.php">nie
naprawiaj</a> </p>

<?

switch ($_GET[a])
{

    case "tak":

        $kat_a_u = "UPDATE `" . $prefix . "ilosci` SET `ilosc` = '$kategorie_a_ile' WHERE `nazwa` = 'kat_a'";
        mysql_query($kat_a_u);

        $kat_n_u = "UPDATE `" . $prefix . "ilosci` SET `ilosc` = '$kategorie_n_ile' WHERE `nazwa` = 'kat_n'";
        mysql_query($kat_n_u);

        $pod_a_u = "UPDATE `" . $prefix . "ilosci` SET `ilosc` = '$podkategorie_a_ile' WHERE `nazwa` = 'pod_a'";
        mysql_query($pod_a_u);

        $pod_n_u = "UPDATE `" . $prefix . "ilosci` SET `ilosc` = '$podkategorie_n_ile' WHERE `nazwa` = 'pod_n'";
        mysql_query($pod_n_u);

        $wpi_a_u = "UPDATE `" . $prefix . "ilosci` SET `ilosc` = '$wpisy_a_ile' WHERE `nazwa` = 'wpi_a'";
        mysql_query($wpi_a_u);

        $wpi_n_u = "UPDATE `" . $prefix . "ilosci` SET `ilosc` = '$wpisy_n_ile' WHERE `nazwa` = 'wpi_n'";
        mysql_query($wpi_n_u);

        $wpi_m_u = "UPDATE `" . $prefix . "ilosci` SET `ilosc` = '$wpisy_m_ile' WHERE `nazwa` = 'moje'";
        mysql_query($wpi_m_u);

        $rel_u = "UPDATE `" . $prefix . "ilosci` SET `ilosc` = '$relacje_ile' WHERE `nazwa` = 'rel'";
        mysql_query($rel_u);

        echo "tak";
        header("location: napraw_licznik.php");
        break;

}

?>


Z góry dziękuję z uwagi!!!
Fajne narzędzie. W rzadziej odwiedzanych katalogach używam go do sprawdzania, czy ktoś sie dodał, bo dużo szybciej się ładuje niż PA, a i czasem jak zauważę pewne nieścisłości to i kliknę "tak napraw". Musiałem sobie tylko dorobić link do PA (o linku do str. startowej pamiętałeś, a o PA zapomniałeś :D ).
dzięki za uwagę :) w niedługim czasie postaram się to zmienić.

dodatkowo powstały 3 nowe narzędzia:
- aktualizacja liczników (na razie tylko wpisów) poszczególnych kategorii
- aktualizacja liczników (na razie tylko wpisów) poszczególnych podkategorii
- usuwanie relacji nieprzypisanych do żadnego wpisu (powstają w efekcie ręcznego usuwania wpisów)

Jednak są to tylko narzędzia naprawcze, nie diagnostyczne i na razie nieprzygotowane do upublicznienia (w pełni ich nie przetestowałem), a niestety czas ich działania jest bardzo długi - bardzo obciąża bazę danych, serwer mysql i staram się usprawnić algorytm, albo jakoś podzielić na etapy wykonywany proces.

pracuje też nad narzędziem które będzie usuwało/aktywowało/dezaktywowało wpisy zawierające wybraną frazę w tytule lub opisie lub słowach kluczowych, albo url (ale napotykam wiele problemów więc nie wiem kiedy to skończę :\


spis zmian w wersji napraw_licznik_v.1.1

I Poprawki:
1. Zmieniony link nie naprawiaj (teraz odsyła do Panelu Administracyjnego)
2. Poprawiony błąd w obliczaniu i wyświetlaniu różnicy wpisów aktywnych

Funkcjonalnie skrypt się nie zmienił, po poprzednia wersja, 1.0test, nie powodowała żadnych problemów ani nieprawidłowości.