X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Почему не работает капча??
dimjan4
dimjan4
Topic Starter сообщение 6.7.2008, 21:59; Ответить: dimjan4
Сообщение #1


Вот код, обясните.. На одном бесплатном хостинге работает, а на другом нет!
[PHP]<?php
session_start();

// Juego de letras para usar
$letras = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

// ConfiguraciГіn tamaГ±o imagen y tamaГ±o fuente
$ancho_caja = 130;
$alto_caja = 60;
$tam_letra = 10;
$tam_letra_grande = 45;
// angulo mГЎximo que rota (izq y der) cada letra
$angmax = 20;
// Establecer el tipo de contenido
header("Content-type: image/png");

// Creamos una imagen
$im = imagecreate($ancho_caja, $alto_caja);

// Creo el color del texto, del texto del fondo y del fondo de la imagen
$gris = ImageColorAllocate($im, 247, 247, 247);
$colorLetra = ImageColorAllocate($im, 105, 159, 189);
$colorLetraFondo = ImageColorAllocate($im, 247, 247, 247);


// tipo de letra obtenido en dafont.net
$fuente = './image2.ttf';

// Calculo el nГєmero de lГ*neas que entran
$caja_texto = imagettfbbox($tam_letra, 0, $fuente , $letras);
$alto_linea = abs($caja_texto[7]-$caja_texto[1]);
$num_lineas = intval($alto_caja / $alto_linea)+1;

// Dibujo las letras del fondo
// Cada letra de escribe de una en una para poder
// darle una rotaciГіn independiente al resto
$pos = 0;
for ($i = 0; $i<$num_lineas; $i++) {
$x = 0;
for ($j = 0; $j<30; $j++) {
$texto_linea = $letras[rand(0, strlen($letras)-1)].' ';
$caja_texto = imagettfbbox($tam_letra, 0, $fuente , $texto_linea);
imagettftext($im, $tam_letra, rand(-$angmax, $angmax), $x, $alto_linea*$i, $colorLetraFondo, $fuente , $texto_linea);
// Posicion x de la siguiente letra
$x += $caja_texto[2] - $caja_texto[0];
}
}


// Escribo las tres letras del CAPTCHA
$res = $letras[rand(0, strlen($letras)-1)];
$ang1 = rand(-$angmax, $angmax);
$caja_texto = imagettfbbox($tam_letra_grande, $ang1, $fuente , $res);
$y1 = abs($caja_texto[7]-$caja_texto[1]);
$x1 = abs($caja_texto[2]-$caja_texto[0]);

$res .= $letras[rand(0, strlen($letras)-1)];
$ang2 = rand(-$angmax, $angmax);
$caja_texto = imagettfbbox($tam_letra_grande, $ang2, $fuente , $res[1]);
$y2 = abs($caja_texto[7]-$caja_texto[1]);
$x2 = abs($caja_texto[2]-$caja_texto[0]);

$res .= $letras[rand(0, strlen($letras)-1)];
$ang3 = rand(-$angmax, $angmax);
$caja_texto = imagettfbbox($tam_letra_grande, $ang3, $fuente , $res[2]);
$y3 = abs($caja_texto[7]-$caja_texto[1]);
$x3 = abs($caja_texto[2]-$caja_texto[0]);

imagettftext($im, $tam_letra_grande, $ang1, ($ancho_caja/2)-(($x1+$x2+$x3)/2), $y1+($alto_caja-$y1)/2, $colorLetra, $fuente , $res[0]);
imagettftext($im, $tam_letra_grande, $ang2, ($ancho_caja/2)-(($x1+$x2+$x3)/2)+($x1), $y2+($alto_caja-$y2)/2, $colorLetra, $fuente , $res[1]);
imagettftext($im, $tam_letra_grande, $ang3, ($ancho_caja/2)-(($x1+$x2+$x3)/2)+($x1+$x2), $y3+($alto_caja-$y3)/2, $colorLetra, $fuente , $res[2]);

imagepng($im);
imagedestroy($im);
imagedestroy($im2);

$_SESSION["texto"] = $res;
?>
[/PHP]:swoon:
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Eclipse_hb
Eclipse_hb
сообщение 6.7.2008, 22:01; Ответить: Eclipse_hb
Сообщение #2


GD library есть на хостинге ?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
dimjan4
dimjan4
Topic Starter сообщение 6.7.2008, 22:07; Ответить: dimjan4
Сообщение #3


Вот какой хостинг: http://www.ayola.net/
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Eclipse_hb
Eclipse_hb
сообщение 6.7.2008, 22:46; Ответить: Eclipse_hb
Сообщение #4


Поддержка PHP 5 и GDLib есть на нем, а какую ошибку выдает каптча

$fuente = './image2.ttf';
путь правильный ?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
dimjan4
dimjan4
Topic Starter сообщение 6.7.2008, 22:49; Ответить: dimjan4
Сообщение #5


Всё правильно!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Webmaster_hb
Webmaster_hb
сообщение 7.7.2008, 12:19; Ответить: Webmaster_hb
Сообщение #6


dimjan4, так а ошибка то какая ? если не выдается в браузере посмотрите логи и выложите саму ошибку
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
dimjan4
dimjan4
Topic Starter сообщение 7.7.2008, 15:34; Ответить: dimjan4
Сообщение #7


Ну вот смотрите: вот один скрипт,(регистрации) где должна отображаться капча:
<?
session_start();
?>
<? include('header.php'); ?>



<?

if(isset($_COOKIE["usNick"]) && isset($_COOKIE["usPass"]))
{

?>

<b><a href="#" onClick="window.location.reload()">Reload Page</a></b>

<? include('footer.php'); ?>


<? exit(); } ?>



<?



// incluimos archivos necesarios

require('config.php');
//require('admin/funciones.php');

if (isset($_POST["username"])) {

if( strtolower($_POST['code'])!= strtolower($_SESSION['texto'])){

echo "<br><br>SECURITY CODE ERROR... ";

include('footer.php'); exit();
}


// Declaramos las variables

$username = $_POST["username"];
$password = $_POST["password"];
$cpassword = $_POST["cpassword"];
$email = $_POST["email"];
$cemail = $_POST["cemail"];
$pemail = $_POST["pemail"];
$country = $_POST["country"];


// comprobamos que no haya campos en blanco

if($username==NULL|$password==NULL|$cpassword==NULL|$email==NULL|$cemail==NULL|$pemail==NULL|$country==NULL) {
echo "All Fields Required";
}else{


// sanitizamos las variables

$username= uc($username);
$password = uc($password);
$cpassword = uc($cpassword);
$email = limpiar($email);
$cemail = limpiar($cemail);
$pemail = limpiar($pemail);
$country = limpiar($country);


// limitamos el numero de caracteres

$username=limitatexto($username,15);
$password=limitatexto($password,15);
$cpassword=limitatexto($cpassword,15);
$email=limitatexto($email,100);
$cemail=limitatexto($cemail,100);
$pemail=limitatexto($pemail,100);
$country=limitatexto($country,15);


// comprobamos que tengan un minimo de caracteres

minimo($username);
minimopass($password);


// їCoinciden las contraseсas?
if($password!=$cpassword) {
echo "Passwords Do Not Match";
}else{


// їCoinciden los emails?
if($email!=$cemail) {
echo "Emails Do not Match";
}else{


// Comprobamos que sea un email valido
ValidaMail($email);


// Comprobamos que sea un email valido
ValidaMail($pemail);





// Comprobamos que no se haya creado otra cuenta desde la misma ip

$laip = getRealIP();


if($laip!="127.0.0.1")
{

    $checkip = mysql_query("SELECT ip FROM tb_users WHERE ip='$laip'");
    $ip_exist = mysql_num_rows($checkip);

}

if ($ip_exist>0) {
echo "Error: You have already created an account.";
}else{


// Comprobamos que el nombre de usuario, email y el email de AlertPay no existan

$checkuser = mysql_query("SELECT username FROM tb_users WHERE username='$username'");
$username_exist = mysql_num_rows($checkuser);

$checkemail = mysql_query("SELECT email FROM tb_users WHERE email='$email'");
$email_exist = mysql_num_rows($checkemail);

$checkpemail = mysql_query("SELECT pemail FROM tb_users WHERE pemail='$pemail'");
$pemail_exist = mysql_num_rows($checkpemail);

if ($email_exist>0|$username_exist>0) {
echo "Username or Email Already in Use.";
}else{

if ($pemail_exist>0) {
echo "Your AlertPay Address is Already in Use.";
}else{


// Si se ha introducido un referer comprobamos que exista

if ($_POST["referer"] != "") {

// Sanitizamos la variable

$referer = limpiar($_POST["referer"]);
$referer=limitatexto($referer,15);

$checkref = mysql_query("SELECT username FROM tb_users WHERE username='$referer'");
$referer_exist = mysql_num_rows($checkref);

if ($referer_exist<1) {
// En caso de no existir el referer damos un mensaje de error
echo "Error: The referrer you entered doesn't exist"; include('footer.php');exit();
}else{
// Si todo parece correcto procedemos con la inserccion
      $sqlz = "SELECT * FROM tb_users WHERE username='$referer'";
      $resultz = mysql_query($sqlz);        
      $myrowz = mysql_fetch_array($resultz);

$numero=$myrowz["referals"];

      $sqlex = "UPDATE tb_users SET referals='$numero' +1 WHERE username='$referer'";
      $resultex = mysql_query($sqlex);
}

}


// Si todo parece correcto procedemos con la inserccion

$joindate=time();

$query = "INSERT INTO tb_users (username, password, ip, email, pemail, referer, country, joindate) VALUES('$username','$password','$laip','$email','$pemail','$referer','$country','$joindate')";
mysql_query($query) or die(mysql_error());

echo "You have been registered correctly <b>$username</b>. Now you can <a href=\"login.php\">login</a>.";


}
}
}
}
}
}

// En caso de no haber sido enviado los datos mostramos el formulario

}else{

?>
<div align="center"><div id="form">

<form action="register.php" method="POST">
<fieldset><legend>&nbsp;Все поля являются обязательными для заполнения&nbsp;</legend>

<table width="400" border="0" align="center">
  <tr>
    <td width="150" align="left"><p><label>Логин</label></p></td>
    <td width="250" align="left"><input type='text' size='15' maxlength='25' name='username' autocomplete="off" value="" tabindex="1" /></td>
  </tr>
  <tr>
    <td width="150" align="left"><p><label>Пароль</label></p></td>
    <td width="250" align="left"><input type="password" size="25" maxlength="15" name="password" autocomplete="off" class="field" value="" tabindex="1" /></td>
  </tr>
  <tr>
    <td width="150" align="left"><p><label>Повторите пароль</label></p></td>
    <td width="250" align="left"><input type="password" size="25" maxlength="15" name="cpassword" autocomplete="off" class="field" value="" tabindex="1" /></td>
  </tr>
  <tr>
    <td width="150" align="left"><p><label>Email адрес</label></p></td>
    <td width="250" align="left"><input type="text" size="25" maxlength="100" name="email" autocomplete="off" class="field" value="" tabindex="1" /></td>
  </tr>
  <tr>
    <td width="150" align="left"><p><label>Подтвердите Email</label></p></td>
    <td width="250" align="left"><input type="text" size="25" maxlength="100" name="cemail" autocomplete="off" class="field" value="" tabindex="1" /></td>
  </tr>
  <tr>
    <td width="150" align="left"><p><label>AlertPay E-mail</label></p></td>
    <td width="250" align="left"><input type="text" size="25" maxlength="100" name="pemail" autocomplete="off" class="field" value="" tabindex="1" /></td>
  </tr>
  <tr>
    <td width="150" align="left"><p><label>Страна</label></p></td>
    <td width="250" align="left"><input type="text" size="25" maxlength="100" name="country" autocomplete="off" class="field" value="" tabindex="1" /></td>
  </tr>
  <tr>
    <td width="150" align="left"><p><label>Реферал</label></p></td>
    <td width="250" align="left"><input type="text" size="25" maxlength="15" name="referer" value="<? echo limpiar($_GET["r"]); ?>" autocomplete="off" class="field" value="" tabindex="1" /></td>
  </tr>
  <tr>
    <td width="150" align="left"><p><label>Правила</label></p></td>
    <td width="250" align="left"><textarea rows="7" cols="25" readonly>
Пожалуйста, прочтите следующие правила  <? include('sitename.php'); ?> перед регистрацией!. Это займёт у вас не более 1 минуты!

1)    Мы не любим спам! <? include('sitename.php'); ?> Если нам прийдёт жалоба, Вы будете забанены!

2)    Вы можете иметь только одну учетную запись! В противном случае все учотные записи удоляются!
.
3)  У нас есть право приостанавливать Вашу учетную запись в любое время и по любой причине и без предварительного предупреждения.

4)    Все платежи осуществляются через AlertPay и никакой другой метод оплаты в настоящее время не используется. Вы должны отправить запрос о выводе денег, подлежащих обработке, и он будет выполнен в течение 3 рабочих дней. Вы должны накопить не менее 10$.

5)    Вы должны иметь действительный адрес электронной почты и действительный AlertPay адрес для регистрации в нашей программе.

6)    Наш нынешний уровень оплаты составляет $ 0,01 за каждый сайт.

7)    Вы можете иметь неограниченное количество рефералов.

8)    Плата за рекламу должны быть выполнена только через AlertPay. AlertPay принимает все основные кредитные карты, банковские переводы и AlertPay средства.    

9)    Вы<? include('sitename.php'); ?> имеете право прикратить сотрудничество с SUPERBUX в любое время.

10)    Зарегистрировавшись,<? include('sitename.php'); ?> Вы <? include('sitename.php'); ?>соглашаетесь <? include('sitename.php'); ?>с этими правилами.

11)    У нас есть право изменять наши условия<? include('sitename.php'); ?> в любое время без предварительного согласия или уведомления.
                    </textarea></td>
  </tr>
  <tr>
    <td width="150" align="left"><p><label>Введите код:</label></p></td>
    <td width="250" align="left"><input type="text" size="5" maxlength="5" name="code" autocomplete="off" class="securitycode" value="" tabindex="1" /></td>
  </tr>
  <tr>
    <td width="150" align="left">&nbsp;</td>
    <td width="250" align="left"><img src="image.php?<?php echo $res; ?>" /></td>
  </tr>
  <tr>
    <td width="150" align="left">&nbsp;</td>
    <td width="250" align="right"><input type="submit" value="Enter" class="submit" tabindex="4" />
    </td>
  </tr>
</table>
</form>
</fieldset>
</div></div>

<?
}
?>






<? include('footer.php'); ?>



Вот код image.php
<?php
session_start();

// Juego de letras para usar
$letras = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

// ConfiguraciГіn tamaГ±o imagen y tamaГ±o fuente
$ancho_caja = 130;
$alto_caja = 60;
$tam_letra = 10;
$tam_letra_grande = 45;
// angulo mГЎximo que rota (izq y der) cada letra
$angmax = 20;
// Establecer el tipo de contenido
header("Content-type: image/png");

// Creamos una imagen
$im = imagecreate($ancho_caja, $alto_caja);

// Creo el color del texto, del texto del fondo y del fondo de la imagen
$gris = ImageColorAllocate($im, 247, 247, 247);
$colorLetra = ImageColorAllocate($im, 105, 159, 189);
$colorLetraFondo = ImageColorAllocate($im, 247, 247, 247);


// tipo de letra obtenido en dafont.net
$fuente = './image2.ttf';

// Calculo el nГєmero de lГ*neas que entran
$caja_texto = imagettfbbox($tam_letra, 0, $fuente , $letras);
$alto_linea = abs($caja_texto[7]-$caja_texto[1]);
$num_lineas = intval($alto_caja / $alto_linea)+1;

// Dibujo las letras del fondo
// Cada letra de escribe de una en una para poder
// darle una rotaciГіn independiente al resto
$pos = 0;
for ($i = 0; $i<$num_lineas; $i++) {
    $x = 0;
    for ($j = 0; $j<30; $j++) {
        $texto_linea = $letras[rand(0, strlen($letras)-1)].' ';
        $caja_texto = imagettfbbox($tam_letra, 0, $fuente , $texto_linea);
        imagettftext($im, $tam_letra, rand(-$angmax, $angmax), $x, $alto_linea*$i, $colorLetraFondo, $fuente , $texto_linea);
        // Posicion x de la siguiente letra
        $x += $caja_texto[2] - $caja_texto[0];
    }
}


// Escribo las tres letras del CAPTCHA
$res = $letras[rand(0, strlen($letras)-1)];
$ang1 = rand(-$angmax, $angmax);
$caja_texto = imagettfbbox($tam_letra_grande, $ang1, $fuente , $res);
$y1 = abs($caja_texto[7]-$caja_texto[1]);
$x1 = abs($caja_texto[2]-$caja_texto[0]);

$res .= $letras[rand(0, strlen($letras)-1)];
$ang2 = rand(-$angmax, $angmax);
$caja_texto = imagettfbbox($tam_letra_grande, $ang2, $fuente , $res[1]);
$y2 = abs($caja_texto[7]-$caja_texto[1]);
$x2 = abs($caja_texto[2]-$caja_texto[0]);

$res .= $letras[rand(0, strlen($letras)-1)];
$ang3 = rand(-$angmax, $angmax);
$caja_texto = imagettfbbox($tam_letra_grande, $ang3, $fuente , $res[2]);
$y3 = abs($caja_texto[7]-$caja_texto[1]);
$x3 = abs($caja_texto[2]-$caja_texto[0]);

imagettftext($im, $tam_letra_grande, $ang1, ($ancho_caja/2)-(($x1+$x2+$x3)/2), $y1+($alto_caja-$y1)/2, $colorLetra, $fuente , $res[0]);
imagettftext($im, $tam_letra_grande, $ang2, ($ancho_caja/2)-(($x1+$x2+$x3)/2)+($x1), $y2+($alto_caja-$y2)/2, $colorLetra, $fuente , $res[1]);
imagettftext($im, $tam_letra_grande, $ang3, ($ancho_caja/2)-(($x1+$x2+$x3)/2)+($x1+$x2), $y3+($alto_caja-$y3)/2, $colorLetra, $fuente , $res[2]);

imagepng($im);
imagedestroy($im);
imagedestroy($im2);

$_SESSION["texto"] = $res;
?>

Ну вот, на одном хостинге показываетсЯ капча (и правильно работает), а на другом есть картинка, только пустая!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Webmaster_hb
Webmaster_hb
сообщение 7.7.2008, 15:55; Ответить: Webmaster_hb
Сообщение #8


dimjan4, опять вы за свое, вас просят написать конкретную ошибку которую выдает веб-сервер, она может быть скрытой, тогда ее надо посмотреть в логах
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
dimjan4
dimjan4
Topic Starter сообщение 7.7.2008, 16:27; Ответить: dimjan4
Сообщение #9


Так, я попробую объяснить, если этот скрипт залить на один хостинг, буквы проявляются, а если залить на другой, букв нет, просто пустое место!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Webmaster_hb
Webmaster_hb
сообщение 7.7.2008, 16:45; Ответить: Webmaster_hb
Сообщение #10


dimjan4, а мы вам объясняем, доступным, русским языком, если картинка не отображается, то скорее всего где-то ошибка, или в версии php или в доп модуле GD, да все что угодно, можно гадать очень долго
но в любом из этих случаев веб-сервер фиксирует ошибку php в логах, вот их и посмотрите и напишите нам
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Крауд-маркетинг который работает | Эффективные Ру-ссылки
1 Azyuka 958 13.2.2024, 19:36
автор: tascha56
Открытая тема (нет новых ответов) Кто работает с партнерской программой eBay?
0 Stalser 1151 14.12.2021, 12:26
автор: Stalser
Открытая тема (нет новых ответов) Кто работает с партнеркой Кликбанк?
4 metvekot 1697 5.12.2021, 22:32
автор: adamsadriane
Открытая тема (нет новых ответов) Бесплатный аудит рекламы от специалиста с 20 летним стажем. Реклама не всегда работает.
Ваша реклама может быть больше!
0 AndyGray 6769 1.4.2021, 12:31
автор: AndyGray
Открытая тема (нет новых ответов) Продам мануал "Как работает Google Discover"
8 vvovvo 3083 28.5.2020, 19:50
автор: vvovvo


 



RSS Текстовая версия Сейчас: 29.3.2024, 6:19
Дизайн