Komputer Świat Ekspert - Forum: FAQ PHP/MySQL - Komputer Świat Ekspert - Forum

Skocz do zawartości

  • 3 stron +
  • 1
  • 2
  • 3

FAQ PHP/MySQL Najczęściej zadawane pytania

#1 Guest_virus_jc_*

  • Grupa: Guests

Ikona posta  Napisano 19 grudzień 2005, 21:10

Witam :)
Na wstęp
Jako że w dziale Programowanie powstały już dwa FAQ (Delphi i C++), postanowiłem załozyć temat, w którym umieszczane będą najczęściej zadawane pytania dotyczące języka PHP; może być też wykorzystanie w nim bazy danych MySQL.

Jak pisać
Pytania z odpowiedziami sugeruję pisać w stylu:
Pytanie pytanie pytanie?
Odpowiedź, odpowiedź, odpowiedź.

I jeszcze jedno. Każde pytanie piszcie jako oddzielny post, dzięki temu będzie można zrobić spis pytań i po prostu będzie czytelniej. Starajcie także pierw patrzeć, czy nie istnieje przypadkiem odpowiedź na pytanie, które macie zamiar zadać.
Podając kod, umieść go między znacznikami [ code ] i [ /code ] (bez spacji)
Jeśli kod jest dłuższy niż ok. 25 lini, zamiast znacznika code użyj codebox


Posłowie
Przy pisaniu postów, pamiętajcie, aby zwracać uwagę na błędy ortograficzne, zdania zaczynać z duzych liter itp. ;)

Spis pytań
ak wylosować jeden z tekstów podanych w tablicy?
Dlaczego w pliku index.html kod php mi się nie wykonuje??
Deklaracja zmiennych
Jak robić komentarze?
Jak zrobić upload pliku?
Jak przyspieszyć wykonywanie się skryptów?
W jaki sposób mogę wstawiać kod PHP?
W jaki sposób mogę komentować swój kod?
Jak wykonywac zapytania do mysql?
Jak wysłać e-maila z poziomu kodu PHP?
Jak mogę sprawdzić czas generowania strony?
Co jesli nie moge uzywac mail()?
Co to sa klasy i jak je używać
Dlaczego mój skrypt działa dobrze na Krasnalu, a gdy go wgram na jakiś serwer psuje się?
Jak zrobić licznik odwiedzin strony oparty na plikach tekstowych?
Druga wersja licznika // logika oparta na poprzednim :)
Jak wstawić kod z innego pliku?
Jak sprawdzić adres IP danego serwera?
Jak odczytać zawartość pliku z dysku?
Jak zapisać zawartość zmiennej na dysk?
Jak korzystać z sesji?
Jak sprawdzić jaką przeglądarką oglądamy stronę oraz nasz system operacyjny?
Jak zablokować wybrane adresy IP?
Jak sprawdzić ostatnią modyfikację danej strony?
Jak sprawdzić domenę z IP i IP z domeny?
Jak zrobić stronę zależną od dnia tygodnia?
Co to jest alternatywna składnia konstrukcji językowych?
Jak dodać jakąś wartość do tabeli w MySQL-u?
Podstawowe zapytania MySql.
Alternatywne miniaturyzowanie zdjęć (miniaturki).
Emotikony.
Emotkikony i mechanizm BBCode
Co to jest PHP i co oznacza ten skrót?
Jak zrobić tabliczkę mnożenia opartą na pętli for?
Jak wyświetlić różnicę dat działalności witryny internetowej?
Jak zakodować tekst do encji HTML i na odwrót?
Jak sprawdzić kilka informacji o serwerze?
Gdzie mogę znaleźć inne ciekawe FAQ po polsku?
Jak sprawdzić czy dany ciąg jest zawarty w innym ciągu?
Jak zrobić przekierowanie w PHP?
Wyświetlanie losowego tekstu
Jak pobrać adres IP odwiedzającego stronę ?
Co to sa klasy i jak je używać?
Koder/dekoder literowy by Krzysztof Bujak (Abdel Adrian)
Gdzie mogę znaleźć artykuł o zabezpieczaniu skryptów PHP?
W jaki sposób zamienić wszystkie linki w tekście na aktywne?
Pokolorowane na przemian innym kolorem linie z pliku
Jak za pomocą własnej funkcji wyliczyć pole trójkąta?
Zaokrąglanie liczb
Nested Trees - wyświetlanie struktury drzewiastej
Problemy z kodowaniem danych w mysql
Logowanie do serwera MySQL z wiersza poleceń

//aktualizacja linków

Użytkownik katarina edytował ten post 07 czerwiec 2008, 17:03

0

#2 Guest_virus_jc_*

  • Grupa: Guests

Napisano 19 grudzień 2005, 21:14

Jak wylosować jeden z tekstów podanych w tablicy?
<?php
srand(time());

$tekst[] = 'To jest tekst 1';
$tekst[] = 'To jest tekst 2';
$tekst[] = 'To jest tekst 3';

$losuj=rand(0,count($tekst)-1);
echo $tekst[$losuj];
	
?>

Począwszy od PHP 4.2.0, nie trzeba już inicjować generatora liczb losowych przed użyciem (chodzi o funkcję srand()).

Użytkownik virus_jc edytował ten post 19 grudzień 2005, 22:20

0

#3 Użytkownik nie jest zalogowany   Mathew 

  • Stały Uczestnik
  • PipPipPip
  • Grupa: Czytelnicy
  • Postów 1195
  • Rejestracja: 05-grudzień 05

Napisano 19 grudzień 2005, 21:21

Ja myślę, że od czegoś łatwego powinniśmy zacząć (o to też pytają)

Dlaczego w pliku index.html kod php mi się nie wykonuje??

Bo kod wykona się jedynie gdy plik ma rozszerzenie .php

0

#4 Użytkownik nie jest zalogowany   Ziombka 

  • Uczestnik
  • PipPip
  • Grupa: Czytelnicy
  • Postów 798
  • Rejestracja: 27-marzec 04

Napisano 19 grudzień 2005, 21:23

Deklaracja zmiennych
Coś prostego, ale od czegoś trzeba zaczać B)

W PHP w przciwieństwie do innych języków, nie trzeba deklarować zmiennej, tzn. przypisując zmiennej jakąś wartość zostaje ona automatycznie utworzona.
$zmienna1 = 'zawartość zmiennej';
$zmienna2 = 1;


Teraz mozemy sprawdzić zawartość zmiennych:
echo $zmienna1;
echo $zmienna2;

Więcej o zmiennych dowiecie się na stronie www.php.net
0

#5 Użytkownik nie jest zalogowany   dodek 

  • 42
  • PipPipPip
  • Grupa: Czytelnicy
  • Postów 1391
  • Rejestracja: 26-styczeń 05

Napisano 19 grudzień 2005, 21:38

<ot>virus_jc: Po co komu taki długi skrypt do losowania elementu z tablicy, jak jest funkcja array_rand() ?</ot>
Skoro już mają być proste pytania na początek, to i ja coś prostego dorzucę ;)
P. Jak robić komentarze?
Komentarz jednoliniowy:
<?
// echo 'Kod zakomentowany';
echo 'Kod niezakomentowany'; 
?>

Wyświetli:
Kod niezakomentowany

Można osiągnąć to samo wpisując # (tak jak w shellu) zamiast //

Komentarz blokowy:
<?
/*
echo 'To się nie wyświetli';
echo 'To też nie';
*/
echo 'Ale to z kolei tak';
?>

Wyświetli:
Ale to z kolei tak

There is no system but GNU, and Linux is one of its kernels.
Wikipedia - wolne źródło informacji. w:pl:Wikipedysta:Dodek
JID: dodek@jabber.org GG: 3115686 WWW: http://dodecki.blogspot.com/
0

#6 Guest_virus_jc_*

  • Grupa: Guests

Napisano 19 grudzień 2005, 21:45

Jak zrobić upload pliku?
Tworzymy najpierw plik z formularzem:
<form action="upload.php" method="post" enctype="multipart/form-data">
  <input type="hidden" name="MAX_FILE_SIZE" value="5200">
  <input type="file" name="plik">
  <input type="submit" value="Wyślij plik">
</form>

W polu ukrytym (hidden) pod nazwą MAX_FILE_SIZE ustala się maksymalny rozmiar pliku w bajtach - w naszym przypadku bedzie to 50 kB. I plik "upload.php":
<?php
$katalog = '/katalog/dla/plikow';
if(move_uploaded_file($_FILES['plik']['tmp_name'],
  $katalog.$_FILES['plik']['name'])) {
  echo 'Plik został przesłany';
} else {
  echo 'Wystapił błąd!';
}
?>

Użytkownik virus_jc edytował ten post 19 grudzień 2005, 21:49

0

#7 Użytkownik nie jest zalogowany   dodek 

  • 42
  • PipPipPip
  • Grupa: Czytelnicy
  • Postów 1391
  • Rejestracja: 26-styczeń 05

Napisano 19 grudzień 2005, 21:50

P. Jak przyspieszyć wykonywanie się skryptów?
Po pierwsze:
Gdy wpisujemy jakiś string to zamiast brać go w " bierzmy go w ' . Co to da? Otóż parser przelatując przez kod, gdy napotka ciąg znaków wzięty w " szuka w nim jakiejś zmiennej. Jeżeli znajdzie przemienia jej nazwę na jej wartość. Gdy weźmiemy go w ' to parser wyświetli ją tak, jak jest. Przykład:
<?
$imie = 'Dodek';
$nazwisko = 'Dodecki';

echo "Mam na imię $imie <br />";
echo 'Mam na nazwisko $nazwisko';
?>

Wyświetli:
Mam na imię Dodek
Mam na nazwisko $nazwisko

W drugiej linijce nie zamieniło nam $nazwisko na Dodecki. Aby zamieniło zrobimy coś takiego:
<?
$imie = 'Dodek';
$nazwisko = 'Dodecki';

echo "Mam na imię $imie <br />";
echo 'Mam na nazwisko '.$nazwisko.'<br />';
?>

Użyliśmy operatora . czyli połączyliśmy 3 stringi ze sobą.

Co jeszcze? Starajmy się używać jak najmniej pętl (chyba nie muszę wyjaśniać dlaczego). Nie piszmy własnych rozwiązań problemów (funkcji, klas itp), które są już zrobione przez deweloperów PHP (por. post virusa_jc z moim poźniejszym).
There is no system but GNU, and Linux is one of its kernels.
Wikipedia - wolne źródło informacji. w:pl:Wikipedysta:Dodek
JID: dodek@jabber.org GG: 3115686 WWW: http://dodecki.blogspot.com/
0

#8 Użytkownik nie jest zalogowany   Boruta 

  • Webmaster
  • Pip
  • Grupa: Czytelnicy
  • Postów 353
  • Rejestracja: 15-listopad 04

Ikona posta  Napisano 19 grudzień 2005, 21:50

W jaki sposób mogę wstawiać kod PHP?

Sposobów wstawiania kodu jest kilka - oto one:
<? 
echo 'To jest najbardziej powszechna metoda.'; 
?>

<?php 
echo 'Inna, dość podobna metoda.';
?>

<script language="php">
echo 'Ta metoda jest rzadko używana.';
</script> 

<% 
echo 'Sposób podobny do kodu ASP.';
%>

Użytkownik Boruta edytował ten post 19 grudzień 2005, 22:19

0

#9 Użytkownik nie jest zalogowany   Einzeinbleth 

  • Stały Uczestnik
  • PipPipPip
  • Grupa: Czytelnicy
  • Postów 1355
  • Rejestracja: 03-kwiecień 05

Napisano 19 grudzień 2005, 21:56

Użytkownik mmatheww dnia 19.12.2005 22:21 napisał

Ja myślę, że od czegoś łatwego powinniśmy zacząć (o to też pytają)

Dlaczego w pliku index.html kod php mi się nie wykonuje??

Bo kod wykona się jedynie gdy plik ma rozszerzenie .php

Wyświetl post

Niekoniecznie, to zalezy od konfiguracji serwera.

Jak sie polaczyc z baza danych mysql
Nalezy uzyc polecenia mysql_connect('serwer', 'uzytkownik', 'haslo') a nastepnie wybrac uzywana baze danych poleceniem mysql_select_db('nazwa_bazy') np:
<?
$msql = mysql_connect('localhost', 'user', 'pass'); //Otwieramy polaczenie z baza danych
mysql_select_db('baza_danych');
//Tutaj mozemy umieszczac zapytania do bazy danych
mysql_close($msql); //zamykamy polaczenie z baza danych
?>


Jak wykonywac zapytania do mysql?
Sluzy do tego polecenia: mysql_query('zapytanie'). Przydatne takze sa mysql_fetch_array(adres_do_wyniku_zapytania), i mysql_fetch_assoc(adres_do_wyniku_zapytania) a takze mysql_num_rows(adres_do_wyniku_zapytania).
Przyklad wypisujacy podstawowe dane z tablicy o nazwie test, przyjmujac ze mamy juz wybrana baze, tablica istnieje, i mamy tez polaczenie z mysql.
Przegladanie tabeli:
<?
$zapytanie = 'select * from test'; //podstawowe zapytanie, wyswietli wszystko z tabeli test
$wynik = mysql_query($zapytanie); //przypisanie do zmiennej $wynik "adresu" wykonanego zapytania mysql. 
$rekord = mysql_fetch_array($wynik); //teraz rekord stalo sie tablica - jesli tabela 'test' miala takie kolumny jak imie, nazwisko, numer to wtedy $rekord bedzie sie skladal z $rekord['imie'], $rekord['nazwisko'], $rekord['numer'];
$ilosc = mysql_num_rows($wynik); //sprawdzamy ile wierszy (rekordow) zwrocilo zapytanie
?>



Użytkownik Einzeinbleth edytował ten post 19 grudzień 2005, 21:56

0

#10 Guest_virus_jc_*

  • Grupa: Guests

Napisano 19 grudzień 2005, 21:58

Jak wysłać e-maila z poziomu kodu PHP?
<?php
if(isset($_POST['tresc'])) {
  mail('email@odbiorcy.pl','Temat wiadomości','Treść wiadomości...','From: Szczepan Wąs <twoj@email.com>');
?>

Aby móc wysyłać e-maile ze strony WWW, nalezy pamietać, żeby mieć włączoną funkcję mail() na serwerze ;)
0

#11 Użytkownik nie jest zalogowany   Boruta 

  • Webmaster
  • Pip
  • Grupa: Czytelnicy
  • Postów 353
  • Rejestracja: 15-listopad 04

Ikona posta  Napisano 19 grudzień 2005, 22:06

Jak mogę sprawdzić czas generowania strony?

Wystarczy wstawić na stronę taki kod:
<?php

$start = getmicrotime();

for ($i = 0; $i < 10000; $i++) {
   $str = 'test';
}

$end = getmicrotime();

echo '<!-- Czas wygenerowania strony: '.($end - $start).' sekund -->';

?>

Czas generowania strony będzie zapisany w źródle.

Użytkownik Boruta edytował ten post 19 grudzień 2005, 22:06

0

#12 Użytkownik nie jest zalogowany   Einzeinbleth 

  • Stały Uczestnik
  • PipPipPip
  • Grupa: Czytelnicy
  • Postów 1355
  • Rejestracja: 03-kwiecień 05

Napisano 19 grudzień 2005, 22:10

Co jesli nie moge uzywac mail()
Najlepiej uzyc PHPMailer - jednak ten wymaga fsockopen.

Co to sa klasy jak je uzywac
Klasy to swego rodzaju ulatwienie, niektorym moze sie tez kojarzyc z komponentami. Przykladowa najprostsza klasa:
<?
class test {

function WyswietlMiCos() {
$cos = 'blebleblebleeeeee';
return $cos;
}

}
?>

Nastepnie aby to uzyc wywolujemy to tak:
<?
echo  test::WyswietlMiCos();
?>

To wielkie ulatwienie, szczegolnie jesli klasy umiescimy w osobnych plikach, a pozniej za pomoca include je wlaczyc do dokumentu-rodzica. Wtedy mozemy np. skupic sie na samej realizacji kodu w klasach, i gdy cos bedzie nie tak - wiemy dokladnie gdzie szukac winnego.

Jak sie zabezpieczyc przed "wstrzyknieciem" kodu html/js do danych wysylanych przez uzytkownikow na strone (np forum, ksiega gosci)?
Nalezy do tego uzyc funkcji htmlspecialchars ktora zmienia wszystkie znaki specjalne, jak na przyklad "<" ">" itp - zmienia je na np. "&lt;", "&gt;". Pomocne sa takze polecenia addslashes dodajacy slashe "\" przed kazdym znakiem specjalnym (np apostrofem). Aby uzytkownika nie razic dziwnym tekstem mozemy potem bezpiecznie usunac te slashe - za pomoca stripslashes

Użytkownik Einzeinbleth edytował ten post 19 grudzień 2005, 22:28

0

#13 Użytkownik nie jest zalogowany   dodek 

  • 42
  • PipPipPip
  • Grupa: Czytelnicy
  • Postów 1391
  • Rejestracja: 26-styczeń 05

Napisano 19 grudzień 2005, 22:11

P. Dlaczego mój skrypt działa dobrze na Krasnalu, a gdy go wgram na jakiś serwer psuje się?
Najprawdopodobniej (nie zawsze!) spowodowane jest to włączeniem na Krasnalu dyrektywy register_globals . O co chodzi? Dyrektywa register_globals została stworzona po to, aby pisanie kodu było łatwiejsze. Polega to na tym, że:
Powiedzmy, że mamy taki formularz:
<form action="form.php" method="post">
Podaj swoje imię: <input type="text" name="imie">
<input type="submit" value="wyślij" />
</form>

Formularz, po wpisaniu danych, przekieruje nas do pliku form.php, gdzie będziemy od razu mieli zdeklarowaną funkcję $imie z wartością pobraną z formularza, a nie będziemy musieli się męczyć z długim $_POST['imie'] . Prawda, jakie wygodne?
Niestety poleganie na tej dyrektywie prowadzi do dwóch błędów. Pierwszy to już wspomniana sytuacja, gdy register_globals jest wyłączone. Wtedy nie będziemy mieli zmiennej $imie, domyślacie się pewnie, co w związku z tym... Dlatego dla danych przesłanych postem ZAWSZE należy używać tablicy $_POST, analogicznie do danych przesłanych getem, danych serwera itp. Dodam jeszcze, że nie powinno się używać tablicy $HTTP_POST_VARS, gdyż ta funkcja może być wyłączona na danym serwerze i ogólnie usunięta w następnych wersjach PHP.
Wspomniałem o 2 błędach. Co z tym drugim? Otóż właczenie register_globals na serwerze może prowadzić do niebezpiecznych luk w kodzie. Spójrzmy na przykład:
Plik admin.php
<?
if($_POST['haslo']=='jakies_tam_haslo')
{
$status = 'ok';
}
/* 
jakis tam kod
...
*/
if($status=='ok')
{
 echo 'masz dostęp';
}

Gdzie ten błąd? Otóż można się dostać do zabezpieczonej części w prosty sposób - wpisując jako adres http://jakas.strona....n.php?status=ok . Co się stanie? Parser zadeklaruje nam zmienną $status o wartości ok, a więc dostaniemy się do zabezpieczonej części bez znajomości hasła...
A więc: NIGDY nie polegajmy na register_globals, a jeżeli mamy własny serwer, to tą funkcję wyłączmy (w php.ini zmieniasz register_globals = on na register_globals = off )
?>

Użytkownik dodek edytował ten post 19 grudzień 2005, 22:42

There is no system but GNU, and Linux is one of its kernels.
Wikipedia - wolne źródło informacji. w:pl:Wikipedysta:Dodek
JID: dodek@jabber.org GG: 3115686 WWW: http://dodecki.blogspot.com/
0

#14 Guest_virus_jc_*

  • Grupa: Guests

Napisano 19 grudzień 2005, 22:14

Jak zrobić licznik odwiedzin strony oparty na plikach tekstowych?
<?php
$licznik = 'licznik.txt';
if ($plik= @fopen($licznik,'r')) {
  $ilosc=fgets($plik);
  fclose($plik);
} else $ilosc = 0;

$ilosc++;

echo 'Odwiedzin: '.$ilosc;

$plik=fopen($licznik,'w') or die('Błąd');
fputs($plik, $ilosc);
fclose($plik);
?>

Ilość wizyt będzie dopisywana do pliku "licznik.txt". Aby licznik zadziałał, musisz po raz pierwszy wpisać do pliku "licznik.txt" wartość "0".
0

#15 Użytkownik nie jest zalogowany   dodek 

  • 42
  • PipPipPip
  • Grupa: Czytelnicy
  • Postów 1391
  • Rejestracja: 26-styczeń 05

Napisano 19 grudzień 2005, 22:24

Wyedytuję szybciutko skrypt virusa, by nie wymagał tworzenia pliku ręcznie:
<?
$licznik = 'licznik.txt'; //nazwa pliku z licznikiem
if(!file_exists($licznik)  // jezeli plik licznik.txt nie istnieje
{
  $plik = fopen($licznik, 'w'); //utworz plik licznik.txt
  fwrite($plik, '0'); //zapisz do niego 0
  fclose($plik); //zamknij niepotrzebny juz wskaznik pliku
  echo 'Odwiedzin: 0'; //w sumie pierwsza odsłona, wiec nie ma zadnych innych odwiedzin
}
else
{
  $ilosc = file_get_contents($licznik); //pobierz zawartosc pliku licznik.txt
  $ilosc++; //zwiekszamy liczbe odwiedzin o jeden
  echo 'Odwiedzin: '.$ilosc; //wyswietlamy liczbe odwiedzin
  $plik=fopen($licznik,'w'); //kasujemy zawartoscp pliku licznik.txt
  fwrite($plik, $ilosc); /zapisujemy nowa liczbe odwiedzin 
  fclose($plik); //zamknij niepotrzebny juz wskaznik pliku
}
?>

Dlaczego tak jest lepiej? Otóż edytory tekstu mają tendencję do wstawiania \n na koniec pliku, a wtedy mogłyby być problemy ze zwiększaniem o 1.

//dawajcie w skryptach komentarze!

Użytkownik dodek edytował ten post 19 grudzień 2005, 22:25

There is no system but GNU, and Linux is one of its kernels.
Wikipedia - wolne źródło informacji. w:pl:Wikipedysta:Dodek
JID: dodek@jabber.org GG: 3115686 WWW: http://dodecki.blogspot.com/
0

#16 Użytkownik nie jest zalogowany   Boruta 

  • Webmaster
  • Pip
  • Grupa: Czytelnicy
  • Postów 353
  • Rejestracja: 15-listopad 04

Ikona posta  Napisano 19 grudzień 2005, 22:26

Jak wstawić kod z innego pliku?

Nic prostszego - oto kod:
<?php
include("jakis_plik.php");
?>

0

#17 Guest_virus_jc_*

  • Grupa: Guests

Napisano 19 grudzień 2005, 22:37

Jak sprawdzić adres IP danego serwera?
<?php
$ip = 'ks-ekspert.pl'; // bez http:// !!
$ping = gethostbyname($ip);
echo 'Adres komputera '.$ip.' to '.$ping;
?>

Użytkownik virus_jc edytował ten post 19 grudzień 2005, 22:40

0

#18 Użytkownik nie jest zalogowany   Kodie 

  • Zaawansowany Uczestnik
  • PipPipPipPip
  • Grupa: Czytelnicy
  • Postów 2299
  • Rejestracja: 18-luty 04

Napisano 19 grudzień 2005, 22:39

Użytkownik mmatheww dnia 19.12.2005 21:21 napisał

Ja myślę, że od czegoś łatwego powinniśmy zacząć (o to też pytają)

Dlaczego w pliku index.html kod php mi się nie wykonuje??

Bo kod wykona się jedynie gdy plik ma rozszerzenie .php

Wyświetl post


Właściwie to nie dlatego. Chodzi o to, że serwer standardowo nie przekazuje plików HTML do parsera PHP. Jednak można zrobić tak,żeby i pliki .html były przetwarzane przez parser PHP. Wystarczy dodać w konfuguracji serera w tym przypadku Apache'a lub w pliku .htaccess (o ile odpowiednio skonfigurowano Apache)
AddType application/x-httpd-php .html .htm

Jak widać nie zawsze jest tak prosto ;)

Teraz jakieś pytanie :)
Jak odczytać zawartość pliku z dysku?
można użyć fopen, etc... albo począwszy od wersji PHP 4.4:
$str = file_get_contents('plik.tpl');


Jak zapisać zawartość zmiennej na dysk?
Analogicznie
$zmienna = 'Ala ma kota, a kot ma ale, kazdy ma jakieś ale';
file_put_contents('plik.txt', $zmienna);

Kodie
0

#19 Użytkownik nie jest zalogowany   dodek 

  • 42
  • PipPipPip
  • Grupa: Czytelnicy
  • Postów 1391
  • Rejestracja: 26-styczeń 05

Napisano 19 grudzień 2005, 22:39

P. Jak korzystać z sesji?
Nic prostszego. Na początku każdego skryptu walimy funkcję session_start() i od tej pory mamy asocjacyjną tablicę superglobalną (uff...) $_SESSION . Jeżeli zapiszemy w niej dane to na każdej podstronie będziemy mieli zmienną. Przykład:
Plik index.php
<?
session_start(); //rozpoczynamy sesję
$_SESSION['nick'] = 'Dodek'; //rejstrujemy zmienną sesyjną nick
echo '<a href="podstrona.php">Podstrona</a>'; //wyświetlamy link

Plik podstrona.php
<?
session_start(); //wznawiamy sesję
echo $_SESSION['nick']; //wyswietlamy zmienną sesyjną
?>

Otwieramy w przeglądarce index.php. Klikamy na link. Widzimy "Dodek". Sweet.

Sesje oferują całą gamę zastosowań, choćby autentyfikacja użytkownika. O tym jednak napiszę w następnym rozdziale :D .

Użytkownik dodek edytował ten post 19 grudzień 2005, 22:41

There is no system but GNU, and Linux is one of its kernels.
Wikipedia - wolne źródło informacji. w:pl:Wikipedysta:Dodek
JID: dodek@jabber.org GG: 3115686 WWW: http://dodecki.blogspot.com/
0

#20 Guest_virus_jc_*

  • Grupa: Guests

Napisano 19 grudzień 2005, 23:07

Jak sprawdzić jaką przeglądarką oglądamy stronę oraz nasz system operacyjny?
<?php
// ------------------- przeglądarka -------------------
$brow = strtolower($_SERVER['HTTP_USER_AGENT']);
/* strtolower() -> zmienia litery na małe
zmienna superglobalna z podanym parapetrem odczytuje info o przegladarce i OS-ie */

// za pomocą strpos() znajdujemy frazę wśród dostarczonych informacji ($brow)
if(strpos($brow, 'firefox') !== false) {
  echo 'Firefox';
} elseif(strpos($brow, 'opera') !== false) {
  echo 'Opera';
} elseif(strpos($brow, 'msie') !== false) {
  echo 'Internet Explorer';
} else {
  echo 'Inna';
}
echo '<p>';
// ----------------- system operacyjny -----------------
if(strpos($brow, 'windows') !== false) {
  echo 'Windows';
} elseif(strpos($brow, 'linux') !== false) {
  echo 'Linux';
} elseif(strpos($brow, 'mac os') !== false) {
  echo 'MacOS';
} else {
  echo 'Inny';
?>

0

#21 Guest_virus_jc_*

  • Grupa: Guests

Napisano 19 grudzień 2005, 23:21

Jak zablokować wybrane adresy IP?
$baza = file('ip.txt'); // baza zbanowanych ip
$ip = count($baza);
for($i = 0; $i < $ip; $i++) // pętla
{
 $baza[$i] = trim($baza[$i]);
 if($baza[$i] == $_SERVER['REMOTE_ADDR']) {
   echo 'Zostales zablokowany!';
 }
}

w pliku "ip.txt" przechowujemy listę zbanowanych adresów IP, każdy w oddzielnej linijce.
// skrypt nie zadziała w przypadku, jeśli klient będzie miał zmienne IP (np. Neostrada)

Użytkownik virus_jc edytował ten post 19 grudzień 2005, 23:23

0

#22 Guest_virus_jc_*

  • Grupa: Guests

Napisano 19 grudzień 2005, 23:34

Jak sprawdzić ostatnią modyfikację danej strony?
<?php
function OstatniaModyfikacja($plik) { # tworzymy funkcję
  $czas = filemtime($plik); // wybieramy plik
  $data = date('d-m-Y G:i:s', $czas); // tworzymy format daty i czasu
  echo $data; // wyświetlamy zmienną $data
}
OstatniaModyfikacja('strona_w_ktorej_chcemy_sprawdzic_ostatnia_zmiane.php');
?>

Użytkownik virus_jc edytował ten post 19 grudzień 2005, 23:36

0

#23 Użytkownik nie jest zalogowany   adex 

  • geek style
  • Pip
  • Grupa: Czytelnicy
  • Postów 157
  • Rejestracja: 18-grudzień 05

Napisano 19 grudzień 2005, 23:34

IP na domene:
<?php 
//IP => Domena 
$ip = "127.0.0.1"; 
$domena = gethostbyaddr($ip); 
if (!empty($domena)) 
{ 
    echo "Domena serwera o IP <b>" . $ip . "</b> to:" . $domena . "!"; 
} 
else 
{ 
    echo "Nie znaleziono domeny dla serwera o IP <b>" . $ip . "</b>"; 
} 
?>	


Domena na IP:
<?php 
//Domena => IP 
$domena = "www.google.pl"; 
$ip = gethostbynamel($domena); 
if (!empty($ip)) 
{ 
    echo "Adres(y) IP serwera <b>" . $domena . "</b>:<br>"; 

    for ($i=0; $i<count($ip); $i++) 
    { 
        echo $ip[$i] . "<br>"; 
    } 
} 
else 
{ 
    echo "Nie znaleziono adresów IP dla podanego serwera <b>" . $domena. "</b>"; 
} 
?>


PHPBot IRCowy:
http://haxite.org/index.php3?site=artykul&...kul_view&id=557
0

#24 Guest_virus_jc_*

  • Grupa: Guests

Napisano 19 grudzień 2005, 23:44

Jak zrobić stronę zależną od dnia tygodnia?
<?php
function jakiDzien() {
  $dzien = date('w'); // informujemy, że chodzi nam o dzień tygodnia
  switch($dzien) {
    case 0: return('niedziela.html');
    case 1: return('poniedzialek.html');
    case 2: return('wtorek.html');
    case 3: return('sroda.html');
    case 4: return('czwartek.html');
    case 5: return('piatek.html');
    case 6: return('sobota.html');
    default: return('domyslna.html');
  }
}
include(jakiDzien()); // dołączamy odpowiedni plik z nazwą dnia 
?>

0

#25 Użytkownik nie jest zalogowany   dodek 

  • 42
  • PipPipPip
  • Grupa: Czytelnicy
  • Postów 1391
  • Rejestracja: 26-styczeń 05

Napisano 20 grudzień 2005, 07:52

P. Co to jest alternatywna składnia konstrukcji językowych?
Odpowiedź jest prosta - to stosowanie zamiast klamerek dwukropka i endu. Przykład:
<?
$tablica = array('Dodek', 'Dodecki'); //stworzymy sobie tablicę

// -------if-------
if(!isset($tablica)):
  echo 'Tablica $tablica jest niezdefiniowana!';
elseif(empty($tablica)):
  echo 'Tablica $tablica jest pusta!';
else:
  echo 'Tablica $tablica nie jest pusta!';
endif; /* z samym else i elseif nie można użyć alternatywnej składni, trzeba wziąć to w blok razem z if */

//-------for-------
for($i=0;$i<2;$i++):
  $nowa_tablica[$i] = $tablica[$i]; /* kopiowanie tablicy - zupełnie niewydajne, ale to tylko dla testu */
endfor;

//-------foreach-------
foreach($tablica as $indeks => $wartosc):
  echo '$tablica['.$indeks.'] => '.$wartosc.'<br />';
endforeach; 

//-------while-------
/* tutaj alternatywa dla foreach, którego nie było w PHP3, ale z tego co widzę, wciąż wielu ludzi jej używa, choć foreach jest dużo szybsze, łatwiejsze i wygodniejsze.
Ten przykład powinien wyświetlić to samo co powyższy */

while (list($indeks, $wartosc) = each ($tablica)):
  echo '$tablica['.$indeks.'] => '.$wartosc.'<br />';
endwhile;

//-------switch-------
switch($tablica[0]):  //przyglądamy się pierwszemy elementowi tablicy
case 'Dodek':
  echo 'Pierwszy element to "Dodek"!';
break;
case 'Dodcki':
  echo 'Pierwszy element to "Dodecki"!';
break;
default:
  echo 'Pierwszy element to ani Dodek ani Dodecki.';
break;
endswitch;
?>

Po co to komu? Sam nie wiem. Wypadałoby raczej spytać dewelpoerów PHP, oni wytłumaczą...
There is no system but GNU, and Linux is one of its kernels.
Wikipedia - wolne źródło informacji. w:pl:Wikipedysta:Dodek
JID: dodek@jabber.org GG: 3115686 WWW: http://dodecki.blogspot.com/
0

#26 Guest_virus_jc_*

  • Grupa: Guests

Napisano 20 grudzień 2005, 15:49

Jak dodać jakąś wartość do tabeli w MySQL-u?
<?php
if($_GET['baza'] == 'dodaj') { // jeśli w adresie znajdzie się baza=dodaj
  $polaczenie = mysql_query('localhost','root','haslo'); // łączymy się z bazą
  mysql_select_db('moja_baza',$polaczenie); // wybieramy bazę
  /* wyonujemy zapytanie, które doda wartość do pierwszej kolumny w tabeli moja_tabela */
  $sql = 'INSERT INTO moja_tabela VALUES('.$_POST['tresc'].')';
  if(mysql_query($sql,$polaczenie) { 
    echo 'Dodano'; // jeśli wszystko przebiegło pomyslnie - informuje o tym
  } else {
    echo 'Błąd'; // w przeciwnym wypadku informuje o błędzie
  }
}
?>
 <!-- formularz -->
<form action="<?php echo $_SERVER['PHP_SELF']; ?>?baza=dodaj" method="post">
  <input type="text" name="tresc">
  <input type="submit" value="Dodaj">
</form>

Użytkownik virus_jc edytował ten post 21 grudzień 2005, 15:04

0

#27 Użytkownik nie jest zalogowany   Abdel Adrian 

  • Uczestnik
  • PipPip
  • Grupa: Czytelnicy
  • Postów 788
  • Rejestracja: 19-wrzesień 03

Napisano 20 grudzień 2005, 15:52

Podstawowe zapytania MySql.

Dodanie do tabeli:
INSERT INTO $nazwa_tabeli (pole1, pole2) VALUES('tekst', 'teskt2')


Wyświetlenie z tabeli:
SELECT * FROM $nazwa_tabeli WHERE status='1' ORDER BY id DESC LIMIT 5

Wyświetli 5 ostatnich rekordów wg. id z tabeli które mają status 1.

Aktualizacja:
UPDATE $nazwa_tabeli SET pole1='tekst', pole2='tekst2' WHERE id='1'

Zaktualizuje "pole1" oraz "pole2" "wpisując" do ich "tekst" i "tekst2", tam gdzie id jest równe 1.

Usuwanie z tabeli:
DELETE FROM $nazwa_tabeli WHERE id='1'


Lącznie się z bazą w PHP:
$polaczenie = @mysql_connect("localhost", "login", "haslo") or die("Polączenie nie powiodlo się!");
$db = @mysql_select_db(nazwa_bazy, $connection) or die("Wybór bazy nie powiódł się.");
$sql = "zapytanie";
$rezultat = @mysql_query($sql, $polaczenie) or die("Wykonanie zapytania nie powiodlo się!");


Chyba tyle ;)
0

#28 Użytkownik nie jest zalogowany   Abdel Adrian 

  • Uczestnik
  • PipPip
  • Grupa: Czytelnicy
  • Postów 788
  • Rejestracja: 19-wrzesień 03

Napisano 20 grudzień 2005, 15:59

Alternatywne miniaturyzowanie zdjęć (miniaturki).

$zdjecie = "http://www.link/fotka.jpg";
$procent= 0.3;
list($width, $height) = getimagesize($zdjecie);
$newwidth = $width * $procent;
$newheight = $height * $procent;
echo "<img width='$newwidth' height='$newheight' src='$zdjecie'>";


Troche obciąża skrypt, ale na pewno wygodniejsza alternatywa od sposobu "zmiejsz i zapisz"...
0

#29 Użytkownik nie jest zalogowany   Abdel Adrian 

  • Uczestnik
  • PipPip
  • Grupa: Czytelnicy
  • Postów 788
  • Rejestracja: 19-wrzesień 03

Napisano 20 grudzień 2005, 16:13

Emotikony.

Zalóżmy, że ktoś przesyla jakiś tekst poprzez $tekst z ":), :D, :P"... jak zamienić to na emotikony?

$zamien[':)'] = '<img src="umiech.gif">';
$zamien[':D'] = '<img src=".gif">';
$zamien[':P'] = '<img src="jezyk.gif">';
$tekst = (string)$tekst;
$tekst = str_replace(array_keys($zamien), array_values($zamien), $tekst);
echo $tekst;

Użytkownik Abdel Adrian edytował ten post 20 grudzień 2005, 16:14

0

#30 Użytkownik nie jest zalogowany   adex 

  • geek style
  • Pip
  • Grupa: Czytelnicy
  • Postów 157
  • Rejestracja: 18-grudzień 05

Napisano 20 grudzień 2005, 17:05

Emotikony troche inaczej
function emoticons($str){
// emoty
 $emoticons = array(
   ':) ', ':(',
 );
// obrazki
 $images = array(
   'emoticons/usmiech.gif',
   'emoticons/smutny.gif',
   );

  $str = str_replace($emoticons, '<img border="0" src="'.$images.'">',$str); 
}


BBCODE:
function bbcode($str){
    
// usun zbedne
  $str=stripslashes($str);
// HTML
  $str = str_replace("<", "&lt;", $str);      
  $str = str_replace(">", "&gt;", $str);      
// kolejny wiersz
  $str = nl2br($str);
// Spacja
  $str=str_replace('[spacja]','&nbsp;',$str);
// Pogrubiony tekst
  $str = preg_replace("#\[b\](.*?)\[/b\]#si", "<b>\\1</b>", $str);
// Pochylony tekst
  $str = preg_replace("#\[i\](.*?)\[/i\]#si", "<i>\\1</i>", $str);
// Podkreślony tekst
  $str = preg_replace("#\[u\](.*?)\[/u\]#si", "<u>\\1</u>", $str);
// Kolor tekstu
  $str = preg_replace("#\[color=(http://)?(.*?)\](.*?)\[/color\]#si"
, "<span style=\"color:\\2\">\\3</span>", $str);
// Odnośnik e-mail
  $str = preg_replace("#\[email\]([a-z0-9\-_.]+?)@([\w\-]
+\.([\w\-\.]+\.)?[\w]+)\[/email\]#i"
, "<a href=\"mailto:\\1@\\2\">\\1@\\2</a>
", $str);
// Odnośnik e-mail(własne definiowanie wyświetlanego tekstu)
  $str = preg_replace("#\[email=([a-z0-9\-_.]+?)@([\w\-]+\.([
\w\-\.]+\.)?[\w]+)?(.*?)\](.*?)\[/email\]
#i", "<a href=\"mailto:\\1@\\2\">\\5</a>", $str);
// Odnośnik, otwieranie w nowym oknie
  $str = preg_replace("#\[url\](.*?)?(.*?)\[/url\]#si", "<A HREF=\"\\1\\2\" TARGET=\"_blank\">\\1\\2</A>", $str);
// Odnośnik, otwieranie w nowym oknie, definiowanie treści odnośnika
  $str = preg_replace("#\[url=(.*?)?(.*?)\](.*?)\[/url\]#si", "<A HREF=\"\\2\" TARGET=\"_blank\">\\3</A>", $str);
// Automatyczne tworzenie linków
  $str = preg_replace_callback("#([\n ])([a-z]+?)://([a-z0-9\-\.,\?!%\*_\#:;~\\&
$@\/=\+]+)#si", "bbcode_autolink", $str);
  $str = preg_replace("#([\n ])www\.([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[a-z0-9\
-\.,\?!%\*_\#:;~\\&$@\/=\+]*)?)#i", " [ <a href=\"http://www.\\2.\\3\\4\" target=\"_blank\">www</a> ]", $str);
  $str = preg_replace("#([\n ])([a-z0-9\-_.]+?)@([\w\-]+\.([\w\-\.]
+\.)?[\w]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2_(at)_\\3<
/a>", $str);
// Słowo max 50 znaków
$str=wordwrap($str, 50, " ", 1);
return $str;
}

//autolink
function bbcode_autolink($str){
 $lnk=$str[3];
  if(strlen($lnk)>30){
  if(substr($lnk,0,3)=='www'){$l=9;}else{$l=5;}
  $lnk=substr($lnk,0,$l).'(...)'.substr($lnk,strlen($lnk)-8);}
return ' [ <a href="'.$str[2].'://'.$str[3].'" target="_blank" id="link">www</a> ]';
}

// usun tylko znaki html
function bbcode_no_html($str){
  $str = stripslashes($str);
  $str = str_replace("<", "&lt;", $str);      
  $str = str_replace(">", "&gt;", $str);
  $str = str_replace("'", "'", $str);  
  $str = str_replace("javascript", "java_script", $str);  
return $str;
}

Użytkownik adex edytował ten post 20 grudzień 2005, 17:35

0

  • 3 stron +
  • 1
  • 2
  • 3


Szybka odpowiedź

  

Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych


Zmień widoczność shoutboxa Shoutbox

emikyou  : (16 kwiecień 2012 - 13:26) @Ferrari: Na PŁ korzystają z "OpenGL SuperBible: Comprehensive Tutorial and Reference" i "OpenGL Programming Guide: The Official Guide to Learning OpenGL, Versions 3.0 and 3.1"
wtomczak  : (10 kwiecień 2012 - 09:27) masz problem z komputerem napisz na facebooku na stronie WT654, na pewno pomoże
Maciej :)  : (08 kwiecień 2012 - 09:36) A co do reklam, to mi na operze adBlock coś nie służy, szczególnie z postami bota redakcji :( od kiedy go dali, to zaczęło się walić..
Maciej :)  : (08 kwiecień 2012 - 09:35) Hej witam :) no, jak przestałem kupować Eksperta to wzięli i wstrzymali ;| także nie mam tylko numeru pierwszego i ostatniego :p trochę szkoda, parę lat się było...
neo5628  : (05 kwiecień 2012 - 21:57) Help http://forum.ks-ekspert.pl/topic/140746-problem-z-dzwiekiem/ Proszę
PiKey  : (21 marzec 2012 - 18:24) ludzie, pomóżcie :) http://forum.ks-ekspert.pl/topic/140418-jak-dziala-sprawdzanie-wykonania-zadania-na-stronach-typu-doladujse/
PiKey  : (21 marzec 2012 - 18:24) ds
A:-)Brunuś  : (17 marzec 2012 - 19:17) jest tu ktoś? http://forum.ks-ekspert.pl/topic/140400-firewire-obudowa-do-dysku-25-—-200-zlo/
Ferrari  : (16 marzec 2012 - 11:12) Polećcie dobrą książkę do OpenGL albo kurs w sieci :)
lisz55  : (15 marzec 2012 - 21:44) przez ktore reklamy? nie widze zeby jakies nowe byly
Pretender  : (15 marzec 2012 - 18:22) :/
Pretender  : (15 marzec 2012 - 18:22) az sie nie chce czytac tego forum przez te parszywe reklamy...ale dzidostwo zrobili...
yojo2  : (12 marzec 2012 - 13:26) wchodz na forum przez lynxa :P
Ferrari  : (10 marzec 2012 - 21:21) Jak tu nie korzystać z AdBlocka, kiedy Forum Eksperta wywala reklamę na całą stronę?
lisz55  : (09 marzec 2012 - 21:41) siedze i czytam calkiem niezle ale mogl by ktos wytlumaczyc o co chodzi z dark knightem nie widzialem tego filmu
lisz55  : (09 marzec 2012 - 21:40) to moze rozruszam troche czat http://moviesascode.net/
Pretender  : (06 marzec 2012 - 16:43) rozmowy tak jak Enty prowadziły w powieści Tolkiena :P
dawido90  : (05 marzec 2012 - 15:03) to już poprostu przyzwyczajenie
yojo2  : (04 marzec 2012 - 22:25) mailem przestac tu wchodzic, ale stwierdzilem ze skoro i tak zwykle tu tylko wchodze i wychodze, to wszystko jedno :P
Ferrari  : (04 marzec 2012 - 21:16) Już myślałem, że ruch na forum spada zera, a jednak pochodna zmieniła znak :)
Rozszerz pole shoutboxa