Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-05-2008
lakers lakers is offline
Miembro
 
Registrado: abr 2007
Posts: 47
Poder: 0
lakers Va por buen camino
¿cómo puedo loguear?

hola muy buenas a tod@s
estoy intentando hacer un logueo para que solamente las personas que estàn registradas(logueadas) pueden entrar en la página,y una vez que estàn logueadas pues asignarle un identificador para efectuar una serie de operaciones(compra,etc...) es lo que se llama la propagación de sessiones.
lo que ocurre me sale el siguiente error y no sé cómo resolverlo.
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\apache\htdocs\pruebas\index.php:8)
(sabiendo que no dejo ningun espacio en blanco ni nada)
pagina que efectua el logueo es la siguiente :si observais algo que se puede
quitar o mejorar estaré agradecido.yaque estoy una persona novate en el mundo de php.
Código PHP:
session_name();
session_start();
mysql_connect("localhost","","host") or die ("<h2>Problemas al establecer la conexión</h2>");
mysql_select_db("prueba") or die ("<h2> Problemas al seleccionar la base de datos</h2>");
if(
$_POST['username'])
{
  
$usernarme=$_POST['username'];
  
$password=$_POST['password'];
  if(empty(
$password) || empty($username)){
   echo 
"<h2> el campo del nombre o la contraseña no fueron enviados</h2>";}
  else 
  {
   
$query="select usuario,clave from usuarios where usuario='".$username."'";
   
$result=mysql_query($query);
   
$data=mysql_fetch_array($result);
   if(
$data['clave']!=$password){
 
        echo 
"<h2> Usted no tienes el permiso para entrar aqui </h2>";
 }
   else 
   {
     
$q=mysql_query("select usuario,clave from usuarios where usuario='$username' and clave='$password'") or die (mysql_error());
     
$row=mysql_fetch_array($q);
  
$_SESSION["s_username"]=$row['usuario'];
  
$valid_user=$s_username;
  
session_register("valid_user"); //1 
  
echo " <a href=\"index.php ?PHPSESSID=".$PHPSESSID."\"><h2>Pulse   aqui  para acceder la página principal</h2></a>";//2  
 
   
}
  } 

¿?se puede omitir ¿?//1
¿?en vez de propagar la session mediante PHPSESSID existe otra alternativa ¿?//2
página del index
Código PHP:
<html>
<head>
 <title></title>
</head>
<body text="#000000">
  <p><img src="bibliotecas.jpg" width="190" height="100" </p> 
  <p>&nbsp;</p>
  <?php 
  session_start
(); //me da el fallo que comenté
  
echo "<h2> por favor elija una categoria: </h2>";
en las otras páginas relacionadas con el index.php siempre empiezo con session_start() con la intención de que si ya se inicializo una session pues que termine con ella y si no que crea una nueva.
espero que me explicado + o - bien.
gracias por vuestra ayuda.
en la espera de vuestras respuestas les saludo atentamente.
muchas gracias
Responder Con Cita
  #2  
Antiguo 10-05-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

El problema es que, una vez que "sirves" contenido, no puedes luego añadir más cabeceras HTTP. Es decir, volviendo a tu ejemplo:

Código PHP:
<html>
<head>
 <title></title>
</head>
<body text="#000000">
  <p><img src="bibliotecas.jpg" width="190" height="100" </p> 
  <p>&nbsp;</p>
  <?php 
  session_start
(); //me da el fallo que comenté
  
echo "<h2> por favor elija una categoria: </h2>";
A partir del "html" estás enviando el contenido, pero luego ejecutas "session_start()", que a su vez trata de enviar cabeceras HTTP, y de ahí el error: no es posible enviarlas, porque ya se han enviado, junto con el contenido del principio. La solución no es única, pero, en este caso podrías, en principio, hacer algo así:

Código PHP:
<?php session_start(); ?>
<html>
<head>
 <title></title>
</head>
<body text="#000000">
  <p><img src="bibliotecas.jpg" width="190" height="100" </p> 
  <p>&nbsp;</p>
  <?php 
  
echo "<h2> por favor elija una categoria: </h2>";
De este modo "session_start()" podrá hacer su trabajo, antes de que se envíe contenido alguno, como debe ser.

Es un problema muy habitual, sobre todo cuando se empieza con PHP. Poco a poco le pillarás el hilo, ya lo verás.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 10-05-2008
lakers lakers is offline
Miembro
 
Registrado: abr 2007
Posts: 47
Poder: 0
lakers Va por buen camino
muchisima gracias maestro
ya se quito el error que aparecia.ahora lo que me falta solamente poder agregar los productos del carro en la base de datos y por eso estaba con la identificación con la intención de distinguir las compras de cada cliente, mediante SID(id sesión)=>seguro que te sueña mejor yo ).
mi tabla de pedidos tiene la siguiente estructura:
pedidoid(primary key,auto_increment)
clienteid(para identificar a cada cliente)
categoid(para identificar la compra de cada cliente)
nombre(nombre de la persona)
dirección(dirección de la persona que efectua la compra)
...
no sé si con esta estructura cubro los datos necesarios del cliente para guardar su compra en el caso de que tiene más de un pedido¿?
aqui os dejo el script que recoge la información de la compra:
Código PHP:
session_start();//inicializamos  o retomamos la sesión
if(isset($_SESSION['carro']))
$carro=$_SESSION['carro'];else $carro=false;
//La asignamos a la variable  
//$carro si existe o ponemos a false $carro  
//en caso contrario  
?>
<html>
<head>
<title>PRODUCTOS AGREGADOS AL CARRITO</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.tit {
 font-family: Verdana, Arial, Helvetica, sans-serif;
 font-size: 9px;
 color: #FFFFFF;
}
.prod {
 font-family: Verdana, Arial, Helvetica, sans-serif;
 font-size: 9px;
 color: #333333;
}
h1 {
 font-family: Verdana, Arial, Helvetica, sans-serif;
 font-size: 20px;
 color: #990000;
}
-->
</style>
</head>
<body>
<h1 align="center"><h2>Tu Carrito de Compra</h2></h1>
<?php //si el carro no está vacio mostramos los productos
if($carro){
?>
<table width="720" border="0" cellspacing="0" cellpadding="0" align="center">
  <tr bgcolor="#333333" class="tit"> 
    <td width="105">Producto</td>
    <td width="207">Precio</td>
    <td colspan="2" align="center">Cantidad de Unidades</td>
    <td width="100" align="center">Borrar</td>
    <td width="159" align="center">Actualizar</td>
  </tr>
  <?php
  
/*estas dos lineas solamente para hacer una tabla con colores*/
  
$color=array("#ffffff","#F0F0F0");
  
$cont=0;
  
  
$suma=0;
   
/*antes de recorrer todos 
   los valores de la matriz $carro, ponemos a cero la   
   variable $suma, en la que 
   iremos sumando los subtotales 
   del costo de cada item por la 
   cantidad de unidades que se 
   especifiquen*/
   
   
foreach($carro as $k => $v){
   
/* recorremos la matriz que tiene 
    todos los valores del carro,     
    calculamos el subtotal y el  total*/
   
$subto=$v['cantidad']*$v['precio'];
   
$suma=$suma+$subto;
   
$cont++;
    
?>
  <form name="a<?php echo $v['identificador'?>" method="post" action="sumacar2.php?<?php echo SID ?>" id="a<?php echo $v['identificador'?>">
    <tr bgcolor="<?php echo $color[$cont%2]; ?>" class='prod'> 
      <td><?php echo $v['producto'?></td>
      <td><?php echo $v['precio'?></td>
      <td width="43" align="center"><?php echo $v['cantidad'?></td>
      <td width="136" align="center"> 
        <input name="cantidad" type="text" id="cantidad" value="<?php echo $v['cantidad'?>" size="8">
        <input name="id" type="hidden" id="id" value="<?php echo $v['id'?>"> </td>
      <td align="center"><a href="delete2.php?<?php echo SID ?>&id=<?php echo $v['id'?>"><img src="basura.gif" width="15" height="15" border="0"></a></td>
      <td align="center"> 
        <input name="imageField" type="image" src="image.jpg" width="20" height="20" border="0"></td>
  </tr></form>
  <?php }?>
</table>
<div align="center"><span class="prod">Total de Artículos:<?php echo "<h2>".count($carro)."</h2>";
/* 
por cada item creamos un formulario que submite a agregar producto y un link que permite eliminarlos  
*/
 
 
?></span> 
</div><br>
<div align="center"><span class="prod">Total:<?php echo "<h2>".number_format($suma,2)."€</h2>"?></span> 
</div>
  <?php }?>
/*aqui es un formulario que me coge los datos del cliente que se va guardar 
 en la base de datos
*/ 
<table border=0 width=100% cellspacing=0>
<form action=pedido.php method=post>
<tr><th colspan=2 bgcolor="#cccccc"><h2>Su información<h2></th></tr>
<tr>
   <td><h2>Nombre:</h2></td>
   <td><input type=text name=name value="" maxlength=40 size=40></td>
</tr>   
<tr>
   <td><h2>Dirección:</h2></td>
   <td><input type=text name=address value="" maxlength=40 size=40></td>
</tr>
<tr>
   <td><h2>Cuidad:</h2></td>
   <td><input type=text name=city value="" maxlength=20 size=40></td>
</tr> 
<tr>  
   <td><h2>Codigo Postal:</h2></td>
   <td><input type=text name=postal value="" maxlength=10 size=40></td>
</tr>
<tr>
  <td colspan=2 align=center>
  <b>por favor pulse para confirmar su compra</b><center><input type=submit name=enviar value=comprar></center>
  </td>
</tr>  
</form>
</table><hr>   
</body>
</html>  
gracias por soportarme hasta aqui,espero vuestra ayuda yaque me ase falta urgentemente.
muchisimas gracias 
saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
no me puedo conectar con el BDE fedelphi Conexión con bases de datos 1 16-11-2006 22:56:02
No puedo leer JPG en D7 roman Gráficos 15 21-07-2004 10:36:25
Puedo conectarme a un DB por TCP/IP Alexander MS SQL Server 2 27-05-2004 18:49:54
dbgrid no puedo omy OOP 2 21-10-2003 19:34:15
Que puedo hacer Rolando Varios 3 12-09-2003 22:10:50


La franja horaria es GMT +2. Ahora son las 22:46:54.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi