Kompiuteriai Svetainės kūrimas

PHP, MYSQL pamokos

        

THa KeinuX

Forumo gyventojas
 
Pranešimai: 1200
Sun-City

 0.00 Lt

Standartinė » 2010 Geg 13, 20:10

Paprastas prisijungimas prie tam tikrų duomenų su sesijomis:
Taigi taigi, nauja pamoka. Ogi ką mes čia darysime? Na paprasčiausiai mes padarysime du kintamuosius $id ir $pw kuriuos naudodami prisijungsime prie puslapio, kad matytume slaptą tekstą, bei pasisveikinimą su mumis.

Pradėsim:
Paimsiu formą iš buvusios pamokos ir ją pakoreguosiu:

Kodas: Pasirinkti visus
<?php
echo '
<form action="index.php" method="POST">
<b>Vartotojo vardas:</b><br />
<input name="username" type="text" size="40" maxlength="15"><br />
<b>Slaptazodis:</b><br />
<input name="password" type="password" size="40" maxlength="15"><br />
<input name="send" type="submit" value="&#302;vesti">
</form>
';
?>

Atsirado dar viena eilutė:
Kodas: Pasirinkti visus
<b>Slaptazodis:</b><br />
<input name="password" type="password" size="40" maxlength="15"><br />

Na ir matome vienintelį pasikeitimą: type dabar yra password. Kodėl? Ogi todėl, kad mūsų ženklus paslėptų po *.

Na dabar priimame gautus duomenis:
Taipogi pakoreguosime buvusį formos priėmimą:
Kodas: Pasirinkti visus
<?php session_start() ?> // Ši dalis yra labai svarbi, be jos jūs neprisijungsite !!!!
<?php
$id = "test"; // Kintamasis kuris bus mūsų vartotojo vardas
$pw = "demo"; // Kintamasis kuris bus mūsų slaptažodį
$username = $_POST['username']; // Nustatome kintamajį, kuris yra įrašytas vardas
$password = $_POST['password']; // Nustatome kintamajį kuris yra įrašytas slaptažodis
if(isset($_POST['send'])){ // Viską vykdysime jei paspaustas mygtukas siųsti
if($username == ""){ // Tikriname ar username yra įvestas
print " Neivestas username"; // Jei ne parodome klaidą
}else{ // Toliau
if($password == ""){ // Tikriname ar įvestas password
print "Neivestas password"; // Jei ne parodome klaidą
}else{ // Toliau
if($username != $id){ // Jei nesutampa slapyvardis
print " Neteisingas username"; // Parodome klaidą
}else{ // Toliau
if($password != $pw){ // Jei nesutampa spaltažodis
print " Neteisingas password"; // Parodome klaidą
}else{ // Toliau
$_SESSION['loggedin'] = "YES"; // Sukuriame sesina ir ją pavadiname loggedin ir suteikiame reikšmę YES. Tai pasako, kad mes prisijungę
$_SESSION['name'] = "$username"; // Sukuriame sesiją, kuri saugos jūsų varotojo vardą.
header ("Location: index.php"); // Perkeliame jus į pagrindinį puslapį.
}}}} // Užbaigiame visus pradėtus {
print "<br><br><a href='index.php'> Atgal </a>"; // Sukuriame nuorodą atgal, kad ją rodytų visur.
}else{ // Toliau
?>

Šį kart viską paaiškinau prie formos su komentaro tag'ais.
Beje, dar kartelį tobuliname prisijungimo formą:
Kodas: Pasirinkti visus
<?php
if($_SESSION['loggedin']){ // Tikrina ar jis nėra prisijungęs, ir jei yra parodo sekančią dalį
print "Sveiki prisijunge, jusu vartotojo vardas yra ".$_SESSION['name']." // Jei jis prisijungęs parašo jo vartotojo vardą
<br> <a href='logout.php'> Atsijungti </a>"; // Sukurta nuoroda atsijungti (plačiau apie jos failą apačioje
}else{ // Jei neprisijungęs parodome prisijungimo formą
echo '
<form action="index.php" method="POST">
<b>Vartotojo vardas:</b><br />
<input name="username" type="text" size="40" maxlength="15"><br />
<b>Slaptazodis:</b><br />
<input name="password" type="password" size="40" maxlength="15"><br />
<input name="send" type="submit" value="&#302;vesti">
</form>
';
}
?>

Ir po viso šito padedame:
Kodas: Pasirinkti visus
<?php
}
?>


Taigi, dabar visas mūsų index.php faials atrodo šitaip:
Kodas: Pasirinkti visus
<?php session_start() ?>  // Ši dalis yra labai svarbi, be jos jūs neprisijungsite !!!!
<?php
$id = "test";
$pw = "demo";
$username = $_POST['username'];
$password = $_POST['password'];
if(isset($_POST['send'])){
if($username == ""){
print " Neivestas username";
}else{
if($password == ""){
print "Neivestas password";
}else{
if($username != $id){
print " Neteisingas username";
}else{
if($password != $pw){
print " Neteisingas password";
}else{
$_SESSION['loggedin'] = "YES";
$_SESSION['name'] = "$username";
header ("Location: index.php");
}}}}
print "<br><br><a href='index.php'> Atgal </a>";
}else{
?>
<?php
if($_SESSION['loggedin']){
print "Sveiki prisijunge, jusu vartotojo vardas yra ".$_SESSION['name']."
<br> <a href='logout.php'> Atsijungti </a>";
}else{
echo '
<form action="index.php" method="POST">
<b>Vartotojo vardas:</b><br />
<input name="username" type="text" size="40" maxlength="15"><br />
<b>Slaptazodis:</b><br />
<input name="password" type="password" size="40" maxlength="15"><br />
<input name="send" type="submit" value="&#302;vesti">
</form>
';
}
?>
<?php
}
?>


Na o dabar failas logout.php:
Jis atrodo šitaip:
Kodas: Pasirinkti visus
<?php session_start(); ?> // Vėl ši eilutė labai svarbi.
<?php
if($_SESSION['loggedin'] == YES){ // Jei jis prisijungęs, mes jį atjungsime
session_unset(); // Nuėmę sesijos reikšmę
session_destroy(); // Ir sunaikinę sesiją
header("Location: index.php"); // Taip pat perkelsime jį į index.php prisijungimą.
}
else{ // Jei jis nebuvo prisijungęs
header( "Location: index.php" ); // Nukreipiame į prisijungimo formą.
}
?>


Na štai ir viskas. Tokia pamoka. Atsiprašau, tačiau šį kart gana skubėjau, taigi pamoka sutrumpinta, be labai išsamių paaiškinimų.
Taigi, pagal pamoką turėjote suprasti, kaip prisijungti su vartotojo vardu ir slaptažodžiu, kurie yra kintamuosiuose.

Kita pamoka:
MYSQL duomenų bazės informacijos gavimas (Gauname vardą ir pavardę iš duomenų bazės).


Su pagarba MV (Modestas)

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


THa KeinuX

Forumo gyventojas
 
Pranešimai: 1200
Sun-City

 0.00 Lt

Standartinė » 2010 Geg 13, 20:22

Radau internete šiokį tokį script, kuris ir pagal laiką ir pagal dieną parašo tekstą:
Kodas: Pasirinkti visus
<?php

date_default_timezone_set('Europe/Copenhagen');

// Runs the function
echo time_str();

function time_str() {

        if(IsHoliday())
        {
            return ClosedHoliday();
        }           

    $dow = date('D'); // Your "now" parameter is implied

    if ($dow == 'Sat' || $dow == 'Sun') {
        // weekend
        return Closed();
    }

        // Time in HHMM
        $hm = (int)date("Gi");

        switch(strtolower($dow)){
                case 'mon': //MONDAY
                    if ($hm >=    0 && $hm <  800) return Closed();
                    if ($hm >=  800 && $hm < 1100) return Open();
                    if ($hm >= 1100 && $hm < 1500) return OpenDelay();
                    if ($hm >= 1500 && $hm < 1600) return Open();
                    if ($hm >= 1600 && $hm < 2359) return Closed();
                    break;
                case 'tue': //TUESDAY
                    if ($hm >=    0 && $hm <  800) return Closed();
                    if ($hm >=  800 && $hm < 1100) return Open();
                    if ($hm >= 1100 && $hm < 1500) return OpenDelay();
                    if ($hm >= 1500 && $hm < 1600) return Open();
                    if ($hm >= 1600 && $hm < 2359) return Closed();
                    break;             
                case 'wed': //WEDNESDAY
                    if ($hm >=    0 && $hm <  800) return Closed();
                    if ($hm >=  800 && $hm < 1100) return Open();
                    if ($hm >= 1100 && $hm < 1500) return OpenDelay();
                    if ($hm >= 1500 && $hm < 1600) return Open();
                    if ($hm >= 1600 && $hm < 2359) return Closed();
                    break;             
                case 'thu': //THURSDAY
                    if ($hm >=    0 && $hm <  800) return Closed();
                    if ($hm >=  800 && $hm < 1100) return Open();
                    if ($hm >= 1100 && $hm < 1500) return OpenDelay();
                    if ($hm >= 1500 && $hm < 1600) return Open();
                    if ($hm >= 1600 && $hm < 2359) return Closed();
                    break;             
                case 'fri': //FRIDAY
                    if ($hm >=    0 && $hm <  800) return Closed();
                    if ($hm >=  800 && $hm < 1100) return Open();
                    if ($hm >= 1100 && $hm < 1500) return OpenDelay();
                    if ($hm >= 1500 && $hm < 1600) return Open();
                    if ($hm >= 1600 && $hm < 2359) return Closed();
                    break;             

        }           
}

// List of holidays
function HolidayList()
{
    // Format: 2009/05/11 (comma seperated)
    return array("2010/05/04","2009/05/11");
}

// Function to check if today is a holiday
function IsHoliday()
{
  // Retrieves the list of holidays
    $holidayList = HolidayList();
  // Checks if the date is in the holidaylist   
    if(in_array(date("Y/m/d"),$holidayList))
    {
        return true;
  }else
    {
        return false;
    }   
}

// Returns the data when open
function Open()
{
        return 'Open';
}

// Return the data when closed
function Closed()
{
        return 'Closed';
}

// Returns the data when open but with waiting time
function OpenDelay()
{
        return 'Open, but with delay';
}

// Returns the data when closed due to holiday
function ClosedHoliday()
{
        return 'Lukket pga. helligdag';
}

?>


Bandyk koreguoti, ir gal pavyks. Nežinau kaip padaryti, kad pagal dieną (nesimokinau dar).

mode118

Patyręs forumietis
 
Pranešimai: 848

 717.84 Lt

Standartinė » 2010 Geg 14, 15:03

Sasha >
Kodas: Pasirinkti visus
<?
$vardai=Array("Darius","Jonas","Petras","Bronius","Juozas","Algis","Rimas");
echo $vardai[date("w")];
?>

$vardai[0] bus lygu "Jonas", $vardai[1] bus lygu Petras ir t.t.
O date("w") gražina 0 jei sekmadienis, 1 jei pirmadienis... 6 jei šeštadienis :)
Viskas :)

THa KeinuX

Forumo gyventojas
 
Pranešimai: 1200
Sun-City

 0.00 Lt

Standartinė » 2010 Geg 14, 15:04

Ačiū, kad papildei :)

Vartotojo avataras

Sasha

Patyręs forumietis
 
Pranešimai: 723
Šakių raj.

 4,903.31 Lt

Standartinė » 2010 Geg 14, 15:40

O man reik padaryt pvz : metinį vardadienių sąrašą. Na, kad kas dien rodytų vardadienius :roll:

mode118

Patyręs forumietis
 
Pranešimai: 848

 717.84 Lt

Standartinė » 2010 Geg 14, 17:53

Tai w pakeisk į z:
Kodas: Pasirinkti visus
<?
$vardai=Array("Darius","Jonas","Petras","Bronius","Juozas","Algis","Rimas");
echo $vardai[date("z")];
?>


date("z") - gražins metų dieną (0-365)

Arba dar galima su mėnesiais ir dienom:
Kodas: Pasirinkti visus
<?
$vardai=Array("NULL",Array("Sausis","1 d.","2 d.","3 d."),Array("Vasaris","1","2","3"),Array("Kovas","1","2","3"),Array("Balandis","1","2","3"),Array("Gegužė","1 d.","2 d.","3","3","3","3","3","3","3","3","3","3","3","14 d.","15 d.","16 d."));
echo $vardai[date("n")][date("j")];
?>


date("n") - gražins mėnesį (1-12)
date("j") - gražins dieną (1-31)

Šiandien bus atspausdinta šis kintamasis: $vardai[4][14] kuris lygus - "14 d.".
Tikiuosi suprasi.
Paskutinį kartą redagavo mode118 2010 Geg 14, 18:07. Iš viso redaguota 3 kartus.

Vartotojo avataras

Sasha

Patyręs forumietis
 
Pranešimai: 723
Šakių raj.

 4,903.31 Lt

Standartinė » 2010 Geg 14, 18:33

Ačiū, tikrai išaiškinai :rock: :up: bet su komentarų knyga (sorry) nepadėjai, bet pats kaltas, kad nieko nemoku :cry:

Vartotojo avataras

Sasha

Patyręs forumietis
 
Pranešimai: 723
Šakių raj.

 4,903.31 Lt

Standartinė » 2010 Geg 19, 18:09

Pamokų nieks nebeveda :lol:

THa KeinuX

Forumo gyventojas
 
Pranešimai: 1200
Sun-City

 0.00 Lt

Standartinė » 2010 Geg 20, 07:13

Jop, kaltas kadangi nebuvo laiko :)
Bandysim šiandien ką nors suskukt ;)

THa KeinuX

Forumo gyventojas
 
Pranešimai: 1200
Sun-City

 0.00 Lt

Standartinė » 2010 Geg 20, 16:38

MYSQL duomenų bazės informacijos gavimas (Gauname vardą ir pavardę iš duomenų bazės):
Sveiki, po trumpos pertraukos (dėl laiko stygiaus) paruošiau jums naują pamoką. Lyg ir turėtų viskas būti aišku.

Na nemokinu jūsų kurti duombazės, nes pamokų šiam dalykui yra ir lietuvių kalba :)
Na o dabar pradėsim:

Pirmiausia tai duomenų bazėje (norimoje lentelėje) įvykdome šį SQL procesą:

Kodas: Pasirinkti visus
CREATE TABLE vardai(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
vardas VARCHAR(30),
pavarde VARCHAR(30))

CREATE TABLE ... vietoje daugtaškio įrašome pavadinimą lentelės.
Toliau sukuriame laukelį id kuris kiekvieną kart prisidės po 1 skaičių ir bus pirminis, kuriuo naudodamiesi išrikiuosime vardus.
Toliau yra vardas ir pavardė, o varchar tai nurodo, kad gali būti bet kokie ženklai (skliaustuose kiek tu ženklų gali būti daugiausiai)

Na o dabar einame prie pačio gavimo:

Kodas: Pasirinkti visus
<?php
// Sukuriame prisijungimą prie duomenų bazės
mysql_connect("localhost", "slapyvardis", "slaptažodis") or die(mysql_error()); // Prisijungsime arba pamatysime error
mysql_select_db("vardai") or die(mysql_error()); // Pasirenkame lentelę vardai, gali būti ir kitos

// Paėmame visus duomenis iš duomenų bazės
$result = mysql_query("SELECT * FROM vardai ORDER BY id DESC")
or die(mysql_error());  // SELECT * žvaigždutė tam, kad paimtų visus duomenis FROM pavadinimas mūsų lentelės ORDER BY pagal ką rūšiuosime DESC naujesni viršuje.

echo "<table border='0'>";
echo "<tr> <th>Vardas</th> <th>Pavardė</th> </tr>";
// Vis gausime vardus, kol jų jau nebebus (gausime visus kurie tik yra)
while($row = mysql_fetch_array( $result )) {
   // Spausdiname viską lentelėje pagal tai kurioje vietoje jie turi būti
   echo "<tr><td>";
   echo $row['vardas'];
   echo "</td><td>";
   echo $row['pavarde'];
   echo "</td></tr>";
}
echo "</table>";
?>


Na įkėlius šį script į serverį mes matysime visus vardus kurie yra duomenų bazėje ir jie bus parodyti tinkamuose vietose.

Manau šiam kartui tiek. Šios pamokos pats nebuvau pabandęs, taigi jei neveikia ir yra klaida scripte praneškite ;) Pataisysiu.

Ačiū už dėmesį.


Kitoje pamokoje paprasta svečių knyga (Įrašysime komentarą, vardą ir pavardę į duomenų bazę ir atspausdinsime juos puslapyje)

Su pagarba MV (Modestas)

Vartotojo avataras

Sasha

Patyręs forumietis
 
Pranešimai: 723
Šakių raj.

 4,903.31 Lt

Standartinė » 2010 Bir 06, 18:16

Šits pravers :sweeet:

driveps

Lankytojas
 
Pranešimai: 4

 692.00 Lt

Standartinė » 2010 Bir 25, 19:25

Tai kur dingai, THa KeinuX? laukiam tavo kitos pamokos apie sveciu knyga

THa KeinuX

Forumo gyventojas
 
Pranešimai: 1200
Sun-City

 0.00 Lt

Standartinė » 2010 Bir 25, 21:09

Truputuką užsidirbau prie užsakymo, sorry. Šio savaitgalio bėgyje padarysiu šią pamoką :)


EDIT: Šį savaitgalį negaliu padaryti pamokos, nes kompiuteris tai veikia tai ne. Sorry, kai tik susitvarkys bus įdėta.

driveps

Lankytojas
 
Pranešimai: 4

 692.00 Lt

Standartinė » 2010 Bir 27, 23:31

na lauksim, lauksim :)

driveps

Lankytojas
 
Pranešimai: 4

 692.00 Lt

Standartinė » 2010 Lie 03, 23:36

jau praejo savaite nuo tavo paskutinio pranesimo. Kaip sekasi su pamoka?



Kompiuteriai Svetainės kūrimas





 
Dabar prisijungę

Šiuo metu prisijungę 0 narių :: 0 registruotų, 0 slaptų ir 0 svečių
Daugiausia vartotojų (812) buvo 2020 Bal 28, 22:08

Vartotojai naršantys šį forumą: Registruotų vartotojų nėra ir 0 svečių