download.bg
 Вход Списание  Новини  Програми  Статии  Форум  Чат   Абонамент  Топ95   Архив 

Генериране на произволен въпрос php... ?

< 1 2 >

Автор
Съобщение
anonymous
Пон, 21.02.11, 23:27
Здравейте как може да се направи примерно на php нещо от този род ... линк при регистрация да се изиска правилен отговор на въпроса и тогава да се допуска към определена страница...
joniewalker
Вто, 22.02.11, 08:19

RE: Генериране на произволен въпрос php... ?

” Здравейте как може да се направи примерно на php нещо от този род ... линк при регистрация да се изиска правилен отговор на въпроса и тогава да се допуска към определена страница... „

"You have chosen not to accept the forum rules, so registration cannot continue." И линка ти не показва необходимото.
Не разбирам нищо от програмиране, но мисля че се прави набор от 100- 200-... въпроси и се подава случаен. Може и да се комбинират. Ако има и ограничение на броя опити за време и IP , мисля че всичко ще е ок.

anonymous
Вто, 22.02.11, 11:07

joniewalker
Вто, 22.02.11, 11:09
Ние пък виждаме само това :

angelicstar
Вто, 22.02.11, 12:32

RE: Генериране на произволен въпрос php... ?

Произволният въпрос на HW.bg си е все тоя вече от 3 г.
anonymous
Вто, 22.02.11, 14:03
И с един въпрос да е пак ми върши работа защото ми омръзна да се занимавам със спамери от чужбина... поне по този начин ще огранича до някаква степен.

Едит:

Идейка с пхп тест...

редактиран от anonymous на 22.02.11 14:10
anonymous
Вто, 22.02.11, 19:17
Един приятел вече ми помогна... ето как става това което искам...

<form action="" method="post">
<input name="chsl">
<input name="sbm" type="submit">
</form>
<?php
$chislo = $_POST['chsl'];
$sbm = $_POST['sbm'];
if (isset($_POST['sbm']))
{
 if($chislo == '1') {
?>
<META HTTP-EQUIV="refresh" CONTENT="1;URL=http://abv.bg">
<?php

}
else {
exit;
}
}
?>

Когато бъде въведен 1 скрипта препраща към абв.бг когато бъде въведено друго число то се презарежда...

phrozencrew
Вто, 22.02.11, 19:40
Според мен най-лесно ще е със простичка сесия. Сравняваш дали отговора съвпада със стойност от сесията и ако да пускаш човека, ако не, значи е бот.

Като се разтърсих за нещо простико попаднах на една семпла идея, която мнооого ми хареса. Математически формули, които са съставени от малки букви. Супер готина идея: PHP_MathGuard_AntiSpam_v3.3815.rar

anonymous
Вто, 22.02.11, 21:39
Нед искам да използвам текст за да огранича да могат да се егват хора само от бг или знаещи бг .... а ако са математически изрази или нещо друго всеки ще се регва както сега и да спамят форума ми с реклами....
anonymous
Сря, 23.02.11, 03:32
phrozencrew е прав. Без никакво ограничение просто числа... Така наречения защитен код. Успех на ботовете.

Ето идеята:
Имаш един файл, който да кажем си кръстил identify.php
<?php
	session_start();
	$t=time();
	$size_x=200;
	$size_y=75;
	$rcode=rand(1000,9999);
	$codes="$rcode";
	$_SESSION['mycode']=$rcode;//поставям в сесиен файл така генерирания код за достъп
	$space_per_char=$size_x/(strlen($codes)+1);
	$img=imagecreatetruecolor($size_x,$size_y);
	$background=imagecolorallocate($img,255,255,255);
	$border=imagecolorallocate($img,128,128,128);
	$colors[]=imagecolorallocate($img,200,200,200);
	$colors[]=imagecolorallocate($img,204,204,204);
	$colors[]=imagecolorallocate($img,204,204,204);
	$colors[]=imagecolorallocate($img,204,204,204);
	$colors[]=imagecolorallocate($img,204,204,204);
	imagefilledrectangle($img,1,1,$size_x-2,$size_y-2,$background);
	imagerectangle($img,0,0,$size_x-1,$size_y-1,$border);
	for($i=0;$i<strlen($codes);$i++)
	{
		$mycolor=imagecolorallocate($img,0,0,0);
		imagettftext($img,28+rand(0,8),-20+rand(0,40),($i+0.3)*$space_per_char,50+rand(0,10),$mycolor,'times.ttf',$codes[$i]);
	}
	for($i=0;$i<1000;$i++)
	{
		$x1=rand(5,$size_x-5);
		$y1=rand(5,$size_y-5);
		$x2=$x1-4+rand(0,8);
		$y2=$y1-4+rand(0,8);
		imageline($img,$x1,$y1,$x2,$y2,$colors[rand(0,count($colors)-1)]);
	}
	imageantialias($img,true);
	imagepng($img);//създава .png картинка
	imagedestroy($img);
?>

Самата ти регистрация, в който си файл искаш, прихващаш събитията:
<?php
session_start();
// ......
//тука всякакъв код, който ти трябва за каквото и да е
// и някъде там
            if ($_POST[register_new_user]) {
	$user = htmlspecialchars($_POST[new_name]);
	$pass = md5($_POST[new_pass]);
	$pass_again = md5($_POST[new_pass_again]);
	$email = htmlspecialchars($_POST[new_email]);
	$fullname = htmlspecialchars($_POST[new_fullname]);
	$address = htmlspecialchars($_POST[new_address]);
	$phone =  htmlspecialchars($_POST[new_phone]);
	
	if (strlen($user) < 3)
		$txt = 'Поне 3 символа за потребителско име!<br />';
	
	if (strlen($_POST[new_pass]) < 6)
		$txt .= 'Поне 6 символа за парола!<br />';
	else
		if ($pass != $pass_again)
			$txt .= 'Паролата и повторно въведената не съвпадат!<br />';
			
	if (strlen($email) < 7 || !eregi("^[a-z0-9]+[a-z0-9_.-]*@[a-z0-9]+[a-z0-9_.-]*.[a-z]{2,4}$", $email))
		$txt .= 'Некоректно въведен E-mail адрес!<br />';
	
	if (strlen($fullname) < 12)
		$txt .= 'Непълни три имена!<br />';
		
	if (strlen($address) < 18)
		$txt .= 'Некоректен адрес за достравка!<br />';
		
	if (strlen($phone) < 7)
		$txt .= 'Несъществуващ телефон!<br />';
	
	if ($_POST[new_secure_code] != $_SESSION['mycode'])
		$txt .= 'Защитният код не съвпада!';
	
	if ($txt) {
		err($txt);
		$act = 'new_user';	
	} else {
		$ip = getenv('REMOTE_ADDR');
		$at_time = date ("Y-m-d H:i:s");
		
		if (mysql_query("INSERT INTO users (user, pass, email, realname, address, phones, create_time, ip_address, visit_count, access_) VALUES ('$user', '$pass', '$email', '$fullname', '$address', '$phone', '$at_time', '$ip', '0', '0')")) {
			$msg = "Здравейте $fullname,<br />Вие се регистрирахте в http://твоя.сайт.com със следните данни:<br />Потребителско име: $user <br />Парола: $_POST[new_pass] <br /><br />За да активирате Вашата регистрация моля, натиснете <a href=http://твоя.сайт.com/index.php?go=active_profile&user=$user&email=$email&sesid=$pass>тук</a>.<br />В случай, че линка не работи моля, копирайте и поставете http://твоя.сайт.com/index.php?go=active_profile&user=$user&email=$email&sesid=$pass в адрес бара на Вашия браузер, след което заредете адреса.";
			$msg .= "<br /><br /><br />Zdrawejte $fullname,<br /> Wie se registrirahte w http://твоя.сайт.com sys slednite danni:rnPotrebitelsko ime: $user <br /> Parola: $_POST[new_pass] <br />Za da aktiwirate Washata registraciq molq, natisnete <a href=http://твоя.сайт.com/index.php?go=active_profile&user=$user&email=$email&sesid=$pass>tuk</a>.<br />W sluchaj, che linka ne raboti molq, kopirajte i postawete http://твоя.сайт.com/index.php?go=active_profile&user=$user&email=$email&sesid=$pass w adres bara na Washiq brauzer, sled koeto zaredete adresa.";
			
			send_to_user($msg, $email, 'Успешна регистрация!');
			ok('Вашата регистрация премина успешно.');
			$act = 1;
			$output = '<span style="color:#ff0000">Регистрация:</span><br />Вашата регистрация премина успешно.<br /><br />На посочения от Вас E-mail адрес бе изпратено писмо, което съдържа линк(push-link) за да активирате акаунта си.<br /><br /><br />Благодарим Ви!';
		} else {
			err('Възникна грешка при регистрацията!<br/><br />Моля, опитайте отново.');	
			$act = 'new_user';
		}
	}
}
//....
//още о още код според нуждите ти
?>

От последния файл обърни внимание на този ред:
if ($_POST[new_secure_code] != $_SESSION['mycode'])
		$txt .= 'Защитният код не съвпада!';

Точно тука проверяваш дали защитния код е правилно въведен или не...

Формата ти за регистрация:
<?php
session_start();
/* **какъвто си искаш код според потребностите ти** */
$output = '<FORM action="?go=register_new_user" method="post">
					<span style="color:#ff0000">Регистрация:</span><br />
					<span style="color:#0000ff; font-size:10px">Всички полета са задължителни!</span><br /><br />
					<table cellpadding="3" cellspacing="7" width="636">
						<tr>
							<td>Потребителско име:</td>
							<td><input type="text" name="new_name" value="' . stripslashes($_POST[new_name]) . '" onkeyup="test_('register.php', this.name, this.value)" style="width:230px" /></td>
							<td width="200"><span id="new_name" style="font-size:10px">За вход в сайта.</span></td>
						</tr>
						<tr>
							<td>Парола:</td>
							<td><input type="password" name="new_pass" onkeyup="check_pass(this.value, this.name)" style="width:230px" /></td>
							<td width="200"><span id="new_pass" style="font-size:10px">За вход в сайта.</span></td>
						</tr>
						<tr>
							<td>Повтори паролата:</td>
							<td><input type="password" name="new_pass_again" onkeyup="check_(this.form.new_pass.value, this.value, this.name)" style="width:230px" /></td>
							<td width="200"><span id="new_pass_again" style="font-size:10px">За вход в сайта.</span></td>
						</tr>
						<tr>
							<td>E-mail адрес:</td>
							<td><input type="text" name="new_email" value="' . stripslashes($_POST[new_email]) . '" onkeyup="test_('register.php', this.name, this.value)" style="width:230px" /></td>
							<td width="200"><span id="new_email" style="font-size:10px">За кореспонденция.</span></td>
						</tr>
						<tr>
							<td>Трите Ви имена:</td>
							<td><input type="text" name="new_fullname" value="' . stripslashes($_POST[new_fullname]) . '" onkeyup="test_('register.php', this.name, this.value)" style="width:230px" /></td>
							<td width="200"><span id="new_fullname" style="font-size:10px">За доставка.</span></td>
						</tr>
						<tr>
							<td>Адрес за доставка:</td>
							<td><textarea name="new_address" onkeyup="test_('register.php', this.name, this.value)" style="overflow:hidden; border:1px solid #071507; background-color:#49D5C4; width:230px; height:70px">' . stripslashes($_POST[new_address]) . '</textarea></td>
							<td width="200"><span id="new_address" style="font-size:10px">За доставка.</span></td>
						</tr>
						<tr>
							<td>Телефон/и/ за връзка:</td>
							<td><input type="text" name="new_phone" value="' . stripslashes($_POST[new_phone]) . '" onkeyup="test_('register.php', this.name, this.value)" style="width:230px" /></td>
							<td width="200"><span id="new_phone" style="font-size:10px">За кореспонденция.</span></td>
						</tr>
						<tr>
							<td>Защитен код:</td>
							<td><img src="identify.php" width="80" border="1" style="float:left; height:16px" />  <input type="text" name="new_secure_code" style="width:140px" /></td>
							<td width="200"> </td>
						</tr>
					</table>
					<br />
					<input type="submit" name="register_new_user" class="bt" value=" Регистрирай ме " />
					</FORM>';
 
/* **Ако това не е предпоследния ти ред във файла спокойно може да продължиш да си дописваш кода** */
?>

Ето как се вика и файла, който ти създава произволно число от 1000 до 9999:
<img src="identify.php" width="80" border="1" style="float:left; height:16px" />  <input type="text" name="new_secure_code" style="width:140px" />

Съдържа се в самата форма за регистрация, както сам виждаш :)

Формата за регистрация е примерна. Вкарваш си в твоята каквото искаш потребителите да попълват. Проверката е също примерна. В този случай отговаря от до на въведените данни от потребителя.

П.С.: Създаването на произволно число от 4 цифри съм го писал в момента. Възможно е да има и грешка. Не съм го тествал. Единственото за което трябва да си напомняш от този файл, е че трябва да качиш и фонта/шрифта, който използваш в същата директория, в която е и файла за създаване на този цифров код примесен с малко шум.
В случая съм ползвал 'times.ttf'.
imagettftext($img,28+rand(0,8),-20+rand(0,40),($i+0.3)*$space_per_char,50+rand(0,10),$mycolor,'times.ttf',$codes[$i]);

< 1 2 >

Коментар

за нас | за разработчици | за реклама | станете автори | in english  © 1998-2024   Experta Ltd.