간단한 검색 상자와 입력 버튼이있는 페이지가 있습니다. 2 가지 사용자가 검색을 수행 할 때 발생 :PHP 폼 내에 중첩 된 PHP 폼 CAPTCHA 즉시 실패
새로운 탭이 열리고 그들이에 을 입력 한대로 구글을 검색한다
가 검색을 한 곳에 그들이 (단지에 있던 페이지. from)이 새로 고침되고 SQL 쿼리를 트리거 할 확률이 50 %입니다.
병합을 방지하기 위해이 SQL 쿼리에 보안 문자를 넣으려고합니다.
현재 내가 가지고있는 문제는 보안 문자가 즉시 실패한다는 것입니다. 첫 번째 양식이 해고 되었기 때문이라고 가정합니다. 그것은 "잘못된 해결책"을 되돌려 놓았습니다. 그것은 내가 믿을 수있게 해줍니다.
다음은 현재 구조입니다.
<form id="search" method="post" action="" target="" onsubmit="refresh(this);">
<input type="text" name="q" size="31" maxlength="255" value="" />
<input style="color: #cc423f; font-weight:bold; padding: 7px 15px;" name="search" type="submit" value="Search" />
</form>
<script type="text/javascript">
function refresh(a){
// location.reload(true);
window.open("http://www.google.com/search?q="+a.q.value);
}
</script>
<?php
if(isset($_POST['q'])){
if (mt_rand(0, 1) === 0) { // 50% chance of this event happening
// BEGIN SolveMedia CAPTCHA form
echo "<form id=\"solve4points\" method=\"post\" action=\"\" target=\"\" onsubmit=\"refresh(this);\">"; ?>
<?php echo solvemedia_get_html("XI.WRU97NXJXuJWRfL0FajiudOutJyDC"); //this displays SolveMedia CAPTCHA widget
echo "<br /><input style=\"color: #cc423f; font-weight:bold; padding: 7px 15px;\" type=\"submit\" name=\"solve4points\" value=\"Get Points!\" />
</form>";
} // end SolveMedia CAPTCHA form
else { // 50% chance of this event happening
echo "<br /><p>Nope, not today!</p>";
}
}
if(isset($_POST['solve4points'])){
echo solvemedia_get_html("XI.WRU97NXJXuJWRfL0FajiudOutJyDC");
require_once("/var/www/vhosts/domain.com/httpdocs/wp-content/plugins/solvemedia/solvemedia.php");
$privkey="xxxxxxxxxxxxxxxxxxxxxx"; // API keys for CAPTCHA
$hashkey="xxxxxxxxxxxxxxxxxxxxxx";// API keys for CAPTCHA
$solvemedia_response = solvemedia_check_answer($privkey, $_SERVER["REMOTE_ADDR"], $_POST["adcopy_challenge"], $_POST["adcopy_response"], $hashkey);
if (!$solvemedia_response->is_valid) { //if user fails to complete CAPTCHA correctly, do this
print "Error: ".$solvemedia_response->error;
}
else {//if user completed CAPTCHA correctly, do this
mysql_query......
}
}
?>
은 보안상의 이유로, 나는 데이터베이스 연결 및 API 키 정보를 제거했지만, 나는 그 물건이 정확한지 알고있다.
Google 검색 지점이 무엇인지 잘 모르는 사람 –
많은 세부 정보없이 사용자는 웹 사이트에서 웹을 검색 할 수 있습니다. 그렇게함으로써, 그들은 그 비트가 그 문제와 관련이 없기 때문에 내가 버린 SQL 질의를 통해 그들의 계정에서 이벤트 트리거를 가질 확률이 50 %가됩니다. –