WebDeveloper
 g│≤wna | forum manual | skrypty |  artyku│y |  projekty | porady |  zasoby |  linki 
dzia│y
  •  manual PHP
  •  skrypty PHP
  •  artyku│y
  •  projekty
  •  porady
  •  zasoby
  •  linki
  •  
    forum
  •  php
  •  apache
  •  mysql
  •  postgresql
  •  faq php
  •  pomocnik php
  •  
    archiwum
  • Nowy dzia│: porady !
  • Kurs PHP
  • Zapisz siΩ na nasz newsletter !
  • Serwery obs│uguj▒ce PHP !
  • Nadchodz▒ zmiany!
  • Zosta± wsp≤│tw≤rc▒ PHP.zone.pl !
  • Jest PHP 4.0.1 !
  • MySql na licencji GPL !
  • Konfiguracja serwera!
  • Forum dyskusyjne otwarte !
  • redakcja

    Je╢li masz ciekawe informacje odno╢nie PHP, skrypty, porady, linki itp. lub chcia│by╢ wsp≤│tworzyµ serwis PHP.zone.pl daj nam znaµ na email !



    dodaj poradΩ !


    Powered by:
    PHP
    Apache
    MySql
    Linux

    users online: 8

    Kartki Internetowe
    ( 07. Listopad 2000)
    ( Tomasz Go│embiewski )

    W niniejszym artykule chcia│ bym zaprezentowaµ aplikacjΩ "Kartki Internetowe" napisane w naszym ulubionym jΩzyku skryptowym czyli w PHP przez moj▒ skromn▒ osobΩ.

    1.Czego nam potrzeba ┐eby zacz▒µ:
    Serwera z zainstalowanym php z obs│ug▒ Mysqla.
    BazΩ danych Mysql - ja mam wersje 3.23.10 akurat,
    Jak zainstalowaµ wy┐ej wymienione oprogramowanie znajdziecie tu <link do artyku│≤w o instalacji :) najlepiej>

    Je╢li mamy ju┐ powy┐sze programy zainstalowane, czas wyja╢niµ zasadΩ dzia│ania naszego male±kiego serwisu.
    2. Zasada dzia│ania.
    Jest bardzo prosta. Dzia│anie programiku sprowadza siΩ do tego ┐e w wypadku wybrania jakiej╢ kartki przez u┐ytkownika zapisujemy do bazy danych wszystkie dane wpisane przez wysy│aj▒cego kartkΩ w formularzu wysy│ania, wraz z wygenerowanym losowym numerem. Odbiorcy kartki wysy│amy rzeczony numer wraz z adresem strony, kt≤ra na podstawie numeru wy╢wietli odpowiedni▒ kartkΩ razem z jej danymi, zapisanymi przez wysy│aj▒cego w bazie danych.

    To tyle og≤lnego opisu teraz szczeg≤│y.
    Nasza aplikacja sk│ada siΩ z siedmiu skrypt≤w. Podzieli│em je na dwie grupy.
    Pierwsza z nich to skrypty bezpo╢rednio wy╢wietlaj▒ce wyniki swojego dzia│ania u┐ytkownikowi.
    Druga grupa to pliki w katalogu include, kt≤re to s▒ do│▒czone do plik≤w z 1 grupy w miarΩ potrzeb.

    Pierwsza grupa to pliki:
    index.php; ogladnij.php; wybierz.php; zapodaj.php
    Druga grupa:
    config.php;functions.php;naglowek.php

    Co robiΩ poszczeg≤lne pliki.
    index.php - jest to skrypt kt≤ry jak sama nazwa wskazuje jest uruchamiany jako pierwszy, wy╢wietla on wszystkie zawarte w bazie danych kartki jako miniaturki, kt≤re s▒ linkami do strony, gdzie mo┐na ogl▒dn▒ du┐▒ wersjΩ kartki oraz wys│aµ j▒ komu╢.

    ogladnij.php - strona gdzie mo┐na ogl▒dn▒µ du┐▒ wersjΩ kartki

    wybierz.php - formularz wysy│aj▒cy dana kartkΩ

    zapodaj.php - strona wy╢wietlaj▒ca odbiorcy przes│an▒ mu kartkΩ

    config.php - skrypt ze zmiennymi konfiguracyjnymi aplikacji: polecam wszystkim umieszczanie takiego skryptu w pisanych aplikacjach.
    functions.php - przydatne i do│▒czane funkcje

    naglowek.php - nag│≤wek i stopka do│▒czana na ka┐dej stronie.

    3.Baza danych

    zawarto╢µ pliku kartki.sql:







    ################################################################################

    # MySQL dump 7.0
    #
    # Host: localhost Database: kartki
    #--------------------------------------------------------
    # Server version 3.23.10-alpha-log

    #
    #
    # Table structure for table 'data'
    #
    CREATE TABLE data (
    random_id varchar(50) DEFAULT '' NOT NULL,
    kartka_id int(4),
    email_from varchar(100),
    email_for varchar(100),
    naglowek varchar(100),
    tresc text,
    podpis varchar(50),
    data timestamp(6),
    PRIMARY KEY (random_id)
    );

    #
    # Table structure for table 'obrazki'
    #
    CREATE TABLE obrazki (
    id int(6) NOT NULL auto_increment,
    kategoria varchar(50),
    autor varchar(100),
    tytul varchar(30),
    nowosc tinyint(4),
    ile int(16) DEFAULT '0',
    PRIMARY KEY (id)
    );

    #
    # Dumping data for table 'obrazki'
    #

    INSERT INTO obrazki VALUES (1,'calusne','... z kra±c≤w ªwiata','Autor',0,-10);
    INSERT INTO obrazki VALUES (2,'bimbaly','Piraci','Autor',NULL,0);



    Jak widaµ do dzia│ania naszej aplikacji wystarczaj▒ dwie tabele w bazie danych: 'data' i 'obrazki'.
    W tabeli obrazki zawarte s▒ wszystkie nasze kartki i ich dane, Ja przyj▒│em zasadΩ ┐e numer ID jest jednocze╢nie nazw▒ danej kartki, jest to chyba najprostszy spos≤b przechowywania informacji o pikach graficznych (i nie tylko) w bazie danych. Ka┐da dodana kartka musi mieµ numer taki jak nazwa pliku j▒ zawieraj▒ca.
    Tyle mojego komentarza, nie bΩdΩ tu opisywa│ wszystkich skrypt≤w po kolei poniewa┐ stara│em siΩ
    opisaµ wszystko w ╝r≤d│ach bardzo dok│adnie. Gor▒co polecam wszystkim tworzenie pliku konfiguracyjnego, w kt≤rym umieszcza siΩ zmienne powtarzaj▒ce siΩ w ca│ej aplikacji, u│atwia to sprawΩ gdy trzeba np. Dostosowaµ aplikacje do pracy na innym hoscie.
    Wszystkie skrypty s▒ banalnie proste jedyny troszkΩ d│u┐szy to skrypt wysy│aj▒cy kartkΩ.

    <?
    global $random_id;
    $random_id = md5(uniqid(rand())); //generowanie unikalnego numeru

    include("include/config.php"); #plik configuracyjny ze zmiennymi uzywanymi w calej aplikacji

    header("Content-type: text/html; charset=iso-8859-2".$strona_kodowa.""); #specjalnie dla netscape wysylamy naglowek
    #ze strona kodowa, miewa on czasem z tym problemy
    include("include/functions.php"); #dolaczamy pliki z naglowkiem , funkcjami przydatnymi
    include("include/naglowek.php");

    naglowek("Kartki - wersja dla serwisu http://webdev.zone.pl/",0); #ta funcja wyswietli caly naglowek naszej strony

    ######################################################################################################
    # Zawartosc strony
    ######################################################################################################

    if($poslij==1) #sprawdznie czy formularz "submitowano"
    { #jesli tak to umieszczamy wybrana kartke wraz z trescia i danymi w tabeli data
    if(strlen($email_from)>0&&strlen($email_for)>0&&strlen($tresc)>0&&strlen($naglowek)>0&&strlen($podpis)>0)
    {
    $zaputanie="insert into data (random_id,kartka_id,email_from,email_for,naglowek,tresc,podpis)values ('$random_id','$kartka_id','$email_from','$email_for','$naglowek','$tresc','$podpis')";
    $result=conn($zaputanie);
    }
    else
    die("<h3 align=center><font size=2 color=orange><br><br><br><br><br><br><br><br><br><br>ProszΩ wype│nij poprawnie formularz!<br><br><a href=\"javascript:history.go(-1)\">Powr≤t</a></h3></font></body></html>");

    if($result)
    {


    poslij_kartke($email_for,$email_from,$message,$naglowek);#wysylanie kartki i potwierdzenia

    die("<h3 align=center><font size=2 color=orange><br><br><br><br><br><br><br><br><br><br>Kartka zosta│a wys│ana!
    <br><br><a href=\"javascript:window.close()\">Zamknij</a></h3></font></body></html>");
    }
    else
    die("Wystapi│ ca│kiem niespodziewany b│▒d! :P!</body></html>");
    }
    else #wyswietlanie calej strony po wejsciu na nia
    print("<FORM method='post' action=\"wybierz.php?poslij=1&naglowek=".urlencode($naglowek)."&kartka_id=".urlencode($kartka_id)."&email_from=".urlencode($email_from)."&email_for=".urlencode($email_for)."&tresc=".urlencode($tresc)."&podpis=".urlencode($podpis)."\"> ");

    #uciekamy z PHP bo za duzo print i echo by trzeba robic a to zaciemnie obaz sytuacji
    ?>
    <br>
    <div><font face=verdana size=1 color=orange><b>
    &nbsp;Dla:</font></b>
    </div>
    <table>
    <tr>
    <td width="40%" align="right" valign="middle" class="poslij"><font face=verdana size=1 color=orange><b>ImiΩ i nazwisko:&nbsp;</font></b></td>
    <td width="60%" align="left" valign="middle" ><input class="form" type="text" size="25" maxlength=100 name="naglowek">
    </td>
    </tr>
    <tr>
    <td width="40%" align="right" valign="top" class="poslij"><font face=verdana size=1 color=orange><b>e-mail:&nbsp;</font></b></td>
    <td width="60%" align="left" valign="middle" >
    <input class="form" type="text" name="email_for" maxlength="100" size="25">
    </td>
    </tr>
    <tr>
    <td colspan="2">&nbsp;</td>
    </tr>
    <tr>
    <td colspan="2" align="left" valign="middle" ><font face=verdana size=1 color=orange><b>Od:</b></font></td>
    </tr>
    <tr>
    <td width="40%" align="right" valign="middle" class="poslij"><font face=verdana size=1 color=orange><b>ImiΩ i nazwisko:&nbsp;</font></b></td>
    <td width="60%" align="left" valign="middle" ><input class="form" type="text" maxlength="100" name="podpis" size="25" ></td>
    </tr>
    <tr>
    <td width="40%" align="right" valign="middle" class="poslij"><font face=verdana size=1 color=orange><b>e-mail:&nbsp;</font></b></td>
    <td width="60%" align="left" valign="middle" ><input class="form" type="text" maxlength="100" name="email_from" size="25" ></td>
    </tr>
    <tr>
    <td colspan="2">&nbsp;</td>
    </tr>
    <tr>
    <td colspan="2" align="left" valign="middle"><font face=verdana size=1 color=orange><b>Tre╢µ:</font></b></td>
    </tr>
    <tr>
    <td colspan="2" align="center" valign="middle" ><textarea class="area" name="tresc" rows="2" cols="31"></textarea></td>
    </tr>
    <td width="40%"></td>
    <td align="right" width="60%"><font face=verdana size=1><input class="baton" type=submit value=Wy╢lij></font>
    </td>
    </tr>
    <tr>
    <td align="center" valign="middle">&nbsp;</td>
    </tr>
    <tr>
    </tr>
    </table>
    </form>
    </body>
    </html>
    #######################################################################################################################
    Szczerze m≤wi▒c nie wiem co mo┐e sprawiµ tu problem :), ale chcΩ zwr≤ciµ uwagΩ na jeden motyw. Skrypt sk│ada siΩ z dw≤ch czΩ╢ci: pierwsza to nasz formularz wy╢wietlany zaraz po za│adowaniu strony, druga czΩ╢µ skryptu jest uruchamiana w momencie przes│ania formularza na serwer, w formularzu wysy│amy zmienn▒ $poslij i nadajemy jej warto╢µ 1.

    #############################################################################
    if($poslij==1) #sprawdznie czy formularz "submitowano"
    { #jesli tak to umieszczamy wybrana kartke wraz z trescia i danymi w tabeli data
    if(strlen($email_from)>0&&strlen($email_for)>0&&strlen($tresc)>0&&strlen($naglowek)>0&&strlen($podpis)>0)
    {
    $zaputanie="insert into data (random_id,kartka_id,email_from,email_for,naglowek,tresc,podpis)values ('$random_id','$kartka_id','$email_from','$email_for','$naglowek','$tresc','$podpis')";
    $result=conn($zaputanie);
    }
    else
    die("<h3 align=center><font size=2 color=orange><br><br><br><br><br><br><br><br><br><br>ProszΩ wype│nij poprawnie formularz!<br><br><a href=\"javascript:history.go(-1)\">Powr≤t</a></h3></font></body></html>");

    if($result)
    {


    poslij_kartke($email_for,$email_from,$message,$naglowek);#wysylanie kartki i potwierdzenia

    die("<h3 align=center><font size=2 color=orange><br><br><br><br><br><br><br><br><br><br>Kartka zosta│a wys│ana!
    <br><br><a href=\"javascript:window.close()\">Zamknij</a></h3></font></body></html>");
    }
    else
    die("Wystapi│ ca│kiem niespodziewany b│▒d! :P!
    </body></html>");
    }

    Jak widaµ druga czΩ╢µ skryptu jest przed pierwsz▒ :). Najpierw sprawdzamy czy zmienna $poslij ma
    warto╢µ 1 je╢li nie to wy╢wietlamy formularz, je╢li tak to realizujemy 2 czΩ╢µ, kt≤ra wysy│a maile i dodaje do bazy kartkΩ, wraz ze wszystkimi jej danymi potrzebnymi by adresat m≤g│ sobie przeczytaµ
    ┐yczenia i ogl▒dn▒µ sobie swoj▒ kartkΩ.
    Kolejny motyw :)
    Sprawdzanie czy wszystkie pola formularza s▒ wype│nione:
    if(strlen($email_from)>0&&strlen($email_for)>0&&strlen($tresc)>0&&strlen($naglowek)>0&&strlen($podpis)>0)
    Najprostsze z mo┐liwych sprawdzenie bez weryfikacji danych (np. email'a), sprawdzamy tylko czy co╢ w og≤le jest wpisane.
    I to chyba ju┐ wszystko. Skrypty s▒ naprawdΩ banalnie proste i chyba dobrze skomentowane.
    W razie jaki╢ uwag do tekstu czy tez do prezentowanej aplikacji proszΩ ╢mia│o pisaµ nadzieja@talematros.jeremi.pl najlepiej ze s│owem artyku│ w nag│≤wku.
    Pe│na wersja tej aplikacji pracuje sobie na stronie www.lakowa.prv.pl :)

    Tomasz Go│embiewski





    komentarze | strona g│≤wna






    kontakt

    autor:

    Hubert Mierzwiak

    wsp≤│praca:

    Piotr Karolak

    Chcesz prowadziµ sw≤j dzia│ tematyczny typu XML, SQL, admin, JavaScript, itp?
    Napisz do nas !
     
    skrypty
  • designer.zip
  • vipAuth.tgz
  • phpCenzura.tgz
  • vip_php.tgz
  • pomocnik_light
  • ankieta
    Co s▒dzisz o stworzeniu FAQ PHP?
    super!
    po co?

    poprzednie

    newsletter

    wpisz sw≤j email i wci╢nij Enter

    linuxnews.pl
  • KRRiTV stra┐nikiem!?
  • Dzisiejsze zebranie...
  • Felieton w warunkach ekstremalnych
  • Nexidion Designer
  • Solaris OpenSource
  • KDE 2.0.1
  • Jest ju┐ nowy Debian...
  • Tydzie± min▒│...




  • Manual | Skrypty | Artyku│y | Projekty
    Porady | Zasoby | Linki
    G│≤wna | Forum

    Copyright 2000 Hubert Mierzwiak