|
[ gagacar @ 11.07.2010. 01:54 ] @
| Pozdrav,
zamolio bih nekog ko moze da mi pomogne i ukaze gde gresim. Naime, imam neki php kod podrzan javascriptom za slanje komentara. Do sada je radila varijanta da se samo upise ime i tekst komentara i on se ispisuje. Medjutim, na mene je pao zadatak da ubacim i polje u kome se ispisuje verifikacioni kod. Glavni problem je sto to sam sve slozio u php-u, medjutim ne mogu da ubacim opciju u js funkciju da proveri i polje za verifikacioni kod.
Js funkcija glasi:
Code: <script language="javascript">
function add_br(string){
var str = "";
for(i=0; i<string.length; i++){
if(string[i] == '\n'){
str = str + '<br/>';
}
str = str + string[i];
}
return str;
}
function validate_komentar(){
var textarea = document.getElementById('textarea');
var textfield = document.getElementById('textfield');
var captcha = document.getElementById('pass_captcha');
if (textarea.value.length > 4 && textfield.value.length > 4 && captcha.value.length == 4){
document.forma1.submit();
return true;
}
alert('Niste dobro popunili polja!\nMorate popuniti oba polja sa najmanje pet znakova i uneti kontrolni kod');
return false;
}
</script>
pored toga postoji i php kod koji radi kako treba i daje verifikacioni kod:
Code: <?php
function generisi_random_string($length){
$alphaLowerArray = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
$alphaUpperArray = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
$numArray = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
$merged = array_merge($alphaLowerArray, $alphaUpperArray, $numArray);
$max = count($merged)-1;
$final = "";
for($i=0; $i<$length; $i++){
$char = $merged[rand(0, $max)];
$final .= $char;
}
return $final;
}
$resenje_testa = generisi_random_string(4);
?>
a html/php kod:
Code:
<form id="form3" method="post" action="#" name="forma1" id="forma1" onsubmit="return validate_komentar();" accept-charset="UTF-8">
Ime:
<input name="posetilac" id="textfield" class="textbox" value="<? echo $posetilac; ?>" style="width:480px; font-family:arial; font-size:10pt;">
Poruka:
<textarea name="sadrzaj" id="textarea" cols="45" rows="4" class="textbox" style="width:480px; font-family:arial; font-size:10pt;"><? if($captcha_prosao == false){ echo remove_br(stripslashes($HTTP_POST_VARS['sadrzaj'])); } ?></textarea>
Verifikacioni kod:
<?php echo "Upišite redom slovasa slike: ".$resenje_testa." ";?>
<input name="test" id="test" class="textbox" value="<? echo $test; ?>" >
<input type="submit" name="button" id="button" value="Pošalji komentar" />
</form>
Znaci problem je kako da u js funkciju validate_komentar() ubacim opciju da cita polje test i da uporedi da li je jednako sa dobijenim verifikacionim kodom tj. $resenje_testa?
Hvala unapred!!! |
[ kelja @ 11.07.2010. 10:03 ] @
Pa mislim da bi to moglo samo ajax-om da se odradi. Verifikacioni kod se kreira u php-u, i treba nekako javascript da ga ''iscita''. Odradi celu verifikaciju ajax-om, to je malo i sigurnije od obicnog javascripta.
[ gagacar @ 11.07.2010. 13:51 ] @
Je l' mozes nekim primerom da mi pomognes...Posto nikad nisam koristio Ajax...
[ kelja @ 11.07.2010. 21:56 ] @
Mogu, a taman koristim priliku da i sam vezbam JQuery AJAX funkcije  , koje su MILA MAJKA, u odnosu na ono sto bi morao da odradis 'cistim' javascriptom.
Malo ces morati da izmenis HTML strane... Izbacio sam javaskript funkcije za proveru, ali dodao php validaciju i kasicicu jquery-ja, koji odradjuje glavni pos'o...
Kompletna prva strana, za ostavljanje komentara (moras imati sesije ativirane!):
Code:
<?php
session_start();
function generisi_random_string($length){
$alphaLowerArray = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
$alphaUpperArray = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
$numArray = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
$merged = array_merge($alphaLowerArray, $alphaUpperArray, $numArray);
$max = count($merged)-1;
$final = "";
for($i=0; $i<$length; $i++){
$char = $merged[rand(0, $max)];
$final .= $char;
}
return $final;
}
$resenje_testa = generisi_random_string(4);
$_SESSION['kodic']= $resenje_testa;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript">
function ajax_call(){
//ovde saljes zapravo varijable sa forme get metodom na obradu php skriptu. ovo ($'ime').val(),
//zapravo bi u cistom javascriptu bilo document.getElementById.value(), valjda, ovako je znatno krace. :)
data='&ime='+$('#ime').val()+'&poruka='+$('#poruka').val()+'&kod='+$('#kod').val() ;
$('#result').load('provera.php', data);
}
</script>
</head>
<body>
<div id='result'></div>
<form method="post" name="forma1" id="forma1">
<p>Ime:
<input name="ime" id="ime" type="text" class="textbox" style="width:480px; font-family:arial; font-size:10pt;"></p>
<p>Poruka:
<textarea name="sadrzaj" id="poruka" cols="45" rows="4" class="textbox" style="width:480px; font-family:arial; font-size:10pt;"></textarea></p>
<p>Verifikacioni kod:
<?php echo $resenje_testa; ?><br />
<input name="test" id="kod" class="textbox" value="" ></p>
<p> <input type="button" name="button" id="button" value="Pošalji komentar" onclick="ajax_call();" /></p>
</form>
</body>
</html>
Dakle, skines svezi jquery i stavis ga u folder u kom ti se nalazi skript, primetices da sam dodao jedan div sa id-om 'result', tu mozes upozorenja da ispises na lepsi, i za korisnika manje stresan nacin, od iritirajucih popupa. 
Takodje, ne treba ti vise event onsubmit (zapravo, ne bi ovo ni radilo sa tim), samo onclick pozivas ajaxom php skriptu... I da, ako hoces POST metodom da saljes varijable, koristi JQuery post funkciju, po defaultu load funkcija salje podatke (ako ih ima) GET metodom...
I 'provera.php' fajl koji ces morati da dopises:
Code: <?php
session_start();
extract($_GET);
if(strlen($ime)<4) {
die( "<script>alert('morate uneti vise od 4 slova')</script>");
}
if(strlen($poruka)<4) {
die( "<script>alert('morate uneti vise od 4 slova')</script>");
}
if($_SESSION['kodic']!=$kod){
die("<script>alert('unesite tacan kod')</script>");
}
// dodaj zapisivanje komentara ili sta ti vec treba, ako je validacija prosla ok
?>
Pozdrav!
[ gagacar @ 18.07.2010. 02:02 ] @
Hvala druze, Pozdrav!!!
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|