Зареждане на php функция и презареждане на картинка

d_badboy

Registered
Имам една функция createvalidcode() за създаване на картинка която връща името на картинката text.png , тага за извеждане е следния <img src="<?php echo createvalidcode(); ?>" border="0" />
Как да направя така че като се кликне на картинката да се генерира нова картинка и да се презареди старата ?
 
Ако работи на принципа на обикновените bot captcha-ри трябва да добавиш това:

Това го слагаш в <head></head> секцията
Код:
<script>
function reloadImageCode(){
document.getElementById('imageCode').src='text.png';
}
</script>

Трябва да добавиш само

<img src="<?php echo createvalidcode(); ?>" border="0" id="imageCode" />

<a href='#' onClick='reloadImageCode();return false;'>Презареди изображението</a>
Трябва да работи! :?:
 
Ето какво съм сложил в index.php но не се презарежда картинката:
между <head></head>
Код:
<script type="text/javascript">
	function reloadimagecode() {
		document.getElementById('imagecode').src='text.png';
	}
</script>
между <body></body>
Код:
<a href="#" onclick="reloadimagecode();return false;"><img id="imagecode" src="<?php echo createvalidcode($_SESSION['code']); ?>" style="margin-top: 5px; border: none;" /></a>
Някаде да не съм обаркал ?
 
Пратих ти я на ЛС но ще я постна и тук
Код:
function createvalidcode($code, $width=125, $height=28, $circle=20) {
	$img = imagecreate($width,$height);
	$background = imagecolorallocate($img, 250, 250, 250);
	$gray = imagecolorallocate($img, 230, 230, 230);
	$text = imagecolorallocate($img, 200, 200, 200);
	for($i=1;$i<=$circle;$i++) imagearc($img, rand(0,$width), rand(0,$height), rand(0,200), rand(0,200), 0, 360, $gray);
	for($i=1;$i<=$circle;$i++) imagearc($img, rand(0,$width), rand(0,$height), 6, 6, 0, 360, $gray);
	imagestring($img,5,14,6,implode(" ", str_split($code)), $text);
	imagepng($img,"text.png");
	imagedestroy($img);
	return "text.png";
}
 
Препоръчвам ти да използваш кода който ти пратих. Ще стане по-добре, пък и изглежда супер яко :?:
 
Ок, ок. Можеш да го направиш и с твоя скрипт,
Направих малък едит:
Код:
<?php //validate.php
if (session_id() == ""){ //ако не е стратирана сесия, в противен случай ще я изпразни
	 session_start();
}
function createvalidcode($numChars=4, $width=125, $height=28, $circle=20) {
	
	$chars = range('a', 'z'); // използваните знаци 
	$showChar = ''; // ако си с Е_STRICT на error_reporting без този ред ще ти даде грешка
	for($i=0;$i<$numChars;$i++){
		$case = rand(0, 10); 
		$char = rand(0, (count($chars)-1) ); // случаен елемент от масива
		$showCase = ($case >= 7)?strtoupper($chars[$char]):$chars[$char]; // 30% шанс за uppercase
		$showChar .= $showCase; // добавяне към стринг-а
	}
	$_SESSION['validationCode'] = $showChar;
	$img = imagecreate($width,$height);
	$background = imagecolorallocate($img, 250, 250, 250);
	$gray = imagecolorallocate($img, 230, 230, 230);
	$text = imagecolorallocate($img, 200, 200, 200);
	for($i=1;$i<=$circle;$i++){
		imagearc($img, rand(0,$width), rand(0,$height), rand(0,200), rand(0,200), 0, 360, $gray);
	}
	
	for($i=1;$i<=$circle;$i++){
		imagearc($img, rand(0,$width), rand(0,$height), 6, 6, 0, 360, $gray); 
	}
	
	imagestring($img,5,14,6,implode(" ", str_split($showChar)), $text);

	header('Content-type: image/png'); // казваме на браузъра, че е картинка 
	imagepng($img);
	imagedestroy($img);

}

function validateSentCode($code){
	
	if(isset($_SESSION['validationCode']) && $_SESSION['validationCode'] == $code){ 
		unset($_SESSION['validationCode']);
		return true;
	}else{
		return false;
	}
	
}
?>

Код:
<?php //code.php
include('validate.php');
createvalidcode();
?>

Сега във страницата където се логваш или за каквото там ти е този бот чек слагаш този код:
Код:
include('validate.php');
if(validateSentCode($_POST['code']) == true){

}else{

}
и сега там на src='code.php' и в html и в javascript кода.
Така трябва да работи! :?:
 
F1r3Fl3x мерси за кода, който си дал :wink: и двата варианта работят, но проблема със смяната на изображението с onclick си остава независимо дали ще е text.png или code.php
 
Моя грешка! Забравил съм да добавя едно нещо :(
Ето така ще работи!
Код:
<script type="text/javascript">
   function reloadImageCode() {
      document.getElementById('imageCode').src='code.php?sid='+Math.random();
   }
</script>

:?:
 

Back
Горе