Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]sciezka do pliku jako argument if() - dlaczego nie działa?
ddkd
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 15.01.2011

Ostrzeżenie: (0%)
-----


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

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Daiquiri
post
Post #2





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




A co zobaczysz gdy wyświetlisz zmienną $plik nad warunkiem? Czy aby na pewno warunek musi być spełniony? (IMG:style_emoticons/default/smile.gif)

PS. Korzystaj z BBCode
Powód edycji: [Daiquiri]:
Go to the top of the page
+Quote Post
ddkd
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 15.01.2011

Ostrzeżenie: (0%)
-----


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"
Go to the top of the page
+Quote Post
Daiquiri
post
Post #4





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




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! (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
ddkd
post
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 15.01.2011

Ostrzeżenie: (0%)
-----


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! (IMG:style_emoticons/default/smile.gif)


sorry - to mój debiut, poprawię się (IMG:style_emoticons/default/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
Go to the top of the page
+Quote Post
CuteOne
post
Post #6





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


  1. $plik = strtolower($plik);
  2.  
  3. if($plik == 'c:/www/index.html')


Ten post edytował CuteOne 16.01.2011, 01:30:45
Go to the top of the page
+Quote Post
Daiquiri
post
Post #7





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




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 (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post
ddkd
post
Post #8





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 15.01.2011

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/smile.gif)
dzieki za sugestie
pozdrawiam

ddkd
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.09.2025 - 22:00