Foros del Web » Programando para Internet » PHP »

Ayuda libro de visitas

Estas en el tema de Ayuda libro de visitas en el foro de PHP en Foros del Web. Buenas,nada mas tengo un problema.. y seguramente me lo pueden solucionar al toke ustedes... tengo un libro de visitas,que no quiero que funcion "abiertamente",me explico? ...
  #1 (permalink)  
Antiguo 18/07/2005, 14:05
Saldu
Invitado
 
Mensajes: n/a
Puntos:
Exclamación Ayuda libro de visitas

Buenas,nada mas tengo un problema.. y seguramente me lo pueden solucionar al toke ustedes... tengo un libro de visitas,que no quiero que funcion "abiertamente",me explico? lo que quiero decir,es que nada mas quiero que firmen los usuarios que hiicieron session.. y cuando firmen,que aparezca su nombre...

El libro consta de 1 script,1 formulario,y la tabla... pero tambien pondré,para que sea mas util,el ingresar.php que es el archivo de login:

index.php :

Código:
<html>
<head>
	<title>Libro de visitas</title>
	<link rel="STYLESHEET" type="text/css" href="estilo.css">
</head>
<body>
<br>
<table align="center" width="550" cellspacing="2" cellpadding="8" border="0" bgcolor="#ffffff">
<tr>
    <td>
<h1>Libro de visitas PHP</h1>
<?
//conecto con la base de datos
$conn = mysql_connect("servidor","usuario","password"); 
mysql_select_db("nombre_bbdd",$conn); 


if (!$HTTP_POST_VARS)
{
	//si no recibo nada por el formulario de firma del libro, muestro las firmas del libro
	//construyo la sentencia SQL
	$ssql = "SELECT * FROM librovisitas_php";
	
	//se mostrarán las últimas fimas, aunque habrá un enlace en la parte de abajo que se podrá pulsar para ver más firmas
	if (isset($_GET["vermas"]))
		$ssql .=  " where id_librovisitas_php<=" . $vermas;

	//ordeno la sentencia y limito el numero de resultados
	$ssql .= " ORDER BY id_librovisitas_php desc limit 11";
	
	//tomo el juego de resultados
	$resultid = mysql_query($ssql,$conn);
	?>
	
	Aqu&iacute; puedes leer los mensajes de los visitantes y tambi&eacute;n puedes dejar el tuyo utilizando el formulario de abajo.
	<br>
	<br>
	<span class=fuente8><b>Muchas gracias por tu participaci&oacute;n</b></span>
	<br>
	<br>
	<?
	//muestro los datos en un bucle
	$num_filas = 0;
	while (($damefila=mysql_fetch_object($resultid)) && ($num_filas<10))
	{
		?>
		<table align="center" width="100%" cellspacing="2" cellpadding="0" border="0">
		<tr>
		    <td valign="top" class=fuente8><b>
		<? 	//si el visitante no introdujo nombre muestro como nombre "Anónimo"
			if ($damefila->nombre == "-"){
				echo "Anónimo";
			}elseif ($damefila->email != "-") {
				echo '<a href="mailto:' . $damefila->email . '">' . $damefila->nombre . '</a>';
			}else{
				echo $damefila->nombre;
			}
		?></b>:<br>
		</td></tr>
		<tr><td bgcolor=cccccc colspan="2"><img src="images/pixeltrans.gif" width=1 height=1 border="0"></td></tr>
		<td class=fuente8 valign="top">
			<?echo strip_tags($damefila->comentario)?>
			<td valign="top" align="right" nowrap class=fuente8>
			Valoracion: <?echo $damefila->valoracion?> 
		</td>
		</tr>
		</table>
		
		<br>
		<?
		$num_filas++;
	} //termina el bucle while
	
	//si quedan más valoraciones en el conjunto de resultados, muestro el enlace de "Ver más"
	if ($damefila)
		echo "<div align=center><b><a href=\"index.php?vermas=$damefila->id_librovisitas_php\">Ver m&aacute;s mensajes</a></b></div><br>";
		
	//libero el conjunto de resultados
	mysql_free_result($resultid);
	
	//incluyo el formulario para firmar
	include ("formul_mensaje.html");
} 
else 
{
	//estoy recibiendo datos del fomulario de firmas
	//Formateamos un poco el formulario, por si acaso los datos son incorrectos
	
	//eliminamos las etiquetas HTML y PHP de las cadenas de texto
	$nombre = strip_tags($_POST["nombre"]);
	$email = strip_tags($_POST["email"]);
	$comentario = strip_tags($_POST["comentario"]);
	
	//Cortamos las cadenas demasiado largas
	$nombre=substr($nombre,0,150);
	$email=substr($email,0,80);
	
	//Comprobamos que el visitante se ha molestado en rellenar algo
	if (strlen($nombre)==0 and strlen($email)==0 and strlen($comentario)==0)
	{
?>
		<div align="center"><b>Gracias por el envío</b>.<br><br>Te agradecer&iacute;amos, no obstante y si no resulta mucho esfuerzo, que rellenases alguno de los campos para dejar constancia de tu visita.</div>
<?
	}else{
		//si alguno de los campos falta prefiero colocar un guión o "sin comentarios"
		if (!$nombre)$nombre="-";
		if (!$email) $email="-";
		if (!$comentario) $comentario="Sin comentarios";
	
		//Generamos la ssql e insertamos el registro
		$ssql = "INSERT INTO librovisitas_php (nombre,email,valoracion,comentario) VALUES ('" . $nombre . "','" . $email . "'," . $_POST["valoracion"] . ",'" . $comentario . "')";
		//echo $ssql . "<p>";
		mysql_query($ssql,$conn);
?>
		<div align="center"><b>Muchas gracias por tu participaci&oacute;n</b></div>
<?
	}
?>
	<br>
	<br>
	<div align="center"><b><a href=".">Volver al libro de visitas</a></b></div>
<?
}

mysql_close($conn);
?>

	</td>
</tr>
</table>
<br>

</body>
</html>

Y aqui viene el formulario,formul_mensaje.html :


Código:
<form name=librovisitas action="index.php" method="post">
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
	<td class=titcol>&nbsp;<b>Firma el Libro de Visitas</b></td>
</tr>
<tr>
	<td class=fuente8>&nbsp;D&eacute;janos tu mensaje en el libro de visitas y danos tu opini&oacute;n del sitio
	<br>
	<br>
	</td>
</tr>
<tr>
	<td>
	<table width="100%" cellspacing="0" cellpadding="0" border="0">
	<tr>
    	<td class=fuente8 align="center">
		Nombre
		<br>
		<input type="Text" name="nombre" size="20" maxlength="150">
		<br>
		<br>
		Email
		<br>
		<input type="Text" name="email" size="20" maxlength="100">
		<br>
		<br>
		Valoración
		<br>
		<select name="valoracion">
		<option value=1>Repelente
		<option value=2>Mal
		<option value=3 selected>Regular
		<option value=4>Bien
		<option value=5>Fant&aacute;stica
		</select>
		</td>
		<td ALIGN=CENTER class=fuente8 valign="middle">
			Comentarios:
			<br>
			<textarea name="comentario" cols="30" rows="7"></textarea>
		</td>
	</tr>
	<tr>
		<td colspan=2 align=center class=fuente8>
		<br>
		<input type="submit" value="  Enviar la firma al libro de visitas  ">
		</td>
	</tr>
	</table>
	</td>
</tr>
</table>
</form>

CREATE TABLE librovisitas_php (
id_librovisitas_php int(11) unsigned NOT NULL auto_increment,
nombre varchar(150) NOT NULL,
email varchar(100) NOT NULL,
valoracion tinyint(4),
comentario text,
PRIMARY KEY (id_librovisitas_php)
);


ahora les muestro el ingresar.php:

<?php
session_start();
print("<body bgcolor=#009900 text=#FFFFFF link=#FFFFFF>");
require_once("conexion.php");
$Query = mysql_query("SELECT * FROM usuarios WHERE username='".addslashes(strip_tags($_POST['User']))."' && user_password ='".addslashes(strip_tags($_POST['Password']))."'");
$Q_num = mysql_num_rows($Query);
if($Q_num == 1){
$data = mysql_fetch_array($Query);
$_SESSION['username'] = strip_tags($_POST['User']);
$_SESSION['Auth'] = "YES" ;
$_SESSION["codigoUsuario"] = $data["codigo"];
echo "<script>window.location='default.php';</script>";
exit;
} else {
$_SESSION['Auth'] = "NO" ;
echo("Usuario / Clave no son válidos, intente de nuevo...");
}
?>

Gracias... Espero que me puedan ayudar

Última edición por Saldu; 18/07/2005 a las 14:11
  #2 (permalink)  
Antiguo 18/07/2005, 15:12
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 12 años, 10 meses
Puntos: 4
si solo deseas ke firmen usuarios registrados tendrias ke preguntar si el usuario ha iniciado sesion o esta logueado:
Código PHP:
<?
session_start
();
if(!empty(
$_SESSION["usuario"]))
{
 
//aki pones el formulario si el usuario esta logueado en tu web
}
else
{
echo 
'No estas logueado'// este mensaje aparece si no lo esta
}
?>
espero ke te sirva. pruebalo y nos cuentas

Un saludo :)
  #3 (permalink)  
Antiguo 18/07/2005, 15:56
Saldu
Invitado
 
Mensajes: n/a
Puntos:
yo siempre,al principio de cada pagina pongo esto:

<?php
session_start();
require_once('conexion.php');
if (isset($_SESSION['Auth']) && $_SESSION['Auth'] == 'YES') {
// Aquí tiene acceso
}else{
// Aquí no tiene acceso
echo "<script>window.location='../prohibido.php?error=No tiene acceso al

sistema!!';</script>";
}

?>


Con eso prohibo al visitante de ver el contenido,sin hacer login...
Me olvide de ponerlo en los scripts... el problema ,es que yo quiero que los usuarios firmen,y aparezca el nombre del usuario que firmo,entienden? una tonteria.. pero no lo se hacer,muchas gracis
  #4 (permalink)  
Antiguo 18/07/2005, 19:24
Saldu
Invitado
 
Mensajes: n/a
Puntos:
Creo que me mal interpretaron.. yo ya se como blokearle el acceso a un visitante sin haber hecho login.. lo que yo quiero es que cuando el usuario firme, estampe su nombre de usuario,me explico? osea, seria la sessión username.. eso no lo sé hacer.. haci que si pueden ayudarme,seria muy util..
  #5 (permalink)  
Antiguo 19/07/2005, 18:59
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 12 años, 10 meses
Puntos: 4
haber si en tu tabla tienen un campo llamado autor pues ahi insertaras la sesion del usuario logueado y ke haya firmado y dicha sesion la envias desde un campo hidden, o sea ya no pondras un textbox

<input type="hidden" name="autor" value="'.$_SESSION["usuario"].'">

Código PHP:
<?
include('config.php');
$query "select * from tabla_libro where id='$id'";
$resp mysql_query($query);
while (
$datos mysql_fetch_array($resp)) {
echo 
'Enviada por $datos[autor]'// donde kieras ke se muestre el autor pones eso
}
?>

pruebalo y nos dices ke tal te fue

Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:31.