La Web del Programador: Comunidad de Programadores
 
    Pregunta:  66682 - CAPTCHA NO SE EJECUTA EN 000WEBHOST
Autor:  Hernán Camilo Martínez Valenzuela
Buenas noches les escribe Hernán Camilo Martínez desde Colombia,muchas deseo pedirles el favor de que me colaboren con lo siguiente:

Resulta que tengo una pagina en php y deseo insertar registros y ademas por seguridad deseo comparar una cadena de caracteres de validación frente a un captcha, pero al realizar lo siguiente me salen los siguientes errores:



PHP Error Message
Warning: include_once() [function.include-once]: open_basedir restriction in effect. File(/usr/local/apache/htdocs/securimage.php) is not within the allowed path(es): (/home/:/usr/lib/php:/tmp) in /home/a2000800/public_html/enviar_datos2.php on line 41

Warning: include_once(/usr/local/apache/htdocs/securimage.php) [function.include-once]: failed to open stream: Operation not permitted in /home/a2000800/public_html/enviar_datos2.php on line 41

Warning: include_once() [function.include]: Failed opening '/usr/local/apache/htdocs/securimage.php' for inclusión (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/a2000800/public_html/enviar_datos2.php on line 41

Fatal error: Class 'Securimage' not found in /home/a2000800/public_html/enviar_datos2.php on line 42
Free Web Hosting



El código de mi página es el siguiente:

<?php error_reporting(E_ALL & ~E_NOTICE); ?>
<?php
session_start();
include_once $_SERVER['DOCUMENT_ROOT'] . '/securimage.php'; // aquí me muestra error (line 41 en mi código)
$securimage = new Securimage(); // aquí me muestra error (line 42 en mi código)
if ($securimage->check($_POST['captcha_code']) == false) {
echo "<script>document.location.href =('/error.php');</script>";
exit;
}
$nombre=$_POST["Nombre5"];
$apellido=$_POST["Apellido5"];
$email=$_POST["Email5"];
$Paisciudad = $_POST['Paisciudad5'];
$radio=$_POST["radio"];
$mensaje=$_POST["Mensaje5"];
$Validatexto=$_POST["Validatexto"];
function Conectarse(){
if (!($link=mysql_connect("mysql12.000webhost.com","a2000800_ruut","calif2012"))){
echo "Error conectando a la base de datos. Por favor comunique con el administrador ";
exit();
}
if (!mysql_select_db("a2000800_Omnilif",$link)){
echo "Error seleccionando la base de datos. Por favor comunique con el administrador";
exit();
}
return $link;
}
if($_POST) { //si estan vacios los textos para que no me muestre "Digitar Nombre al abrir la // pagina"
$link = Conectarse(); # con esto me conecto a la DB
$Si= 'unchecked';
$No = 'unchecked';
$radio = $_POST['radio'];
if ($radio == 'Si') {
$Si_status = 'checked';
$_POST['radio']="Si";
$radio=1;
}
else if ($radio == 'No') {
$No_status = 'checked';
$_POST['radio']="No";
$radio=0;
}
}
if (mysql_query("INSERT INTO buzon (NombreB, ApellidoB, EmailB, PaisCiudadB, radio, Mensaje) VALUES ('$nombre','$apellido','$email','$Paisciudad','$radio','$mensaje')")){
$sql = mysql_num_rows(mysql_query("SELECT EmailB as email FROM buzon WHERE EmailB = '$email'"));
echo $sql;
if($sql<=1){
echo "<script>document.location.href =('/mensajeafiliacion.php');</script>";
set_time_limit(120);
$link=mysql_connect("mysql12.000webhost.com","a2000800_ruut","calif2012");
mysql_select_db("omnilife",$link);
$asunto = 'Prueba';
$mensaje = 'Buenas que tal';
$sql1 = mysql_query('SELECT EmailB FROM buzon');
while ($mail = mysql_fetch_array($sql1)){
mail($mail['EmailB'],$asunto,$mensaje);
echo $mail["EmailB"];
echo '- Email:';
echo "<br>";
}
}elseif($sql>1){
echo "<script>document.location.href =('/yaestaafiliado.php');</script>";
}
mysql_select_db("omnilife", $link);
mysql_query("DELETE FROM buzon WHERE NombreB = '' ");
mysql_close($link);
header("Cache-Control: no-cache, must-revalidate");
$Fecha=date("d-m-Y");
$Hora=date("H:i:S");
$Destino="[email protected]";
$Asunto= "Mensaje";
$Desde= "Desde: "
?>

vale la pena mencionar que cuando ejecutaba la página mediante el servidor Xampp me funcionaba bien la pagina pero al ejecutarla en el 000webhost no funciona bien me aparecen los errores que mencione anteriormente.
Muchas gracias y abrazos.

Att. Ing. Hernán Camilo Martínez V.
Bogotá D.C, Colombia.

  Respuesta:  Jose Garcia
Usa require once...

O create un captcha propio, que tengas un listado de letras incluyendo numeros, del listado elegir aleatoriamente un caracter y así 6 veces ponele.

Supongamos tenes un listado:
a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z (26 caracteres)

_ _ _ _ _ _ (donde estan los guiones bajos (sin los espacios) poner una letra al azar de la lista de arriba. (26^6 = 308915776 combinaciones!)
y podrías hacer 2 apartados de 6.

_ _ _ _ _ _ _ _ _ _ _ _ (95428956661682176 combinaciones)

Te conviene de esa forma (creo)