Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]sciezka do pliku jako argument if() - dlaczego nie działa?
Forum PHP.pl > Forum > Przedszkole
ddkd
Witam
Jestem tu pierwszy raz, i nie wiem czy do dobrego działu (przedszkole) ale zaawansowany jestem raczej średnio. Do rzeczy:
trafiłem na nieoczekwany problem, rzecz dotyczy obróbki custom-loga na apache. Chodzi o to że w obrabianym logu chcę zastąpić scieżkę do pliku tekstem np: C:/www/index.php --> Strona startowa - chodzi o skrypt kto sie logował i co robił.

$n = count($Dane);
for($i=0;$i<$n;$i++) {
$wiersz = $Dane[$i];
list($user,$data,$godz,$plik) = explode("|",$wiersz);
if($plik=="C:/WWW/index.html") echo"<tr><td>$user</td><td>$data</td><td>$godz</td><td>Strona startowa</td></tr>";
}

$Dane to tablica zawierajaca log. Problem w tym ze ten warunek w IF nie działa... z każdym innym typem danych np. $user jest OK a z ze sciezkami do pliku nie. Jak to obejść? probowałem na rózne sposoby (apostrofy itp) i nic nie wykombinowałem.
Proszę o wsparcie bo nie pośpię dzisiaj...
Pozdrawiam
ddkd

Daiquiri
A co zobaczysz gdy wyświetlisz zmienną $plik nad warunkiem? Czy aby na pewno warunek musi być spełniony? smile.gif

PS. Korzystaj z BBCode
ddkd
dostaję wylistowane w petli for ścieżki do plików np:
C:/Program Files/Apache Software Foundation/Apache2.2/error/auth.html
C:/WWW/index.html
C:/WWW/index2.php
C:/WWW/menu_lewa.php
C:/WWW/strona
C:/WWW/grafik_op.php
C:/WWW/grafik_GE.php
C:/WWW/analiza.php
C:/WWW/index1.css
C:/WWW/operacyjne.php

po prostu chcę te sciezki z loga przerobić na ich opisy np C:/WWW/index.html na "strona startowa"
Daiquiri
Wobec tego, warunek powinien zadziałać. Jak wygląda u Ciebie $Dane[i], tak: $Dane[0] = 'user|data|godz|C:/WWW/index.html'; ?

Popraw ten BBCode! smile.gif
ddkd
Cytat(Daiquiri @ 16.01.2011, 00:48:02 ) *
Wobec tego, warunek powinien zadziałać. Jak wygląda u Ciebie $Dane, tak: $Dane[0] = 'user|data|godz|C:/WWW/index.html'; ?



dokładnie tak wygląda
ale ten warunek jest nie wiem dlaczego martwy. Co ciekawe warunek działa jak argumentem if jest zmienna np user albo godz. A jak argumentem jest scieżka - nie działa. Może jakies ustawienia w php.ini? sam już nie wiem, przeciez to prosta formuła... wydawało by się.

Cytat
Popraw ten BBCode! smile.gif


sorry - to mój debiut, poprawię się snitch.gif

będę wdzięczny za wszelką pomoc, lecę z nóg (siedzę nad tym od południa) ale jutro wrócę do tematu, jesli ma ktoś pomysł co z tym zrobić - będę wdzięczny
pozdrawiam
CuteOne
  1. $plik = strtolower($plik);
  2.  
  3. if($plik == 'c:/www/index.html')
Daiquiri
Z ciekawości przetestowałam u siebie:
  1. $Dane[0] = 'user|data1|godz1|C:/WWW/index.html';
  2.  
  3. $n = count($Dane);
  4. for ($i = 0; $i < $n; $i++) {
  5. $wiersz = $Dane[$i];
  6. list($user, $data, $godz, $plik) = explode("|", $wiersz);
  7.  
  8. if ($plik == "C:/WWW/index.html")
  9. echo "<tr><td>$user</td><td>$data</td><td>$godz</td><td>Strona startowa</td></tr>";
  10. }

... i działa smile.gif. Może skopiuj to cudo do siebie? Jest późno, a ja mam pobudkę z rańca, więc to tyle ode mnie.
ddkd
Witam ponownie - dzięki za sugestie, dało mi to do myslenia że faktycznie jak się wpisze "z palca" zawartość rekordu $wiersz to skrypt działa. pomyslałem że może w pliku loga sa jakieś dodatkowe niewidoczne znaki na końcu wiersza i okazało się ze talk! sprawę rozwiazała funkcja trim()
wystarczyło zrobić:
  1. list($user,$data,$godz,$path) = explode("|",$wiersz);
  2. if(trim($path)=="C:/WWW/index.html") echo"<tr><td>$user</td><td>$data</td><td>$godz</td><td>Strona startowa</td></tr>";


i jest OK smile.gif
dzieki za sugestie
pozdrawiam

ddkd
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.