Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem ze starym skryptem
DanielBB
post 20.05.2003, 00:29:15
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 17.04.2003

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


Co poprawić aby ten skrypt zadziałał na wersji php> 4.0?
Skrypt:

[php:1:f1c4683dc3]<?
echo "<BODY bgColor=#6699FF leftMargin=15 topMargin=5><br>";

function sprawdz($plik) {
global $lancuch;
$il=0;
$file = fopen($plik,"r");
while(!feof($file)) {
$linia = strtoupper(fgets($file,100));
$pozycja = strpos($linia,$lancuch[0]);
if(is_integer($pozycja)) {
while(is_integer($pozycja)) {
$l=strstr($linia,$lancuch);
$m=strstr($linia,".".$lancuch);
if(strlen($l)>0&&!$m) {
$linia=substr($l,strlen($lancuch)-1);
++$il;
}
else break;
$pozycja = strpos($linia,$lancuch[0]);

}

}
}
fclose($file);
return $il;
}

function szukaj($w) {
global $ilosc;
global $co;
global $katal;
$kat = dir($w);
$i=0;
while($nazwa=$kat->read()) {
$tab[$i]=$nazwa;
++$i;
}
for($i=0;$i<count($tab);$i++) {
if(strpos($tab[$i],".")==0&&$i>1) {
szukaj($w."/".$tab[$i]);
}
else {
list($nazwa, $rozszerz) = explode(".",$tab[$i]);
if($rozszerz=="htm") {
$il=sprawdz($w."/".$tab[$i]);
if($il>0) {
$ilosc[] = $il;
$co[] = $tab[$i];
$katal[] = $w;
}
}
}
}
}

$ilosc = array();
$co = array(); echo $ilosc;
$katal = array();
$lancuch = strtoupper($lancuch); echo $lancuch;

szukaj("/Inetpub/wwwroot/www");
$zmienna=0;
if(count($ilosc)>0) {echo $ilosc;
for($i=0;$i<count($ilosc);$i++)
for($j=$i+1;$j<count($ilosc);$j++)
if($ilosc[$j]>$ilosc[$i]) {
$zmienna=$ilosc[$j];
$ilosc[$j]=$ilosc[$i];
$ilosc[$i]=$zmienna;
$zmienna=$co[$j];
$co[$j]=$co[$i];
$co[$i]=$zmienna;
$zmienna=$katal[$j];
$katal[$j]=$katal[$i];
$katal[$i]=$zmienna;
}
for($i=0;$i<count($ilosc);$i++) {echo $co[$i];
echo "Na stronie <a target=glowna href="".$co[$i]."">
".$co[$i]."
</a> znaleziono ".$ilosc[$i]." takich wyrazów<br>n";
}
}
else echo "Nie znaleziono!";
?>[/php:1:f1c4683dc3]

zamiast global $lancuch wstawiłem na samym początku skryptu :
$lancuch=$_POST['lancuch']; i zmienna lancuch jest poprawnie pobierana z formularza. cos nie tak jest później może ze zmiennymi $co, $ilosc i $katal? Dodam jeszcze, że przy register_globals = On skrypt działa.
Proszę o pomoc i z góry dziękuję.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
spenalzo
post 20.05.2003, 01:15:29
Post #2





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


Trochę błedów typu otwarta pętla i niezakończona znakiem } itd.
Poza tym wydaje mi się, że funkcja szukaj() nic nie zwraca, ponieważ brak instrukcji return() lub argumentów przekazywanych przez odwołanie, czyli np. &$katalog - eee, sam już nie wiem.

Opisz krótko co każda funkcja robi.


--------------------

Go to the top of the page
+Quote Post
DanielBB
post 20.05.2003, 08:26:59
Post #3





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 17.04.2003

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


Funkcja sprawdz plik pszeszukuje plik linia po lini za danym wyazem. Funkcja szukaj pomaga przeszukać katalogi w katalogach w poszukiwaniu pliku. Później wyświetlane są już tylko wyniki. Skrypt działa na wcześniejszych wersjach php. Czy zostało coś jeszcze zmienione w nowszych wersjach (php >4.0)?
Mozna uruchomić ten skrypt przy ustawionych register_globals na on i działa! Więc co przeoczyłem?
Go to the top of the page
+Quote Post
scanner
post 20.05.2003, 08:28:53
Post #4





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Wydaje mi się, że gdzieś musiałeś zapomniec w odwołaniu się do $_POST/GET. Wysstarczy jedna zapiomniana zmienna i skrypt leci w kosmos.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
DanielBB
post 20.05.2003, 08:36:10
Post #5





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 17.04.2003

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


Czy zamiana zmiennych globalnych np. global $lancuch; na wyrażenia typu $_POST['lancuch']; mają sens tylko przy pobieraniu zmiennych z zewnątrz? Czy może np. global $ilosc która nie ma źródła na zewnątrz skryptu powinna być zmieniona na podobną formułę?
Go to the top of the page
+Quote Post
scanner
post 20.05.2003, 08:42:43
Post #6





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




superglobale wykorzystuje się tylko, jeśli zmienna pochodzi z odpowiedniego źródła.

Jesli zmienna jest wykorzystywana i definiowana/deklarowana wewnątrz sktyptu, to wystarcza albo przekazania jej jako paramert funkcji, albo odwołanie do niej przez global.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
DanielBB
post 20.05.2003, 09:00:28
Post #7





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 17.04.2003

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


Ja pobieram tylko z zewnętrznego źródła zmienną $lancuch. Pierwotnie jako global $lancuch skrypt dziala. Po zamianie na $lancuch=$_POST['lancuch']; i wywaleniu linijki global $lancuch; skrypt nie działa. Gdzie jest błąd? Czy to jest w 100% równoznaczne:
global $lancuch; i $lancuch=$_POST['lancuch'];?
Go to the top of the page
+Quote Post
scanner
post 20.05.2003, 09:16:08
Post #8





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Zaraz, zaraz. w którym miejscu masz owe[php:1:c777972921]$lancuch = $_POST['lancuch'];[/php:1:c777972921]?
Jesli poza funkcjami, to samo global powinienes pozostawić, lub też:
usunąć to co powyżej, a każde wystapienie $lancuch zamienić na $_POST['lancuch'].


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
DanielBB
post 20.05.2003, 10:18:01
Post #9





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 17.04.2003

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


Dałbym głowę że wczoraj o 2.00 w nocy przy pozostawieniu global $lancuch w funkcji i linijce przed nimi: $lancuch=$_POST['lancuch']; skrypt wyświetlał mi często spotykany w sieci błąd "Empty delimiter". Po twoich wskazówkach uruchomiłem go jeszcze raz w takiej postaci i... działa :oops: . Przepraszam za kłopot i dziękuję za cenne wskazówki.
P.S. O 2 w nocy lepiej nie pisać skryptów.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 16:58