Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Data ostatniej aktualizacji strony internetowej.

11111olo 05 Sty 2011 17:28 4814 14
  • #1 05 Sty 2011 17:28
    11111olo
    Poziom 43  

    Witam.
    Chciałbym umieścić na każdej stronie datę jest ostatniej aktualizacji.
    Na tej stronie jest to wyjaśnione i nawet działa, tylko że wyświetla się data pliku uruchamiającego stronę czyli index.php.
    Natomiast na tej powiedzmy że to działa poprawnie.
    Mój problem polega na tym, że nie wiem jak zdefiniować położenie pliku za pomocą zmiennej, która jest definiowana za pomocą

    Code:
    ?php
    
    define('DATA_DIR', 'folder_gdzie_beda_wszystkie_pliki_strony');


    Proszę o pomoc.

    0 14
  • #2 05 Sty 2011 19:06
    sakuwbarakushow
    Warunkowo odblokowany

    WTF ?

    Code:
    http://www.c64.com.pl/index.php/index.php

    Odnosisz się do INDEX.PHP z pliku INDEX.PHP ?

    0
  • #3 05 Sty 2011 19:55
    11111olo
    Poziom 43  

    Nie.
    Chodzi mi o odczytanie daty pliku. Wszystkie pliki znajdują się w tym samym folderze.Zasada generowania strony jest opisana tutaj, w 3 poście.

    0
  • #5 07 Sty 2011 11:29
    11111olo
    Poziom 43  

    Tylko aktualnego, czyli danego dla konkretnej strony.
    Np. dla instrukcji Black Box 3 jest plik

    Code:
    DATA_DIR/bb3.php
    natomiast dla FINAL II jest
    Code:
    DATA_DIR/finalii.php
    .Chyba już wszystko dokładnie objaśniłem.

    0
  • #6 07 Sty 2011 11:58
    arnoldziq
    Moderator Programowanie

    Może użyj czegoś takiego :

    Code:
    <?php
    
    $filename = basename($_SERVER['REQUEST_URI'], ".php");
    $filename = $filename.".php";
    echo "Data ostatniej modyfikacji pliku $filename, to :  " . date ("F d Y H:i:s.", filemtime($filename));
    ?>
    Możesz to wkleić do dowolnego skryptu, pod warunkiem, że będzie miał rozszerzenie php. Możesz także pokombinować z $_SERVER["SCRIPT_NAME"].
    Code:
    <?php
    
    $filename = "../".$_SERVER["SCRIPT_NAME"];
    echo "Data ostatniej modyfikacji pliku $filename, to :  " . date ("F d Y H:i:s.", filemtime($filename));
    ?>

    Jeżeli robisz wstawki do plików HTML, to możesz użyć $PHP_SELF, aby pobrać nazwę aktualnie "obrabianego" pliku.

    0
  • #7 07 Sty 2011 12:06
    11111olo
    Poziom 43  

    Po wklejeniu powyższego kodu otrzymałem informację

    Cytat:
    Data ostatniej modyfikacji pliku finalii.html.php, to : January 01 1970 01:00:00.


    Na początku skryptu jest napisane coś takiego:

    Code:
    <?php header('Content-type: text/html; charset=iso-8859-2'); ?>
    
    <!DOCTYPE html
        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">


    <?php
    define('DATA_DIR', 'nazwafolderu');
    if (!isset($_SERVER['PATH_INFO']) || !eregi('^(/[0-9A-Za-z_-]+)+\.html$', $_SERVER['PATH_INFO'])) $_SERVER['PATH_INFO'] = '/index';
    else
    {
        $_SERVER['PATH_INFO'] = eregi_replace('\.html$', '', $_SERVER['PATH_INFO']);
        if (!file_exists(DATA_DIR . $_SERVER['PATH_INFO'] . '.php')) $_SERVER['PATH_INFO'] = '/index';
    }
    $DIR = str_repeat('../', substr_count($_SERVER['PATH_INFO'], '/') - 1);
    if ($_SERVER['PHP_SELF'] != $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO'] . '.html') echo '<base href="' . htmlspecialchars('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO']) . '.html" />
    ';
    include DATA_DIR . (file_exists(DATA_DIR . $_SERVER['PATH_INFO'] . '.h.php') ? $_SERVER['PATH_INFO'] : '/index') . '.h.php';
    ?>
    <head> ...

    ...

    <?php
    include DATA_DIR . $_SERVER['PATH_INFO'] . '.php';
    ?>


    </div>
    <center>
    c64.com.pl &#169 2009-2011
    </center>
    </body>
    </html>


    Czy nie da się jakoś użyć zmiennej DATA_DIR do odczytania daty pliku?[/code]

    0
  • #8 07 Sty 2011 12:11
    arnoldziq
    Moderator Programowanie

    11111olo napisał:
    Po wklejeniu powyższego kodu otrzymałem informację
    Cytat:
    Data ostatniej modyfikacji pliku finalii.html.php, to : January 01 1970 01:00:00.

    Przecież wyraźnie napisałem :
    arnoldziq napisał:
    Możesz to wkleić do dowolnego skryptu, pod warunkiem, że będzie miał rozszerzenie php.
    A twój plik ma nazwę : finalii.html.
    Wklej ten drugi zamieszczony skrypt, powinno być OK.
    Lub z pierwszego skryptu usuń linię :
    Code:
    $filename = $filename.".php"; 

    0
  • #9 07 Sty 2011 12:19
    11111olo
    Poziom 43  

    Po usunięciu tej linii efekt jest identyczny.
    Pliki są z rozszerzeniem php.

    Data ostatniej aktualizacji strony internetowej.

    Wszystkie plik php odpowiadające za wyświetlanie prawie wszystkiego na poszczególnej stronie, oprócz banera i menu, są w jednym folderze.

    0
  • #10 07 Sty 2011 12:28
    arnoldziq
    Moderator Programowanie

    Wiesz, to bardzo ciekawe.
    Testowo umieściłem plik na serwerze elektrody i wszystko "śmiga".
    Nazwa pliku : finalii.h.php - jeden z "twoich".
    Zawartość pliku :

    Code:
    <?php
    
    $filename = "../".$_SERVER["SCRIPT_NAME"];
    echo "Data ostatniej modyfikacji pliku $filename, to :  " . date ("F d Y H:i:s.", filemtime($filename));
    ?>

    Otrzymany rezultat :
    Data ostatniej aktualizacji strony internetowej.
    Skrypt można przetestować tutaj :http://arnold.elektroda.eu/data_pliku/finalii.h.php

    0
  • #11 07 Sty 2011 12:46
    11111olo
    Poziom 43  

    http://www.c64.com.pl/index.php/finalii.html

    Efekt jest widoczny i nie jest tym o co mi chodzi.
    Po wklejeniu tego

    Code:
    <?php echo date('Y-m-d H:i:s', filemtime($_SERVER['SCRIPT_FILENAME'])); ?>
    otrzymamy to co widać w powyższym linku.
    Tylko że to nie jest ten plik o który chodzi.
    Ten skrypt wyświetla prawidłową datę pliku index.php.
    Natomiast wszystkie interesujące mnie pliki są w jednym folderze, czyli znajdują się o poziom głębiej.
    Napisanie ../ nie pomoże gdyż na każdej stronie widziany jest zawsze plik index.php czyli jest to jej wierzch.

    0
  • Pomocny post
    #12 07 Sty 2011 13:03
    arnoldziq
    Moderator Programowanie

    11111olo napisał:

    Czy nie widzisz w tym adresie niczego dziwnego ?
    1. Nazwa pierwszego wywoływanego pliku to index.php. No chyba, że posiadasz na swoim serwerze katalog o nazwie index.php ?!?
    2. Nazwa twojego pliku, który wyświetlasz, to jednak finalii.html z akcentem na HTML.
    Natomiast nie bardzo mogę odnaleźć na twojej stronie plik : finalii.php.
    Czyżby każdy plik na twojej stronie jest jakoś "przerabiany" przez index.php ?
    11111olo napisał:
    Efekt jest widoczny i nie jest tym o co mi chodzi.
    Po wklejeniu tego
    Code:
    <?php echo date('Y-m-d H:i:s', filemtime($_SERVER['SCRIPT_FILENAME'])); ?>
    otrzymamy to co widać w powyższym linku.
    Tylko że to nie jest ten plik o który chodzi.

    Efekt który można zaobserwować, jest dokładnie taki jakiego można było oczekiwać:
    www.c64.com.pl napisał:
    Data ostatniej modyfikacji pliku ..//index.php, to : January 01 1970 01:00:00.
    Dzieje się tak z powodów twojego "dziwnego" wywołania poszczególnych części twojej strony.

    0
  • #13 07 Sty 2011 13:23
    11111olo
    Poziom 43  

    arnoldziq napisał:
    11111olo napisał:

    Czy nie widzisz w tym adresie niczego dziwnego ?

    Adres może wygląda dosyć specyficznie, jednak ja nie wymyślilem tego skryptu.
    arnoldziq napisał:
    1. Nazwa pierwszego wywoływanego pliku to index.php. No chyba, że posiadasz na swoim serwerze katalog o nazwie index.php ?!?

    Na serwerze nie ma folderu o takiej nazwie.
    arnoldziq napisał:
    2. Nazwa twojego pliku, który wyświetlasz, to jednak finalii.html z akcentem na HTML.

    To co pokazuje przeglądarka to jedna, a co jest na serwerze to drugie.
    arnoldziq napisał:
    Natomiast nie bardzo mogę odnaleźć na twojej stronie plik : finalii.php.

    Jak już pisałem wcześniej wszystkie pliki od strony czyli te z rozszerzeniem php znajdują się w folderze określonym zmienną DATA_DIR.
    Data ostatniej aktualizacji strony internetowej.
    Tekst jest zaznaczony, gdyż jest w kolorze białym i w dodatku style strony są określone w index.php.
    arnoldziq napisał:
    Czyżby każdy plik na twojej stronie jest jakoś "przerabiany" przez index.php ?

    Każdy plik php zawierający informację wyświetlaną na pasku tytułowym jest doklejany za pomocą
    Code:
    <?php
    
    include DATA_DIR . $_SERVER['PATH_INFO'] . '.php';
    ?>

    Tak więc nic nie preparuje.

    0
  • Pomocny post
    #14 07 Sty 2011 13:49
    SaraniS
    Poziom 26  

    A spróbuj (w index.php, chociaż nie powinno to mieć znaczenia, ale w index.php wpisujesz tylko raz a tak byś musiał w każdej podstronie):

    Code:
    <?php 
    
    echo "Data ostatniej modyfikacji pliku $filename, to :  " . date ("F d Y H:i:s.", filemtime(DATA_DIR.$_SERVER['PATH_INFO'].'.php'));
    ?>

    Ogólnie - próbuj się odwoływać do tego samego co inkludujesz. W sumie najlepiej by było jakbyś zrobił zmienną, której przypisałbyś wartość DATA_DIR.$_SERVER['PATH_INFO'].'.php' i w obu miejscach kodu odwoływał się do tego.

    Efekt opisany wyżej - wyświetlenie daty modyfikacji dla index.php, nawet pomimo wywołania tej instrukcji z inkludowanego pliku - wynika ze sposobu w jaki include jest dokonywane. Mianowicie dotyczy się zawsze pliku, który inkluduje, a nie tego, który jest inkludowany (tu - index.php właśnie zamiast plików podstron).

    Ogólnie, skoro i tak bawisz się w coś w stylu "przyjaznych adresów", zainteresuj się mod_replace i edycją htaccess ;)
    Pozdrawiam

    0
  • #15 07 Sty 2011 14:00
    11111olo
    Poziom 43  

    Z Twojej wypowiedzi nie za wiele zrozumiałem, jednak to działa prawidłowo.
    Czy da się w jakiś sposób wyświetlić polskie nazwy miesięcy lub datę w formie dd mm yy hh:mm:ss o ile nie jest to skomplikowane?

    Już znalazłem.

    Code:
    <?php
    
    echo "Data ostatniej aktualizacji:" . date ("Y-m-d H:i:s.", filemtime(DATA_DIR.$_SERVER['PATH_INFO'].'.php'));
    ?>


    Dziękuje wszystkim za pomoc.

    0