Instrukcje dołączania plików

advertisement
Instrukcje dołączania plików
W języku PHP dostępne są dwie instrukcje pozwalające na włączeniu do kodu skryptu
zawartości innego pliku zawierającego kod PHP.
Instrukcje include() oraz require( ) przyjmują jeden argument, którym jest nazwa pliku lub
cała ścieżka dostępu do pliku, mającego znajdować się na innym serwerze.
include(nazwa_pliku.php);
require(nazwa_pliku.php);
Obie instrukcje wywołują się podobnie, ale występują między nimi różnice. Przy wywołaniu
instrukcji require() nazwa pliku nie może zostać pobrana ze zmiennej, include() zaś daje taką
możliwość. W przypadku gdy plik nie zostanie odnaleziony, require() wygeneruje błąd Fatal
error i zatrzyma skrypt. Natomiast include() jedynie wyświetli ostrzeżenie.
Zadanie 1.
Przetestuj.
Zawartość pliku pierwszy.php:
<?php
function lancuch($znak,$dlugosc)
{
for($i=0;$i<$dlugosc;$i++)
print($znak);
print("<br />");
}
lancuch("@",10);
lancuch("#",5);
lancuch("$",15);
?>
Zawartość pliku drugi.php:
<?php
print("Zawartość pliku pierwszy.php: <br />");
include("pierwszy.php");
print("Wywołanie funkcji z pliku pierwszy.php: <br />");
lancuch("*",20);
?>
Include_once oraz Require_once
Istnieją jeszcze drobne modyfikacje powyższych dwóch komend załączających pliki. Noszą
nazwy include_once() oraz require_once(). Różnią się od swoich odpowiedników wyłącznie
tym, że mimo kilku wywołań w jednym skrypcie, plik zostanie załączony wyłącznie raz, co
uchroni nas przed przypadkowym załączeniem jednego pliku kilka razy.
Tablice
Tablica jest zmienną przechowującą zbiór określonych wartości (elementów).
Tablica jest zmienną strukturalną i wobec jej nazwy obowiązują te same reguły co dla
zmiennych prostych, czyli przed nazwą umieszczony zostaje znak $.
Pierwszy sposób deklaracji tablicy to użycie słowa kluczowego array:
$nazwa_tablicy=array(element1, element2, …, elementn);
Drugi sposób:
$nazwa_tablicy[]=element1;
$nazwa_tablicy[]=element2;
…
$nazwa_tablicy[]=elementn;
Zadanie 1.
Wykorzystując tablice i pętlę for, napisz skrypt wyświetlający 10 liczb wygenerowanych
przez funkcję losującą z przedziału od 1 do 100.
Sortowanie tablic
PHP ofertuje cały zestaw funkcji służących do sortowania tablic. Są to:
•
•
•
•
•
•
•
•
asort()
arsort()
ksort()
rsort()
sort()
uasort()
usort()
uksort()
Większość funkcji (oprócz trzech ostatnich) przyjmuje jeden parametr: zmienną zawierającą
tablicę do posortowania. Żadna z funkcji nie zwraca żadnego wyniku.
Jeden ze sposobów deklaracji tablicy asocjacyjnej (takiej, która zamiast zwykłych indeksów
numerycznych stosuje indeksy znakowe zwane kluczami) to użycie słowa array oraz kluczy
pełniących podobną rolę jak indeksy w zwykłej tablicy:
$nazwa_tablicy=array(klucz1=>element1, …, kluczn=>elementn);
Kolejny sposób:
$nazwa_tablicy[klucz1]=element1;
…
$nazwa_tablicy[kluczn]=elementn;
Zadanie 2.
Sprawdź co wykona poniższy skrypt:
<?php
$owoce = array ("d"=>"mango", "a"=>"papaja", "b"=>"banan", "c"=>"aronia");
asort ($owoce);
reset ($owoce); // Funkcja ta powoduje powrót do pierwszego elementu
tablicy
while (list ($klucz, $wartosc) = each ($owoce)) {
echo "$klucz = $wartosc ";
}
?>
Sortowanie tablic.php
<?
$produkty = array("Ksiazki","Filmy VHS","Filmy DVD", "filmy DVD", "Plyty CD", "Plyty VCD");
echo "Oto produkty:<br>";
for($i=0; $i<6; $i++)
echo $produkty[$i]."<br>";
sort($produkty);
echo "Oto sortowane produkty:<br>";
for($i=0; $i<6; $i++)
echo $produkty[$i]."<br>";
rsort($produkty);
echo "Oto sortowane odwrotnie produkty:<br>";
for($i=0; $i<6; $i++)
echo $produkty[$i]."<br>";
$ceny = array(1, 34, 3.45, 445, -23, 100,1000,10000, 10000, 1.2e+8);
sort($ceny);
for($i=0; $i<sizeof($ceny); $i++)
echo $ceny[$i]."<br>";
?>
Operacje na plikach
Zanim zaczniemy coś zapisywać, bądź też odczytywać z pliku, musimy go najpierw
otworzyć, oraz skojarzyć z jakąś zmienną z której będziemy później korzystać przy
odwoływaniu się do niego. W podanych tu przykładach będzie to zmienna $plik (ambitna
nazwa, no nie ? ;)). Do otwarcia pliku służy funkcja fopen(). Posiada dwa argumenty.
Pierwszy to nazwa pliku, natomiast drugi, to tryb w jakim plik ma być otworzony. To co
funkcja zwraca przypisujemy do naszej zmiennej $plik. Czyli np.
$plik = fopen("pliczek.txt","w+");
Teraz troszkę o drugim parametrze, może on przyjmować następujące wartości:
a
Otwiera plik do dopisywania danych. Dane będą dodawane
na końcu pliku
a+
Otwiera plik do oczytu i dopisywania danych. Dane będą
dodawane do końca pliku
r
Otwiera plik tylko do odczytu (również plików za pomocą
protokołu HTTP)
r+
Otwiera plik do odczytu i zapisu. Dane będą dodawane na
początku pliku
w
Otwiera plik tylko do zapisu. Jeżeli plik istnieje wszystkie
dane zostaną skasowane, jeżeli nie, PHP spróbuje go
utworzyć
Otwiera plik do odczytu i zapisu. Jeżeli plik istnieje
w+ wszystkie dane zostaną skasowane, jeżeli nie, PHP spróbuje
go utworzyć
Jeżeli otwieramy plik do odczytu, dopuszczalne jest także podanie adresu HTTP (chyba że
jest to zablokowane na serwerze). Czyli możemy np napisać:
$plik = fopen("http://www.example.com/", "r");
1. przykład na sprawdzenie istnienia pliku:
<BODY>
<FORM METHOD="post" ACTION="istnieje.php">
<P>Podaj sciezke i nazwe pliku:</p>
<INPUT TYPE="text" NAME="plik" >
<P><INPUT TYPE="submit" NAME="submit" VALUE="Szukaj"></p>
</FORM>
<?php
$plik=$_POST['plik'];
if (file_exists($plik))
echo "<strong>Znalazlem plik $plik!!!</strong>";
else
echo "<strong>Nie ma pliku $plik!!!</strong>";
?>
</BODY>
2. Przykład na tworzenie pliku
<BODY>
<FORM METHOD="post" ACTION="tworzy.php">
<P>Podaj sciezke i nazwe pliku:</p>
<INPUT TYPE="text" NAME="plik" >
<P><INPUT TYPE="submit" NAME="submit" VALUE="Nowy plik"></p>
</FORM>
<?php
$plik=$_POST['plik'];
if (file_exists($plik))
echo "<p><strong>Plik $plik już istnieje!!!</strong><p>";
elseif ($plik != "")
{
fopen($plik, "w+");
echo "<p><strong>Utworzono plik: $plik</strong><p>";
}
?>
</BODY>
3. Przykład do zapisania do pliku:
<FORM METHOD="post" ACTION="do_pliku.php">
<P>Podaj sciezke i nazwe pliku:</p><INPUT TYPE="text" NAME="plik" ></br>
<p>Wpisz teskt:</p>
<TEXTAREA NAME="tekst" COLS=45 ROWS=5 WRAP=virtual></TEXTAREA>
<P><INPUT TYPE="submit" NAME="submit" VALUE="Wpisz do pliku"></p>
</FORM>
<?php
$plik=$_POST['plik'];
$tekst=$_POST['tekst'];
if (file_exists($plik) && ($plik !="") && ($tekst !=""))
{
echo "<p><strong>Znalazlem plik $plik!!!</strong></p>";
$file = @fopen($plik, "w+")
or die
("<p><strong>Nie udalo sie otworzyc pliku</strong></p>");
fwrite($file, $tekst);
fclose($file);
echo "<p><strong>Zapisalem do niego tekst: $tekst</strong></p>";
}
else
echo "<strong>Nie ma pliku $plik!!!</strong>";
?>
</BODY>
4. Czytanie z pliku
<BODY>
<FORM METHOD="post" ACTION="z_pliku.php">
<P>Podaj sciezke i nazwe pliku:</p><INPUT TYPE="text" NAME="plik" ></br>
<P><INPUT TYPE="submit" NAME="submit" VALUE="Czytaj z pliku"></p>
</FORM>
<?php
$plik=$_POST['plik'];
$file = fopen($plik, "r");
$msg = fread($file, filesize($plik));
fclose($file);
echo "$msg";
?>
</BODY>
Sortowanie z pliku tekstowego
<?
/* skrypt odczytuje wszystkie liczby z pliku Liczby.txt, wczytuje je do tablicy, sortuje je od
najmniejszej do największej po czym zwraca je do formularza; */
$plik=fopen('Liczby.txt','r');
$x=0;
while (!feof($plik)) //wczytanie liczb do tablicy
{
$tab1[$x]=fgets($plik);
$tab[$x]=(int)$tab1[$x];
$x++;
}
sort($tab);
$k=0;
while ($k<=$x) //wypisanie wyniku
{echo $tab[$k];
echo "<br>";
$k++;
}
fclose($plik);
?>
Wstawić do tablicy losowo liczby ujemne i dodatnie. Następnie zliczyć ilość liczb dodatnich i
ujemnych.
<?php
for ($i=1;$i<=10;$i++)
{
$a=rand(-10,10);
$tab[$i]=$a;
}
echo "Losowe liczby do sprawdzenia: ";
for ($i=1;$i<=10;$i++)
{
echo "$tab[$i]; ";
}
$d=0;
$u=0;
for ($i=1;$i<=10;$i++)
{
if ($tab[$i]>0)
{
$d++;
}
else
{
$u++;
}
}
echo"<br>";
echo "W danym zbiorze liczb dodatnich jest: $d";
echo"<br>";
echo "W danym zbiorze liczb ujemnych jest: $u";
?>
wprowadzić 3 liczby, wybrać z nich największa i najmniejszą
<html>
<head>
<body>
<FORM ACTION="4_licz.php" METHOD="post">
<INPUT TYPE="text" NAME="l1">
1liczba<br>
<INPUT TYPE="text" NAME="l2">
2liczba<br>
<INPUT TYPE="text" NAME="l3">
3liczba<br>
<INPUT TYPE="text" NAME="l4">
4liczba<br>
<INPUT TYPE="SUBMIT" VALUE="WYKONAJ!!!">
</FORM>
</body>
</head>
</html>
<?PHP
$liczby[0]=$l1;
$liczby[1]=$l2;
$liczby[2]=$l3;
$liczby[3]=$l4;
sort($liczby);
for ($i=0;$i<4;$i++)
{
echo $liczby[$i];
echo "<br>";
}
echo "największa LICZBA ".$liczby[0];
echo "<br>";
echo "największa LICZBA ".$liczby[3];
?>
Licznik.php
<html>
<body>
<?php
sleep(1);
if(!(file_exists("licznik.txt"))) {
//jesli nie istnieje
$plicznik=fopen("licznik.txt", "w+"); //to jest tworzony
fputs($plicznik, "0");
fclose($plicznik);
// wpisujemy "0"
}
$plicznik=fopen("licznik.txt", "r+"); //otwarcie "RW"
flock($plicznik,2);
$liczba=fgets($plicznik,10); //pobranie ilosci odwiedzin
echo ("<strong>Liczba odwiedzin: $liczba </strong>");
$liczba++;
//zwiększenie ilosci o 1
fseek($plicznik,"0");
//wskaznik na poczatek
fputs($plicznik, $liczba);
//wpisanie liczby do pliku
flock($plicznik,3);
fclose($plicznik);
?>
</body>
</html>
Download