Ayuda con esto soy novato en esto de php y tengo un problema con un libro de visita que intento colgar en mi sitio web. Si alguien me puede ayudar estaré agradecido
e-mail: [email protected]
Warning: main(libro.inc.php): failed to open stream: No such file or directory in /home/webcindario/tormentadiretori/rdv-rdv/libto-visitas-rdv/firmar-libro.php on line 4
Warning: main(): Failed opening 'libro.inc.php' for inclusion (include_path='.') in /home/webcindario/tormentadiretori/rdv-rdv/libto-visitas-rdv/firmar-libro.php on line 4
Fatal error: Cannot instantiate non-existent class: libro in /home/webcindario/tormentadiretori/rdv-rdv/libto-visitas-rdv/firmar-libro.php on line 7
Estos son lo ficheros:
libro.inc.php
<?php
class Libro {
// este archivo debe estar creado antes de hacer funcionar la aplicación
var $archivo = 'libro.txt';
function abrirArchivo(){
// Verifica la existencia del archivo 'libro.txt'
if(file_exists($this->archivo)){
// Retoma los datos y con return lo devuelve
$c = file_get_contents($this->archivo,'r');
return $c;
} else {
// en caso de que no exista el archivo devuelve false
return false;
}
}
// $n = nombre, $c = correo, $m = mensaje
function guardarLinea($n,$c,$m){
// retomamos el contenido del archivo TXT llamando al método abrirArchivo() evaluado anteriormente
$contenido = $this->abrirArchivo();
// creamos la matriz de los argumentos $n,$c,$m
$args = func_get_args();
// contamos los argumentos, si son 3 seguimos con el programa
if(count($args)==3){
// a prueba de hack, por si desean alterar la división de información
$args = str_replace('#','',$args);
$contenido = $contenido
.$args[0]
."#"
.$args[1]
."#"
.$args[2]
."#"
.$_SERVER['REMOTE_ADDR']
."#"
.date('d-m-Y H:i:s')
."\n";
// abrimos el archivo y agregamos contenido
$archivo = fopen($this->archivo,'w');
$checar = (fputs($archivo,$contenido)) ? 1 : 0;
fclose($archivo);
return $checar;
} else {
exit('No se encontraron datos!');
}
}
// para visualizar los datos, devuelve una matriz
function abrirLibro() {
// retomamos de nuevo el contenido mediante método abrirArchivo()
$contenido = $this->abrirArchivo();
if($contenido){
// dividimos en lineas
$matriz = explode("\n",$contenido);
$info = array();
// asignamos a la matriz $info los datos de cada linea al dividir con #
foreach($matriz as $linea){
$info[] = explode("#",$linea);
}
return $info;
} else {
return false;
}
}
}
?>
firmar-libro.php
<?
// incluye la class
include_once 'libro.inc.php';
// creamos una nueva instancia
$libro = new Libro();
// verifica que existan los datos y de que se encuentren en buenas condiciones
if($_POST["firmar"]){
$nombre = $_POST["nombre"];
$correo = $_POST["correo"];
$mensaje = $_POST["mensaje"];
$errores = array();
if(empty($nombre)) $errores[] = 'NO AGREGASTE UN NOMBRE';
if(!ereg("^[^@]+@([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,}$", $correo)) $errores[] = 'NO AGREGASTE UN CORREO O SU SINTAXIS ES ERRONEA';
if(empty($mensaje)) $errores[] = 'NO AGREGASTE UN MENSAJE';
if($errores){
foreach($errores as $error){ echo $error."<br/>\n"; }
} else {
// si toda la información es correcta, agregamos la información al archivo TXT con el método guardarLinea()
if($libro->guardarLinea($nombre,$correo,$mensaje))
echo 'TU FIRMA HA SIDO AGREGADA CORRECTAMENTE, ENHORABUENA!';
}
}
?>
<form action="" method="post">
<table>
<tr>
<td colspan="2"><h1>Mi libro de visitas</h1></td>
</tr>
<tr>
<td>Nombre: </td>
<td><input name="nombre" type="text" id="nombre"></td>
</tr>
<tr>
<td>Correo electrónico: </td>
<td><input name="correo" type="text" id="correo"></td>
</tr>
<tr>
<td valign="top">Mensaje: </td>
<td><textarea name="mensaje" id="mensaje"></textarea></td>
</tr>
<tr>
<td></td>
<td><input name="firmar" type="submit" id="firmar" value="Firmar"></td>
</tr>
</table>
</form>
<hr/>
<?
// con lo siguiente mostramos las firmas con el método abrirLibro(); y la matriz que nos devuelve.
$contenido = $libro->abrirLibro();
if($contenido) {
foreach($contenido as $linea){
if(!in_array('',$linea)) {
list($nombre,$correo,$mensaje,$identidad,$fecha) = $linea;
echo "<strong>".htmlentities($nombre)."</strong> (".$identidad."<br/>n"
.'<a href="mailto:'.$correo.'">'.$correo."</a><br/>n"
.htmlentities($mensaje)."<br/>n"
.$fecha."<br/><br/>nn";
}
}
} else {
echo 'No se encontraron firmas';
}
?>