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