Post Reply 
 
Thread Rating:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Ajax tutorijal
Author Message
zero Offline
Forumaš
***

Posts: 462
Joined: Jan 2008
Reputation: 10
Post: #1
Ajax tutorijal
Ajax (Asynchronous JavaScript and XML) je zapravo JavaScript u kojem koristimo neke nove funkcije, zbog cega bi bilo dobro da najprije znate JavaScript. Pomocu novih ajaxovih funkcija, javascript direktno komunicira s serverom. Mozemo koristiti sve server-side jezike, no kako znam najbolje php pokazati cu vam primjere s njime. Pogledajmo prvi primjer u kojem cemo ispisivati vrijeme s php-om:
HTML stranica (index.html):
Code:
<html>
<head>
<title>Ajax tutorijal</title>
<script type="text/javascript" src="ajax.js"></script>
</head>
<body>
<input type="button" value="Klikni za vrijeme!" onClick="vrijeme()" />
<div id="vrijeme"></div>
</body>
</html>
Code:
<script type="text/javascript" src="ajax.js"></script>
-pozivamo skriptu ajax.js
Code:
<input type="button" value="Klikni za vrijeme!" onClick="vrijeme()" />
-klikom na dugme pozivamo javascript funkciju vrijeme()
Code:
<div id="vrijeme"></div>
-u ovom divu se ispisuje odgovor na funkciju vrijeme()


JavaScript stranica (ajax.js):
Code:
var xmlhttp;

function vrijeme()
{
xmlhttp=objekt();
if (xmlhttp==null)
{
alert ("Browser vam ne podrzava ajax (http request).");
return;
}
var url="vrijeme.php"+"?sid="+Math.random();
xmlhttp.onreadystatechange=promjena;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function promjena()
{
if (xmlhttp.readyState==4)
{
document.getElementById("vrijeme").innerHTML=xmlhttp.responseText;
}
}

function objekt()
{
if (window.XMLHttpRequest)
{
// IE7+, Firefox, Chrome, Opera, Safari
return new XMLHttpRequest();
}
if (window.ActiveXObject)
{
// IE6, IE5
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}
Code:
if (xmlhttp==null)
{
alert ("Browser vam ne podrzava ajax (http request).");
return;
}
-provjeravamo podrzava li korisnikov browser ajax
Code:
var url="vrijeme.php"+"?sid="+Math.random();
-odredjujemo u kojoj datoteci se nalazi PHP kod
Code:
xmlhttp.onreadystatechange=promjena;
-promjenom stanja u kojem se nalazi slanje xmlhttp upita pozivamo funkciju promjena(). Procitajte vise o tome na w3schools.com:
Quote:State---Description
0-------The request is not initialized
1-------The request has been set up
2-------The request has been sent
3-------The request is in process
4-------The request is complete
Code:
xmlhttp.open("GET",url,true);
-saljemo varijable putem GET metode na vec prije odredjeni url (vrijeme.php)
Code:
if (xmlhttp.readyState==4)
{
document.getElementById("vrijeme").innerHTML=xmlhttp.responseText;
}
-tek kada je zahtjev gotov ispisujemo odgovor u DIV vrijeme.
Code:
if (window.XMLHttpRequest)
{
// IE7+, Firefox, Chrome, Opera, Safari
return new XMLHttpRequest();
}
if (window.ActiveXObject)
{
// IE6, IE5
return new ActiveXObject("Microsoft.XMLHTTP");
}
-odredjujemo korisnikov browser te prema njemu odredjujemo koja funkcija treba biti koristena


PHP stranica (vrijeme.php):
Code:
<?php $x = time() ?>
Sada je <?php echo date("H", $x); ?> sati, <?php echo date("i", $x); ?> minuta i <?php echo date("s", $x); ?> sekundi.
<br /><?php echo date("H:i:s", $x); ?>
-ispisujemo vrijeme

Sljedeci put cemo se malo pozabaviti sa slanjem varijabla iz HTML-a u PHP i bazom podataka. Ako imate pitanja pitajte ovdje ili saljite pp. Takodjer, evo zippano sve skupa:

.rar  ajax.rar (Size: 839 bytes / Downloads: 6)

Brzo. Jeftino. Kvalitetno. Izaberi dva!
(This post was last modified: 25-11-2009 05:55 PM by zero.)
25-11-2009 03:32 PM
Find all posts by this user Quote this message in a reply
zero Offline
Forumaš
***

Posts: 462
Joined: Jan 2008
Reputation: 10
Post: #2
RE: Ajax tutorijal
Idemo malo sada se pozabaviti s bazom podataka (mysql). Uglavnom je princip isti, samo sto cemo sada slati varijable u PHP (ovaj put necu objasnjavati stvari koje su vec objasnjene). Napraviti cemo jednu formu i provjeravati je li vec iskoristen username i je li email validan (korisno za registraciju korisnika):

HTML stranica (index.html):
Code:
<html>
<head>
<title>Ajax tutorijal</title>
<script type="text/javascript" src="ajax.js"></script>
</head>
<body>
<form action="registracija.php" method="POST">
Username: <input type="text" id="user" name="user" onKeyUp="provjera(this.value, 'user');" /><span id="provjerauser"></span>
<br />E-mail: <input type="text" id="email" name="email" onKeyUp="provjera(this.value, 'email');" /><span id="provjeraemail"></span>
</form>
</body>
</html>
Code:
<input type="text" id="user" name="user" onKeyUp="provjera(this.value, 'user');" />
-s onKeyUp pozivamo funkciju provjera() svaki put kada se upise neko slovo ili broj (opcenito nesto za pisanje). Saljemo varijable u kojima je tekst polja i u drugoj je samo "user". Isto ovo vrijedi i za provjeru e-maila.
Code:
<span id="provjerauser">
-ovdje ce biti ispisan rezultat. Isto ovo vrijedi i za provjeru e-maila.

JavaScript stranica (ajax.js):
Code:
var xmlhttp;

function provjera(x, y)
{
xmlhttp=objekt();
if (xmlhttp==null)
{
alert ("Browser vam ne podrzava ajax (http request).");
return;
}
var url="provjera.php?x="+ x +"&y="+ y +"&sid="+ Math.random();
xmlhttp.onreadystatechange=promjena;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
koji = y;
}

function promjena()
{
if (xmlhttp.readyState==4)
{
document.getElementById("provjera" + koji).innerHTML=xmlhttp.responseText;
}
}

function objekt()
{
if (window.XMLHttpRequest)
{
// IE7+, Firefox, Chrome, Opera, Safari
return new XMLHttpRequest();
}
if (window.ActiveXObject)
{
// IE6, IE5
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}
Code:
function provjera(x, y)
-'opisujemo' funkciju provjera() u kojoj prilikom pozivanja moraju biti upisani x i y (to su varijable)
Code:
var url="provjera.php?x="+ x +"&y="+ y +"&sid="+ Math.random();
-opcenito, kada saljemo varijable GET metodom one su vidljive u url-u. Upravo to i radimo ovdje.
Code:
koji = y;
-upisujemo u varijablu koji vrijednost varijable y
Code:
document.getElementById("provjera" + koji).innerHTML=xmlhttp.responseText;
-kada je zahtjev gotov upisujemo ga u DIV provjerauser ili provjeraemail

PHP stranica (baza.php):
Code:
<?php
$con = mysql_connect("server","user","lozinka");
if (!$con)
{
die(mysql_error());
}
?>
-konfiguracije za mysql

PHP stranica (provjera.php):
Code:
<?php
$tekst = $_GET["x"];
$y = $_GET["y"];

if ($y == "user")
{
require ("baza.php");
mysql_select_db("igre", $con);

$rezultat = mysql_query("SELECT * FROM user WHERE nick='$tekst'");
$provjera = 1;

while($mysql = mysql_fetch_array($rezultat))
{
$provjera++;
}

if ($provjera == 1)
{
echo "-nije zauzeto";
}
else
{
echo "-username je zauzet";
}
mysql_close($con);
}
elseif ($y == "email")
{
if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $tekst))
{
echo "-uneseni email nije ispravan";
}
else
{
echo "-uneseni email je ispravan";
}
}
?>
Code:
$tekst = $_GET["x"];
$y = $_GET["y"];
-ucitavamo x i y varijable koje su poslane GET metodom i upisujemo ih u $tekst i $y
Code:
if ($y == "user")
-ako je poslana varijabla y u kojoj je "user" onda vrsimo sljedeci kod
Code:
require ("baza.php");
mysql_select_db("baza", $con);

$rezultat = mysql_query("SELECT * FROM user WHERE nick='$tekst'");
$provjera = 1;

while($mysql = mysql_fetch_array($rezultat))
{
$provjera++;
}

if ($provjera == 1)
{
echo "-nije zauzeto";
}
else
{
echo "-username je zauzet";
}
mysql_close($con);
-cista logika. Nije potrebno previse objasnjavati jer je ovo ipak ajax tutorijal
Code:
elseif ($y == "email")
-ako je poslana varijabla y u kojoj je "email" onda vrsimo sljedeci kod
Code:
if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $tekst))
{
echo "-uneseni email nije ispravan";
}
else
{
echo "-uneseni email je ispravan";
}
-provjera je li email u dopustenom obliku (ovo sam preuzeo od negdje)


Evo opet kazem da ako imate pitanja pitate ovdje ili posaljete pp. Takodjer, evo zippano sve skupa:

.rar  ajax.rar (Size: 1.31 KB / Downloads: 5)

Brzo. Jeftino. Kvalitetno. Izaberi dva!
25-11-2009 06:38 PM
Find all posts by this user Quote this message in a reply
schmrz Offline
____
*

Posts: 569
Joined: Feb 2007
Post: #3
RE: Ajax tutorijal
Svaka čast na trudu, ovo se cijeni. Nemam vremena da sad preletim preko tutorijala ali sam onako usput vidjeo da proslijeđuješ unos od korisnika direktno u sql upit što predstavlja prozor za sql injection napad pa obrati pažnju na to (možda bi bio overkill da si to radio u ovom primjeru ali inače u svojim nekim projektima ovo nemoj nikada raditi) Namigivanje

I have no drinking problems. I drink. Get drunk. Fall down. NO PROBLEM
Registered As Linux User #484215
Moj skromni blog
Savjet za buduće programere: ovdje
25-11-2009 09:48 PM
Find all posts by this user Quote this message in a reply
kecko Offline
Forumaš
***

Posts: 655
Joined: Nov 2009
Reputation: 20
Post: #4
RE: Ajax tutorijal
ma može to raditi... glupo je da svaki put i to provjerava kad kroz ini postavku se riješava toga u potpunosti...
a i ta ini postava po defaultu filtrira sve $_GET,$_POST,$_COOKIES varijable tak a tu nema greška... pogotovo što je ta postavka (magic_quotes_gpc) po defaultu uključena već par godina a u php5.3 postala "deprecate" i u verziji 6 više neće ni postojati tako da nema straha oko ovog Namigivanje na početku samo provjeri postavku i to je to Namigivanje
inače svaka čast na trudu
26-11-2009 09:28 AM
Find all posts by this user Quote this message in a reply
schmrz Offline
____
*

Posts: 569
Joined: Feb 2007
Post: #5
RE: Ajax tutorijal
E upravo zato se i ne koristi magic quotes jer je to lažna sigurnost i za određeni set znakova ne radi. A možda si pomješao značenje deprecated glagola jer to znači da je neodobrena, da se ne preporučuje korištenje iste a u PHP6 će biti potpuno izbačen jer je donjeo više loše prakse programerima koji su se oslanjali na to par godina, nego što je doprinjeo sigurnosti php web aplikacija. :) Znači, sa dolaskom PHP6, magic quotes idu na mala vrata brzim postupkom.

I have no drinking problems. I drink. Get drunk. Fall down. NO PROBLEM
Registered As Linux User #484215
Moj skromni blog
Savjet za buduće programere: ovdje
26-11-2009 11:01 AM
Find all posts by this user Quote this message in a reply
zero Offline
Forumaš
***

Posts: 462
Joined: Jan 2008
Reputation: 10
Post: #6
RE: Ajax tutorijal
Znam za to, no nisam htio zbunjivati ljude time. Ako netko koristi php te sam radi cms u kojem se registriraju korisnici onda ce valjda shvatiti gresku ovdje :).

Brzo. Jeftino. Kvalitetno. Izaberi dva!
(This post was last modified: 26-11-2009 01:04 PM by zero.)
26-11-2009 01:02 PM
Find all posts by this user Quote this message in a reply
kecko Offline
Forumaš
***

Posts: 655
Joined: Nov 2009
Reputation: 20
Post: #7
RE: Ajax tutorijal
schmrz Wrote:E upravo zato se i ne koristi magic quotes jer je to lažna sigurnost i za određeni set znakova ne radi. A možda si pomješao značenje deprecated glagola jer to znači da je neodobrena, da se ne preporučuje korištenje iste a u PHP6 će biti potpuno izbačen jer je donjeo više loše prakse programerima koji su se oslanjali na to par godina, nego što je doprinjeo sigurnosti php web aplikacija. :) Znači, sa dolaskom PHP6, magic quotes idu na mala vrata brzim postupkom.
hm pa u verziji 4.x su oni po defaultu uključili magic quotes i sve se filtrira... koliko vidim i u verziji 5.2 ista stvar...
ne kodiram u php-u već više godinu dana, ali mislio sam ako kaže deprecated i da će ju maknuti da to znaći da ju više opće nemožeš isključit i da će svi podaci automatski biti filtrirani...
velim van php-a sam više godinu dana pa nisam isprobao ali baš ću poslije vidit o čem se radi...
ASP.NET to puno ljepše rješava sa parametrima... nemaš nikakve brige...

EDIT:
da u pravu si od verzije 5.3 je off dok je još u 5.2 bila po defaultu on...
uh al će bit zavrzlama kod updateanja servera :))) donijet će to mnogo problema mnogim skriptama
(This post was last modified: 27-11-2009 09:00 AM by kecko.)
27-11-2009 08:55 AM
Find all posts by this user Quote this message in a reply
yoursql Offline
Novi korisnik
*

Posts: 3
Joined: Dec 2008
Reputation: 0
Post: #8
RE: Ajax tutorijal
Svaka cast za tutorijal. Nego da li postoji neka knjiga ili prevod na nekom od nama poznatih jezika po mogucnosti vezano za Ajax tehnologiju, znaci gdje je sve objasnjeno, od istorije preko javascripta,DOM,XML itd. Treba mi toliko literature da se moze napisati rad o ajaxu od 35-50 strana. Hvala unaprijed
29-09-2010 12:56 AM
Find all posts by this user Quote this message in a reply
zero Offline
Forumaš
***

Posts: 462
Joined: Jan 2008
Reputation: 10
Post: #9
RE: Ajax tutorijal
Uff. Tesko da ce biti na nasem jeziku. Mozda ipak bolje da ako razumijes engleski da probas na taj nacin?

Brzo. Jeftino. Kvalitetno. Izaberi dva!
29-09-2010 07:42 PM
Find all posts by this user Quote this message in a reply
yoursql Offline
Novi korisnik
*

Posts: 3
Joined: Dec 2008
Reputation: 0
Post: #10
RE: Ajax tutorijal
Razumijem ali ipak bih prvo da pregledam na nasem sta ima pa onda na engleskom, nasao sam nesto ipak. Hvala u svakom slucaju
30-09-2010 02:34 PM
Find all posts by this user Quote this message in a reply
Post Reply 


Forum Jump:


User(s) browsing this thread: 1 Guest(s)