View Single Post
ישן 05-01-09, 10:06   # 9
OrPol
א.פורום תוכנה
עסק רשום
 
OrPol's Avatar
 
מיני פרופיל
תאריך הצטרפות: Aug 2006
הודעות: 1,979

OrPol לא מחובר  

ציטוט:
נכתב במקור על ידי nitsanbn צפה בהודעה
אין קשר לRECAPTCHA
הוא מתכוון שיעשו לו SUBMIT לטופס מבחוץ.. סוג של X/CSRF

תעבוד עם TOKEN-ים
תחזיק איזה MD5 של משהו ייחודי בסשן, תזרוק אותו בטופס בתור ערך מוסתר ותשווה ביניהם בבדיקה
כאשר הטופס באותו עמוד של הכנסת הנתונים למסד, זה קשור בהחלט.
אתה מכניס את הRECHAPTA כתנאי להכנסת נתונים למסד,
כמו פה:
קוד:
                                                                                                           <?php
include("config.php") ;
include("dblib.php") ;
include("sessions.php") ;

require_once('recaptchalib.php');





$publickey = "****blabla*****";

$privatekey = "****blabla*****";


# the response from reCAPTCHA
$resp = null;
# the error code from reCAPTCHA, if any
$error = null;

# was there a reCAPTCHA response?




$bool_is_login = false ;
if($session[user_id] > 0) {
	$bool_is_login = true ;
}
if(!$bool_is_login) {


	if($_POST['a'] == "register") {
		$userdata = $_POST['userdata'] ;
		$userdata[username] = htmlspecialchars(trim($userdata['username'])) ;
		$userdata[email] = htmlspecialchars(trim($userdata['email'])) ;
		$userdata[f_name] = htmlspecialchars(trim($userdata['f_name'])) ;
		$userdata[l_name] = htmlspecialchars(trim($userdata['l_name'])) ;
		$userdata[phone] = htmlspecialchars(trim($userdata['phone'])) ;

		$bool_register = false ;
		if(empty($userdata[username])) {
			$message = "Username is empty" ;
		}elseif(is_username_exists($userdata[username])) {
			$message = "Username is already exist" ;
		}elseif(empty($userdata[password])) {
			$message = "Password is empty" ;
	    }elseif(empty($userdata[address])) {
			$message = "Address is empty" ;
		}elseif(empty($userdata[company])) {
			$message = "Company name is empty" ;
		}elseif($userdata[password] != $userdata[c_password]) {
			$message = "Passwords are not equal" ;
		}elseif(empty($userdata[email])){
			$message = "E-Mail is empty" ;
		}elseif(!check_email_address($userdata[email])){
            $message = "E-Mail is not vaild." ;
		}elseif(empty($userdata[f_name])){
			$message = "First name is empty" ;
		}elseif(empty($userdata[l_name])){
			$message = "Last name is empty" ;
		}elseif(empty($userdata[phone])){
			$message = "Phone number is empty" ;
		}elseif(empty($userdata[p_question])){
			$message = "Hint for PIN is empty" ;
		}elseif(empty($userdata[p_answer])){
			$message = "PIN is empty" ;
		}else{
		if ($_POST["recaptcha_response_field"]) {
        $resp = recaptcha_check_answer ($privatekey,
                                        $_SERVER["REMOTE_ADDR"],
                                        $_POST["recaptcha_challenge_field"],
                                        $_POST["recaptcha_response_field"]);

        if ($resp->is_valid) {

             $bool_register = true ;

             } else {

               $message = "Incorrect security code. <br/>Please try again." ;

                $error = $resp->error;
        }

}else{
$message = "Security code field is empty." ;
}

		}
		if($bool_register) {
			$userdata[enc_password] = md5($userdata[password]) ;
			$userdata[reg_time] = $userdata[last_time] = time() ;
			$sql = "INSERT INTO users(username, password, reg_time, last_time, f_name, l_name, email, homepage, regas, address, company, p_question, p_answer) VALUES('{$userdata[username]}', '{$userdata[enc_password]}', '{$userdata[reg_time]}', '{$userdata[last_time]}', '{$userdata[f_name]}', '{$userdata[l_name]}', '{$userdata[email]}', '{$userdata[phone]}', 'Investor', '{$userdata[address]}', '{$userdata[company]}', '{$userdata[p_question]}', '{$userdata[p_answer]}')" ;
			mysql_query($sql) ;
			$userdata[user_id] = mysql_insert_id() ;

			login($userdata[user_id]) ;
			header("Location: http://www.your-page.com") ;
			exit ;
		}
	}
}

והקוד שמתנה האם להציג טופס/הודעה אחרת:
קוד:
<?php



if($message) {
	?><span style="color: red;"><?=$message?></span><?
}

if($session[user_id] > 0) {
?>
  <h2><span style="color: red;">You are already logged in.</span> </h2> <?php
}else{


if(!$bool_is_login) {
	show_register_form() ;
}else{
	show_other_message() ;
}


}
?>
כמובן שאלו רק כמה חלקים מהקוד המלא,
שכולל את כל הפונקציות כמו login וכו'...


תנסה לשלוח מבחוץ לטופס הזה...

Last edited by OrPol; 05-01-09 at 10:09..
  Reply With Quote