Vinnaren i pepparkakshustävlingen!
2014-07-06, 16:04
  #1
Medlem
Hejsan!

Jag söker en kunnig person som kan PHP och vet hur reCaptcha fungerar..

För det är nämnligen så att jag har ett script som skapar en användare i en databas, och då behöver de verifiera sig med reCaptcha.

I min form så klickar jag 'Submit' sedan så får jag ett felmeddelande som lyder "To use reCAPTCHA you must get an API key from https://www.google.com/recaptcha/admin/create"


Trots att mina API-keys finns i scriptet!

Så jag tänkte att någon som kan det här bättre än mig kunde tänka sig ta en titt på varför den inte vill hitta $publickey och $privatekey

Men vad vet jag! Det kanske inte ens är det som är felet, men är jätte tacksam för svar!





Kod:
<?php   

include("db.conf.php");   
require_once(
'recaptcha/recaptchalib.php');   
$publickey "publika api-keyn";
$privatekey "privata api-keyn";  
$captcha_entry recaptcha_get_html($publickey);  
$page '<?xml version="1.0" encoding="utf-8" ?>   
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">   
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">   
<head>   
<title>' 
$title '</title>   
</head>   

<form method="post" action="' 
$_SERVER["SCRIPT_NAME"] . '">   

<p style="text-align:center;">   
<strong>' 
$title2 '  ' $title "</strong>   
<br /><br /><br />   
Username:   
<br /><input name='username' type='text' maxlength='14' /><br />   
Password:   
<br /><input name='password' type='password' maxlength='12' /><br />   
Email:   
<br /><input name='email' type='text' maxlength='255' />   
<br />   
<INPUT TYPE=RADIO NAME='expansion' VALUE='2' CHECKED >WOTLK<br />   
<br /><br /><br />
 
         
$captcha_entry <br>

         <button type='submit' name='b1'>Create account</button>   
         

</p>   
</form>   
</body>   
</html>"
;  
$privatekey "privatekey";
function 
captcha_ok(){  
            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) {  
                    return 
TRUE;  
                }  
            }  
            return 
FALSE;  
        } 



function 
error_s ($text) { 
    echo(
$text); 
    echo(
"<br /><br /><a style=\"color:orange;\" href=\"" $_SERVER["SCRIPT_NAME"] . "\">Go back...</a></p>"); 
}; 

$user_chars "#[^a-zA-Z0-9_\-]#"
$email_chars "/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/"

$con = @mysql_connect($ip$user$pass); 
if (!
$con) { 
    
error_s("Unable to connect to database: " mysql_error()); 
}; 

if (!empty(
$_POST)) { 
        if ((empty(
$_POST["username"]))||(empty($_POST["password"]))||(empty($_POST["email"]))||(empty($_POST["expansion"])) ) { 
                
error_s("You did not enter all the required information."); 
                exit(); 
        } else { 
                
$username strtoupper($_POST["username"]); 
                
$password strtoupper($_POST["password"]); 
                
$email strtoupper($_POST["email"]); 
                
$expansion $_POST["expansion"]; 
                if (
strlen($username) < 5) { 
                        
error_s("Username too short."); 
                        exit(); 
                }; 
                if (
strlen($username) > 14) { 
                        
error_s("Username too long."); 
                        exit(); 
                }; 
                if (
strlen($password) < 8) { 
                        
error_s("Password too short."); 
                        exit(); 
                }; 
                if (
strlen($password) > 12) { 
                        
error_s("Password too long."); 
                        exit(); 
                }; 
                if (
strlen($email) < 4) { 
                        
error_s("Email was too short."); 
                        exit(); 
                }; 
                if (
strlen($email) > 255) { 
                        
error_s("Email was too long."); 
                        exit(); 
                }; 
                if(!
captcha_ok()){ 
                    
error_s("Invalid captcha."); 
                        exit(); 
                } 
                if (
preg_match($user_chars,$username)) { 
                        
error_s("Username contained illegal characters."); 
                        exit(); 
                }; 
                if (
preg_match($user_chars,$password)) { 
                        
error_s("Password contained illegal characters."); 
                        exit(); 
                }; 
                if (!
preg_match($email_chars,$email)) { 
                        
error_s("Email was in an incorrect format."); 
                        exit(); 
                }; 
                
$username mysql_real_escape_string($username); 
                
$password mysql_real_escape_string($password); 
                
$email mysql_real_escape_string($email); 
                
$qry = @mysql_query("select username from " mysql_real_escape_string($r_db) . ".account where username = '" $username "'"$con); 
                if (!
$qry) { 
                    
error_s("Error querying database: " mysql_error()); 
                }; 
                if (
$existing_username mysql_fetch_assoc($qry)) { 
                        foreach (
$existing_username as $key => $value) { 
                                
$existing_username $value
                        }; 
                }; 
                
$existing_username strtoupper($existing_username); 
                if (
$existing_username == strtoupper($_POST['username'])) { 
                        
error_s("That username is already taken."); 
                        exit(); 
                }; 
                unset(
$qry); 
                
$qry = @mysql_query("select email from " mysql_real_escape_string($r_db) . ".account where email = '" $email "'"$con); 
                if (!
$qry) { 
                    
error_s("Error querying database: " mysql_error()); 
                }; 
                if (
$existing_email mysql_fetch_assoc($qry)) { 
                        foreach (
$existing_email as $key => $value) { 
                                
$existing_email $value
                        }; 
                }; 
                if (
$existing_email == $_POST['email']) { 
                        
error_s("That email is already in use."); 
                        exit(); 
                }; 
                unset(
$qry); 
                
$sha_pass_hash sha1(strtoupper($username) . ":" strtoupper($password)); 
                
$register_sql "insert into " mysql_real_escape_string($r_db) . ".account (username, sha_pass_hash, email, expansion) values (upper('" $username "'),'" $sha_pass_hash "','" $email "','" $expansion "')"
                
$qry = @mysql_query($register_sql$con); 
                if (!
$qry) { 
                    
error_s("Error creating account: " mysql_error()); 
                }; 
                echo(
"Account successfully created."); 
                exit(); 
        }; 
} else { 
        echo(
$page); 
}; 

?>
Citera
2014-07-06, 16:08
  #2
Medlem
EckiEckis avatar
Citat:
Ursprungligen postat av superiorr
Så jag tänkte att någon som kan det här bättre än mig kunde tänka sig ta en titt på varför den inte vill hitta $publickey och [b]$privatekey

Hur hade du tänkt att en funktion skulle komma åt en variabel som du satt utanför funktionen utan att du hanterar den som en global?

Du vill använda en sökmotor och kika lite på det här med "functions" "php" "scope" "global".

Första träffen blir då sannolikt http://php.net/manual/en/language.variables.scope.php
__________________
Senast redigerad av EckiEcki 2014-07-06 kl. 16:11.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback