Foros del Web » Programando para Internet » PHP »

ya probe todo que falta

Estas en el tema de ya probe todo que falta en el foro de PHP en Foros del Web. a que se debe este error Notice: Undefined variable: _SESSION in d:\inetpub\wwwroot\PRUEBA4\TMP172vldhyyw.php on line 4 Notice: Use of undefined constant SID - assumed 'SID' in ...
  #1 (permalink)  
Antiguo 17/03/2005, 07:01
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 12 años, 10 meses
Puntos: 3
ya probe todo que falta

a que se debe este error

Notice: Undefined variable: _SESSION in d:\inetpub\wwwroot\PRUEBA4\TMP172vldhyyw.php on line 4

Notice: Use of undefined constant SID - assumed 'SID' in d:\inetpub\wwwroot\PRUEBA4\TMP172vldhyyw.php on line 12


es en la parte de login.php

?????

soy nuevo en esto apena lo comence a estudiar
gracias
  #2 (permalink)  
Antiguo 17/03/2005, 09:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Y ... y.... que código estás usando? .. que versión de PHP usas? .. has revisado la documentación oficial sobre sesiones: www.php.net/session (sobre todo configuración básica).

Un saludo,
  #3 (permalink)  
Antiguo 17/03/2005, 13:18
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 12 años, 10 meses
Puntos: 3
HOLA EL CODIGO ES ESTE

<?php
// Inicializamos las variables
$loginCorrecto = false;
unset($_SESSION['id']);
$nickUsuarioL="";
$emailUsuarioL="";
$nombreUsuarioL="";
//Inicializamos el nº de recargas de la página si no está inicializado
if(!isset($_SESSION['recarga'])){
$_SESSION['recarga'] = 0;}
//Inicializamos la variable sid para utilizarla más tarde
$sid = md5(SID);

//Incluimos el script que detecta el navegador y la IP del usuario
include('identificar.inc.php');
//Hayamos la variable que le corresponde al navegador que se está usando
//para luego compararla con la de la base de datos
$identificador = md5(get_full_ip() .'-'. browser_detection());

if(!isset($_COOKIE["Acepta"]))// Comprueba si acepta cookies
{
echo 'Acepto cookies, que pasa?!!??<br>';

// Comprueba que existan las cookies de nick y password
if(isset($_COOKIE["usNick"]) && isset($_COOKIE["usPass"]))
{
// Comprueba q haya un usuario en la BD con esos datos
$result = mysql_query("SELECT * FROM usuarios WHERE nick = '".$_COOKIE["usNick"]."' AND
sid = '".$_COOKIE["usPass"]."' AND identificador = '".$identificador."'");
if($row = mysql_fetch_array($result))
{
$sql = "Update usuarios Set sid = '".$sid."', ultima_visita = NOW() Where id = '".$row['id']."'";
mysql_query($sql) or die (mysql_error());

// Si es que existe regraba las cookies y registra unas cuantas variables q pueden ser utiles
setcookie("usNick",$_COOKIE["usNick"],time()+7776000);
setcookie("usPass",md5(SID),time()+7776000);

$_SESSION['usNick'] = $_COOKIE["usNick"];
$_SESSION['usPass'] = md5(SID);
$_SESSION['id'] = $row['id'];

$loginCorrecto = true;
$nickUsuarioL = $row["nick"];
$emailUsuarioL = $row["email"];
$nombreUsuarioL = $row["nombre"];
}
else
{
// Si no existe, destruimos las cookies.
setcookie("usNick","x",time()-3600);
setcookie("usPass","x",time()-3600);
}
mysql_free_result($result);// Libera la consulta
}
}
else // Si es que no acepta cookies
{
// Comprueba si ya ha probado a escribir la cookie y si ya ha probado es que no se aceptan
if (isset($_COOKIE['Acepta']) && $_SESSION['recarga'] > 1)
{
echo 'No acepto cookies, que pasa?!!??<br>';
}

// Comprueba las variables de nick y password pero esta vez en variables de sesión
if(isset($_SESSION["usNick"]) && isset($_SESSION["usPass"]))
{
// Comprueba q haya un usuario en la BD con esos datos
$result = mysql_query("SELECT * FROM usuarios WHERE nick = '".$_SESSION["usNick"]."' AND
sid = '".$_SESSION["usPass"]."' AND identificador = '".$identificador."'");
if($row = mysql_fetch_array($result))
{
$sql = "Update usuarios Set ultima_visita = NOW() Where id = '".$row['id']."'";
mysql_query($sql) or die (mysql_error());

// Si es que existe registra unas cuantas variables q pueden ser utiles
$_SESSION['id'] = $row['id'];
$loginCorrecto = true;
$nickUsuarioL = $row["nick"];
$emailUsuarioL = $row["email"];
$nombreUsuarioL = $row["nombre"];
}
else
{
// Si no existe destruimos las sesiones.
unset($_SESSION['usNick']);
unset($_SESSION['usPass']);
unset($_SESSION['id']);
}
mysql_free_result($result);// Libera la consulta
}
}
// Esto indica que la ya se ha probado a escribir la cookie
$_SESSION['recarga'] = $_SESSION['recarga']+1;
?>

y las versiones que tengo de PHP es la 4.3
MySQL la 5 alpha-max algo asi
y la ODBC 3.6.10

siempre los eh usado esos espero su respuestas gracias
  #4 (permalink)  
Antiguo 17/03/2005, 14:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Te falta session_start() antes de pretender usar $_SESSION (sea para dar valor .. o para obtenerlo de una variable de sesión).


Tal vez quien diseñó ese código (podrías citar la fuente? .. URL o donde esté si es público) .. pensó que se usa "session.auto_start = ON" en tu php.ini . .pero eso no es así "por defecto" .. así que es recomendable usar session_start() siempre.



Un saludo,
  #5 (permalink)  
Antiguo 17/03/2005, 16:49
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 12 años, 10 meses
Puntos: 3
mmmm voy a probar a ver no me habia fijado si tenia el session_start() en login.php aunque este mismo codigo lo tenia antes de formatiar el wind xp y me andaba a la perfecion el problema me vino despues que instale de nuevo todo y le di copiar y pegar .. no sera algo en el php.ini ???? probare con esto y te digo gracias
  #6 (permalink)  
Antiguo 17/03/2005, 20:29
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 12 años, 10 meses
Puntos: 3
holaa Cluter estaba viendo eso me paso lo siguiente cuando puse el session_start() en login.php como me dijiste se me resolvio el problema del NOTICE aunque esto me lo encontre raro porque antes lo tenia como esta y no me daba ningun error todo vino despues de formatiar el windows bueno esto se me resolvio peeeerroo en index.php que no tenia error me salio esto

Notice: A session had already been started - ignoring session_start() in d:\inetpub\wwwroot\PRUEBA4\login.php on line 2
El sistema no lo ha identificado, solo los usuarios registrados tienen acceso a este area
registro
login
numero de visitantes 674

por que tengo el session_start() al comeinso del codigo cosa que lo saque y se me resolvio el problema segun el error era como que esta demas

pero un detalle en registrar.php

Notice: Undefined index: nick in d:\inetpub\wwwroot\PRUEBA4\TMP75ra9dj0cu.php on line 28
Debe llenar como minimo los campos de email y password
Registro

en ingresar.php

Notice: Undefined index: nick in d:\inetpub\wwwroot\PRUEBA4\TMP786zddj0g0.php on line 33
Debe especificar un nick y password
Login

y en la conexion.php

Notice: Undefined variable: usuarios in d:\inetpub\wwwroot\PRUEBA4\TMP79g32dj0hm.php on line 8

Warning: Cannot modify header information - headers already sent by (output started at d:\inetpub\wwwroot\PRUEBA4\TMP79g32dj0hm.php:8) in d:\inetpub\wwwroot\PRUEBA4\TMP79g32dj0hm.php on line 25

en el error 8 seria del
//Sentencia SQL para buscar un usuario con esos datos
$ssql = "SELECT * FROM usuarios WHERE nick='$usuarios'";

lo estraño de todo esto es que el formulario llega a la base de datos la autentificacion me sale a la perfecion osea todo anda como tiene que ser pero estos error estan que se puede hacer con esto :(

auxilioooooooo GGuuaaahhhkk :(
  #7 (permalink)  
Antiguo 18/03/2005, 08:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
aunque esto me lo encontre raro porque antes lo tenia como esta y no me daba ningun error todo vino despues de formatiar el windows
Ya te dije que si usas session.auto_Start = 1 en tu php.ini .. no es necesario usar session_Start() en cada script que uses sesiones. Si no conoces que configuración usabas antes al respecto .. es complicado asegurar que sea por ese motivo que "antes" te funcionase y ahora no .. Debes fijarte y conocer que "existe" configuración de PHP para muchas taréas como el uso de sesiones por ejemplo ..

El resto de problemas que arrastras . .realmente sin ver el código completo (de los scripts que intervienen) no sé que decir .. Ayudaría también ver la configuración de sesiones que usas (por si hay algo más que configurar ... )


Un saludo,
  #8 (permalink)  
Antiguo 19/03/2005, 20:17
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 12 años, 10 meses
Puntos: 3
bien ooff revisare el php.ini y de paso te enviare los codigos
  #9 (permalink)  
Antiguo 20/03/2005, 11:36
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 12 años, 10 meses
Puntos: 3
Pregunta

hola cluter mira me fije en el php.ini y esta session.auto_Start = 0 osea todo php.ini esta por default como esta desde que se instala aqui te mando los codigos comenzando por la base de datos y tablas
---------------------------
create databases nuevo;
------------------------
CREATE TABLE `usuarios` (
`id` bigint(7) NOT NULL auto_increment,
`nombre` varchar(100) NOT NULL default '',
`nick` varchar(30) NOT NULL default '',
`password` varchar(32) NOT NULL default '',
`sid` varchar(32) NOT NULL default '',
`identificador` varchar(32) NOT NULL default '',
`ultima_visita` timestamp(14) NOT NULL,
`email` varchar(100) NOT NULL default '',
UNIQUE KEY `id_2` (`id`),
KEY `id` (`id`)
) TYPE=MyISAM AUTO_INCREMENT=10 ;
-------------------------
formulario.htm
<?
// Inicio de sessión
session_start();
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<FORM ACTION="registrar.php?'. SID .'" METHOD="post">
Nick : <INPUT TYPE="text" NAME="nick" SIZE=20 MAXLENGTH=20>
<BR>
Email: <INPUT TYPE="text" NAME="email" SIZE=28 MAXLENGTH=100>
<BR>
Password: <INPUT TYPE="password" NAME="password" SIZE=28 MAXLENGTH=20>
<BR>
Nombre: <INPUT TYPE="text" NAME="nombre" SIZE=28 MAXLENGTH=255>
<BR>
<INPUT TYPE="submit" CLASS="boton" VALUE="Registrar">
</FORM>
</body>
</html>
--------------------------
registrar.php
<?php
// Inicio de sessión
session_start();
// Servidor de la Base de Datos
$servidorBD="localhost";
// Usuario de la Base de Datos
$usuarioBD="dominicana";
// Contraseña de la Base de Datos
$passBD="clave_de_dominicana";
// Nombre de la Base de Datos
$nombreBD="nuevo";
// Conecto con la base de datos
$conectar = mysql_connect($servidorBD,$usuarioBD, $passBD) or die ("Imposible conectar con la base de datos");
// Selecciono la BBDD
mysql_select_db($nombreBD,$conectar) or die ("Imposible conectar con la base de datos");
function quitar($mensaje)
{
$mensaje = str_replace("<","&lt;",$mensaje);
$mensaje = str_replace(">","&gt;",$mensaje);
$mensaje = str_replace("\'","'",$mensaje);
$mensaje = str_replace('\"',"&quot;",$mensaje);
$mensaje = str_replace("\\\\","\",$mensaje);
return $mensaje;
}

if(trim($_POST["nick"]) != "" && trim($_POST["email"]) != "")
{
$sql = "SELECT id FROM usuarios WHERE nick='".quitar($_POST["nick"])."'";
$result = mysql_query($sql);
if($row = mysql_fetch_array($result))
{
echo 'Error, nick escogido por otro usuario
<br>
<a href="formulario.html?'. SID .'">Registro</a>
';
}
else
{
$sql = "INSERT INTO usuarios (nick,password,nombre,email) VALUES (";
$sql .= "'".quitar($_POST["nick"])."'";
$sql .= ",md5('".quitar($_POST["password"])."')";
$sql .= ",'".quitar($_POST["nombre"])."'";
$sql .= ",'".quitar($_POST["email"])."'";
$sql .= ")";
mysql_query($sql);
echo 'Registro exitoso!
<br>
<a href="index.php?'. SID .'">Index</a>
';
}
mysql_free_result($result);
echo "Tu registro se ha realizado correctamente";
}
else
{
echo 'Debe llenar como minimo los campos de email y password
<br>
<a href="formulario.html?'. SID .'">Registro</a>
';
}
mysql_close();
?>
en registrar me da el siguiente error
Notice: Undefined index: nick in d:\inetpub\wwwroot\PRUEBA4\TMP12jsidnuvb.php on line 28
Debe llenar como minimo los campos de email y password
Registro
------------------
ingresar.php
<?php
// Inicio de sessión
session_start();
// Servidor de la Base de Datos
$servidorBD="localhost";
// Usuario de la Base de Datos
$usuarioBD="dominicana";
// Contraseña de la Base de Datos
$passBD="clave_de_dominicana";
// Nombre de la Base de Datos
$nombreBD="nuevo";
// Conecto con la base de datos
$conectar = mysql_connect($servidorBD,$usuarioBD,$passBD) or die ("Imposible conectar con la base de datos");
// Selecciono la BBDD
mysql_select_db($nombreBD,$conectar) or die (mysql_error());
include('identificar.inc.php');
//Inicializamos la variable sid para utilizarla más tarde
$sid = md5(SID);
function quitar($mensaje)
{
$mensaje = str_replace("<","&lt;",$mensaje);
$mensaje = str_replace(">","&gt;",$mensaje);
$mensaje = str_replace("\'","'",$mensaje);
$mensaje = str_replace('\"',"&quot;",$mensaje);
$mensaje = str_replace("\\\\","&#92",$mensaje);
return $mensaje;
}

if(trim($_POST["nick"]) != "" && trim($_POST["password"]) != "")
{
$nickN = quitar($_POST["nick"]);
$passN = quitar($_POST["password"]);

$result = mysql_query("SELECT id, password FROM usuarios WHERE nick='$nickN'");
if($row = mysql_fetch_array($result))
{
if($row["password"] == md5($passN))
{
//Introduce en la BD los datos encriptados de IP,Host,y navegador
$identificador = md5(get_full_ip() .'-'. browser_detection());
$sql = "Update usuarios Set sid = '".$sid."', identificador = '".$identificador."',
ultima_visita = NOW() Where id = '".$row['id']."'";
mysql_query($sql) or die (mysql_error());
//90 dias dura la cookie
// setcookie("usNick",$nickN,time()+7776000);
// setcookie("usPass",$sid,time()+7776000);
setcookie("usNick",$nickN,time()+7776000,"/","localhost");
setcookie("usPass",$passN,time()+7776000,"/","localhost");


//También las de sesión
$_SESSION['usNick'] = $nickN;
$_SESSION['usPass'] = $sid;
$_SESSION['id'] = $row['id'];
?>
<SCRIPT LANGUAGE="javascript">
location.href = "index.php?<? echo SID ?>";
</SCRIPT>
<?
}
else
{
echo 'Password incorrecto
<br>
<a href="formulario_login.php?">Login</a>
';
}
}
else
{
echo 'Usuario no existente en la base de datos
<br>
<a href="formulario_login.php?'. SID .'">Login</a>
';
}
mysql_free_result($result);
}
else
{
echo 'Debe especificar un nick y password
<br>
<a href="formulario_login.php?">Login</a> ';
}
mysql_close();
?>
en ingresar.php me sale este error
Notice: Undefined index: nick in d:\inetpub\wwwroot\PRUEBA4\TMP14rrudnuy6.php on line 33
Debe especificar un nick y password
Login
-------------------
  #10 (permalink)  
Antiguo 20/03/2005, 11:46
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 12 años, 10 meses
Puntos: 3
login.php

<?php
// Inicializamos las variables
$loginCorrecto = false;
unset($_SESSION['id']);
$nickUsuarioL="";
$emailUsuarioL="";
$nombreUsuarioL="";
//Inicializamos el nº de recargas de la página si no está inicializado
if(!isset($_SESSION['recarga'])){
$_SESSION['recarga'] = 0;}
//Inicializamos la variable sid para utilizarla más tarde
$sid = md5(SID);

//Incluimos el script que detecta el navegador y la IP del usuario
include('identificar.inc.php');
//Hayamos la variable que le corresponde al navegador que se está usando
//para luego compararla con la de la base de datos
$identificador = md5(get_full_ip() .'-'. browser_detection());

if(!isset($_COOKIE["Acepta"]))// Comprueba si acepta cookies
{
echo 'Acepto cookies, que pasa?!!??<br>';

// Comprueba que existan las cookies de nick y password
if(isset($_COOKIE["usNick"]) && isset($_COOKIE["usPass"]))
{
// Comprueba q haya un usuario en la BD con esos datos
$result = mysql_query("SELECT * FROM usuarios WHERE nick = '".$_COOKIE["usNick"]."' AND
sid = '".$_COOKIE["usPass"]."' AND identificador = '".$identificador."'");
if($row = mysql_fetch_array($result))
{
$sql = "Update usuarios Set sid = '".$sid."', ultima_visita = NOW() Where id = '".$row['id']."'";
mysql_query($sql) or die (mysql_error());

// Si es que existe regraba las cookies y registra unas cuantas variables q pueden ser utiles
setcookie("usNick",$_COOKIE["usNick"],time()+7776000);
setcookie("usPass",md5(SID),time()+7776000);

$_SESSION['usNick'] = $_COOKIE["usNick"];
$_SESSION['usPass'] = md5(SID);
$_SESSION['id'] = $row['id'];

$loginCorrecto = true;
$nickUsuarioL = $row["nick"];
$emailUsuarioL = $row["email"];
$nombreUsuarioL = $row["nombre"];
}
else
{
// Si no existe, destruimos las cookies.
setcookie("usNick","x",time()-3600);
setcookie("usPass","x",time()-3600);
}
mysql_free_result($result);// Libera la consulta
}
}
else // Si es que no acepta cookies
{
// Comprueba si ya ha probado a escribir la cookie y si ya ha probado es que no se aceptan
if (isset($_COOKIE['Acepta']) && $_SESSION['recarga'] > 1)
{
echo 'No acepto cookies, que pasa?!!??<br>';
}

// Comprueba las variables de nick y password pero esta vez en variables de sesión
if(isset($_SESSION["usNick"]) && isset($_SESSION["usPass"]))
{
// Comprueba q haya un usuario en la BD con esos datos
$result = mysql_query("SELECT * FROM usuarios WHERE nick = '".$_SESSION["usNick"]."' AND
sid = '".$_SESSION["usPass"]."' AND identificador = '".$identificador."'");
if($row = mysql_fetch_array($result))
{
$sql = "Update usuarios Set ultima_visita = NOW() Where id = '".$row['id']."'";
mysql_query($sql) or die (mysql_error());

// Si es que existe registra unas cuantas variables q pueden ser utiles
$_SESSION['id'] = $row['id'];
$loginCorrecto = true;
$nickUsuarioL = $row["nick"];
$emailUsuarioL = $row["email"];
$nombreUsuarioL = $row["nombre"];
}
else
{
// Si no existe destruimos las sesiones.
unset($_SESSION['usNick']);
unset($_SESSION['usPass']);
unset($_SESSION['id']);
}
mysql_free_result($result);// Libera la consulta
}
}
// Esto indica que la ya se ha probado a escribir la cookie
$_SESSION['recarga'] = $_SESSION['recarga']+1;
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>


</body>
</html>

me da el siguiente error

Notice: Undefined variable: _SESSION in d:\inetpub\wwwroot\PRUEBA4\TMP22gbrdnw5u.php on line 4

Notice: Use of undefined constant SID - assumed 'SID' in d:\inetpub\wwwroot\PRUEBA4\TMP22gbrdnw5u.php on line 12

------------------

formulario_login.php

<?
// Inicio de sessión
session_start();

?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<FORM ACTION="ingresar.php?<? echo SID ?>" METHOD="post">
Nick : <INPUT TYPE="text" NAME="nick" SIZE=20 MAXLENGTH=20>
<BR>
Password: <INPUT TYPE="password" NAME="password" SIZE=28 MAXLENGTH=20>
<BR>
<INPUT TYPE="submit" CLASS="boton" VALUE="Ingresar">
</FORM>


</body>
</html>

-----------------
index.php

<?php
// Inicio de sessión
session_start();
// Servidor de la Base de Datos
$servidorBD="localhost";
// Usuario de la Base de Datos
$usuarioBD="dominicana";
// Contraseña de la Base de Datos
$passBD="clave_de_dominicana";
// Nombre de la Base de Datos
$nombreBD="nuevo";
// Conecto con la base de datos
$conectar = mysql_connect($servidorBD,$usuarioBD,$passBD) or die ("Imposible conectar con la base de datos");
// Selecciono la BBDD
mysql_select_db($nombreBD,$conectar) or die ("Imposible conectar con la base de datos");

// Probamos que acepte cookies y grabamos una
setcookie("Acepta","cookies si",time()+7776000);

// Incluye el script que comprueba si ya estás logueado o si tienes una cookie que te permita
// entrar sin hacer login otra vez.
include("login.php");

if($loginCorrecto)
{
echo 'Aqui el contenido solo para usuarios registrados
<p>Estas identificado en el sistema como -- '.$nickUsuarioL.'--
<br>
<a href="logout.php?'. SID .'">logout</a>';
}
else
{
echo 'El sistema no lo ha identificado, solo los usuarios registrados tienen acceso a este area
<br>
<a href="formulario.php?'. SID .'">registro</a>
<br>
<a href="formulario_login.php?'. SID .'">login</a>';
}
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<?php
echo "<p>numero de visitantes " ;
$maestro01 = fopen("contador_base.txt","r");
$leer = fgets($maestro01,9999999);
echo $leer;
fclose($maestro01);
$maestro01 = fopen("contador_base.txt","r+");
$leer=fgets($maestro01,9999999);
rewind($maestro01);
fputs($maestro01,$leer+1);
fclose($maestro01);
?>


</body>
</html>

aqui todo bien
-----------------

eso es todo espero que me ayuden para poder seguir con mi web mil gracias desde ahora
  #11 (permalink)  
Antiguo 20/03/2005, 11:47
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 12 años, 10 meses
Puntos: 3
y si necesita el

identificar.inc.php aqui esta

<?php
/************************************************** ************************************************** *********
Identificar el navegador
************************************************** ************************************************** *********/
/*
Author: Harald Hope, Website: http://tech.ratmachines.com/
Script Source URI: http://tech.ratmachines.com/downloads/downloads.php
Version 3, 4 February 2004
*/

//version 2, complex, but simple really.

/*
pack the browser type array, in this order
the order is important, because opera must be tested first, and ie4 tested for before ie general
same for konqueror, then safari, then gecko, since safari navigator user agent id's with 'gecko' in string.
note that $domBrowser is set for all modern dom browsers, this gives you a default to use, unfortunately we
haven't figured out a safe way to do this with actual method testing, which would be much better and reliable.
Obviously you could place a cookie based on a method test with javascript, force a page reload, and have
PHP read that cookie, but that would always depend on cookies being on.
*/

//Inicializar un par de funciones por si acaso
if (!isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
$_SERVER['HTTP_X_FORWARDED_FOR']="";}
if (!isset($_SERVER['HTTP_CLIENT_IP'])){
$_SERVER['HTTP_CLIENT_IP']="";}


function browser_detection() {

global $domBrowser, $unknownBrowser, $browser_name, $NN4, $IE4, $os, $unknownOS;
$userBrowser = $_SERVER['HTTP_USER_AGENT'];

//packs the browser array
// with browser name and if browser is dom, or modern
// do not change the order of this, since correct testing depends on this order
$a_browser_types[] = array('Opera', true);
$a_browser_types[] = array('MSIE 4', false);
$a_browser_types[] = array('MSIE', true);
$a_browser_types[] = array('Konqueror', true);
$a_browser_types[] = array('Safari', true);
$a_browser_types[] = array('Gecko', true);// covers Netscape 6-7, K-Meleon, Most linux versions
$a_browser_types[] = array('Mozilla/4', false);// this has to be last or else ie or opera might register true
//$a_browser_types[] = array('', ); // spare array fillers
//$a_browser_types[] = array('', );
//$a_browser_types[] = array('', );

/*
packs the os array
use this order since some navigator user agents will put 'macintosh' in the navigator user agent string
which would make the nt test register true
*/
$a_os = array('lin', 'mac', 'unix', 'solaris', 'bsd', 'nt', 'win');

//os tester
for ($i = 0; $i < count($a_os); $i++)
{
//unpacks os array, assigns to variable
$s_os = $a_os[$i];
$b_os_success = false;

//assign os to global os variable, os flag true on success
if (stristr($userBrowser, $s_os))
{
$os = $s_os;
$b_os_success = true;

// this is the test, you wouldnt' use this normally of course, it's just to make sure the script works
//echo("i =$i<br />os = $os<br />");
break;
}
}
//assigns defaults if the OS was not found in the loop test
if (!$b_os_success)
{
$unknownOS = true;
}

//Main browser tester array
/*
run through the browser_types array, break if you hit a match, if no match, assume old browser
or non dom browser, assigns false value to $b_success.
*/
for ($i = 0; $i < count($a_browser_types); $i++)
{
//unpacks browser array, assigns to variables
$s_browser = $a_browser_types[$i][0];
$b_dom = $a_browser_types[$i][1];
$b_success = false;

if (stristr($userBrowser, $s_browser))
{
$browser_name = $s_browser;
switch ( $browser_name )
{
case 'Mozilla/4':
$NN4 = true;
$safe_browser = false;
break;
case 'Gecko':
$rv = which_gecko( $userBrowser, 'rv' );
$release = which_gecko( $userBrowser, 'release' );
// this is to protect against Netscape 6.2 / mozilla pre version 1.0 errors
// if your CSS runs in Mozilla 0.9/netscape 6.x then this isn't necessary,
//just return true, skip this test
if ( ( $rv < 1 ) || ( $release < 20020400 ) )
{
$safe_browser = false;
}
else {
$safe_browser = true;
}
break;
default:
$safe_browser = true;
break;
}

$domBrowser = $b_dom;
$b_success = true;

// this is the test, you wouldnt' use this normally of course, it's just to make sure the script works
//echo("i =$i<br />browser = $browser_name<br />dom= $domBrowser<br />name= $s_browser<br />nua= $userBrowser<br />");
break;
}
}
//assigns defaults if the browser was not found in the loop test
if (!$b_success)
{
$safe_browser = false;
$domBrowser = false;
$unknownBrowser = true;
}
// this depends on what you want to use the function for, you can return any of the variables, or
// use the global variables anywhere in your scripts as long as this is run before you request them
// uncomment this for basic safe browser test, usually all the mozillas would pass this
return $userBrowser;
}

/*
function returns gecko rv or release date
can be used to verify browser functionality more or less,
but remember that rv versions can be very different depending on which gecko browser it is,
for example Galeon will have a different rv version for the same gecko engine in some cases, the
build date is more reliable.

go to: http://www.mozilla.org/releases/cvstags.html
for the full information on the gecko versions
*/
function which_gecko( $browser_string, $rv_or_release )
{
if ( $rv_or_release == 'rv' )
{
$rv_pos = strpos( $browser_string, 'rv:' );
$rv = substr( $browser_string, ( $rv_pos + 3 ), 3 );
return $rv;
}
elseif ( $rv_or_release == 'release' )
{
$gecko_pos = strpos( $browser_string, 'Gecko/' );
$gecko_release = substr( $browser_string, ( $gecko_pos + 6 ), 8 );
return $gecko_release;
}
}


/************************************************** ************************************************** *********
Identificar la IP
************************************************** ************************************************** *********/
function get_full_ip(){
// get client real ip
if ($_SERVER['HTTP_X_FORWARDED_FOR']):
$IP_ADDR = $_SERVER['HTTP_X_FORWARDED_FOR'] ;
elseif($_SERVER['HTTP_CLIENT_IP']):
$IP_ADDR = $_SERVER['HTTP_CLIENT_IP'] ;
else:
$IP_ADDR = $_SERVER['REMOTE_ADDR'];
endif;

// get server ip and resolved it
$FIRE_IP_ADDR = $_SERVER['REMOTE_ADDR'];
$ip_resolved = gethostbyaddr($FIRE_IP_ADDR);

// builds server ip infos string
if ($FIRE_IP_ADDR != $ip_resolved && $ip_resolved):
$FIRE_IP_LITT = $FIRE_IP_ADDR." - ". $ip_resolved;
else:
$FIRE_IP_LITT = $FIRE_IP_ADDR;
endif;

// builds client ip full infos string
if ($IP_ADDR != $FIRE_IP_ADDR ):
$FULL_IP_INFOS = "$IP_ADDR | $FIRE_IP_LITT" ;
else:
$FULL_IP_INFOS = $FIRE_IP_LITT ;
endif;
return $FULL_IP_INFOS;

}

// Para ver los resultados
//echo browser_detection().'<br>';
//echo get_full_ip();
?>

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
</body>
</html>
  #12 (permalink)  
Antiguo 20/03/2005, 15:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No he estudiado todo tu còdigo en pronfundidad .. pero lo que si que veo es que tienes algunas incoherencias. De repente en un script haces dos veces session_start() .. en otros lados propagas el SID en el URL y en otros no .. Luego haces o usas un juego con "SID" que generas y manejas a tu manera que no me he puesto a ver como funciona ...

En resumen y como consejo: Empieza por el principio. Intenta usar un ejemplo bàsico que use sesiones .. el típico .. crear en un script una variable de sesiòn y pasar al segundo script para leerla .. asì de simple (ejemplo tienes en las FAQ's). Si eso te funciona .. continuas .. sino, hay que evaluar por què no se pueda propagar el SID. Pero no puedes empezar la "casa por el tejado" y màs si tienes problemas.

Un saludo,
  #13 (permalink)  
Antiguo 21/03/2005, 06:44
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 12 años, 10 meses
Puntos: 3
Bueno mira estaba usando las autentificaciones tuyas que de ahi fue que saque todo por cierto muy bueno congratulation esta perfecto bueno en

aut_gestion_usuario.php


no te pongo el codigo porque es medio largo pero ya que es tuyo debes de tenerlo ahi me da este error

Notice: Undefined index: HTTP_REFERER in d:\inetpub\wwwroot\autentificator_v201\aut_verific a.inc.php on line 41

Notice: Undefined index: HTTP_REFERER in d:\inetpub\wwwroot\autentificator_v201\aut_verific a.inc.php on line 45
Error cod.:1 - Acceso incorrecto

que me parese que es el mismo error

lo bueno de todo esto es que todo me funciona como tiene que ser el envio de datos a la base de datos el ingreso etc... el unico inconveniente son estos NOTICE que ya me estan volviendo loco y no me dejan siguir haciendo mi web que ya lo quiero terminar

bueno que Opinas

ah estaba viendo si repeti el session_star() en los codigos y no lo enocntre lo que si es que creo que cada php si se lo puse bueno uuufff que cree !!!!
  #14 (permalink)  
Antiguo 21/03/2005, 07:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Notice: Undefined index: HTTP_REFERER in d:\inetpub\wwwroot\autentificator_v201\aut_verific a.inc.php on line 41

Notice: Undefined index: HTTP_REFERER in d:\inetpub\wwwroot\autentificator_v201\aut_verific a.inc.php on line 45
Error cod.:1 - Acceso incorrecto
La variable de servidor HTTP_REFERER que entrega la "página referida" .. no es entregada en muchos casos por proxys que la bloquean . .navegadores con configuración de seguridad alta .. y otros elementos de red.

Puedes omitir esa parte del código de aut_verifica.inc.php que hace dicha validación .. fijando el valor de $redir al URL que esté tu formulario de login (script/página como se llame) como para que Autentificator separ donde tiene que enviar los mensajes de error si se producen.

Esa porción de código no afecta para nada el resto de la seguridad de tu aplicación. Es solo una funcionalidad para no depender de un sólo formulario de lógin (y así poder tener vários de forma "transparente" ..).

Un saludo,
  #15 (permalink)  
Antiguo 21/03/2005, 08:41
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 12 años, 10 meses
Puntos: 3
Cluter Cluter mi gran amigo :) me eh pasado la mañana revisando eso y haciendo un pequeño script me da practicamente el mismo error del NOTICE

<?php
if ($expression) {
?>
<strong>This is true.</strong>
<?php
} else {
?>
<strong>This is false.</strong>
<?php
}
?>

da esto

Notice: Undefined variable: expression in d:\inetpub\wwwroot\TMP64rdwdpib9.PHP on line 8

para mi el problema es alguna config de php.ini o de algun lado
  #16 (permalink)  
Antiguo 21/03/2005, 09:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
A ver ..

Una cosa es el error concreto que tenías antes (el del HTTP_REFERE) y otra cosa lo que pretendes hacer.

El error en su base te dice que una variable no está definida .. El control del reporte de errores lo hace PHP en su php.ini:
error_reporting

Y también se puede ajustar en tiempo de ejecución por la función de mismo nombre a un nivel de errores menor.

Pero .. ese no es el problema .. el problema de base y que por eso te "avisa" PHP es que estás "progrmanado mal" .. con esto quiero decir .. que no puedes (teóricamente) acceder a una variable que no está definida.

Para eso . .usa:

if (isset($variable)){
// usas $variable
}

"Si está definida la variable -> la usas" ..

Eso te va a suceder cuando las variables son externas al scritp que ejecutas. Por ejemplo las que puedan llegar por $_POST .. por $_GET .. o son de $_SESSION .. o $_COOKIES o de servidor $_SERVER . .u otras.

Esa variable que usas en tu ejemplo . .no sé de donde llega (por qué no indicas el método) .. Eso no es seguro ademas que confunde mucho. Usa los arrays superglobales: $_POST, $_GET .. etc, según el metódo que tengan que llegar.

Sin embargo .. en la programación de un script cualquiera de una variable que defines y usas en el mismo script .. nunca te dará un aviso de ese estilo pues siempre se suele predefinir tipo con algún valor.

A su vez .. el problema anterior con "HTTP_REFERER" es el que te mencioné .. Ese valor lo obtienes (si es que te lo dá el servidor HTTP a PHP en ese momento) si vienes de una página anterior .. si lo haces directo no será entregado . .y pese a eso puede que no lo entregue como ya te comenté.

Un saludo,

Última edición por Cluster; 21/03/2005 a las 09:09
  #17 (permalink)  
Antiguo 21/03/2005, 11:16
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 12 años, 10 meses
Puntos: 3
y que me recomiendas borrar el error_reporting de php.ini porque este error me lo hace con cuarquier codigo que haga no solo con la que te mande tambien con una mas sencillla que acabo de hacer


<?php
include "conectar.php";
$nick = $_POST["nick"];
$pass = $_POST["pass"];
$email = $_POST["email"];
$query=mysql_query("SELECT nick FROM usuarios WHERE nick='$nick'", $conn) or die (mysql_error());

if(mysql_num_rows($query)){
echo "El usuario ya existe en nuestra base de datos";
echo "Haz click <a href=\"freg.html\">AKI</a> para regresar al formulario de registro.";
}
else {
mysql_free_result($query);
}


$query=mysql_query("INSERT INTO usuarios (nick, pass, email) VALUES ('$nick','$pass','$email')",$conn) or die (mysql_error());

if(mysql_affected_rows($conn)){
echo "Tu registro se ha realizado correctamente";
} else {
echo "Error en el proceso de registro";
}

?>


Notice: Undefined index: nick in d:\inetpub\wwwroot\prueba5\TMPbpectdppja.php on line 3

Notice: Undefined index: pass in d:\inetpub\wwwroot\prueba5\TMPbpectdppja.php on line 4

Notice: Undefined index: email in d:\inetpub\wwwroot\prueba5\TMPbpectdppja.php on line 5
El usuario ya existe en nuestra base de datosHaz click AKI para regresar al formulario de registro.Tu registro se ha realizado correctamente

:(
  #18 (permalink)  
Antiguo 22/03/2005, 07:06
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 12 años, 10 meses
Puntos: 3
auxiliooooooooo no me dejen solo que me vuelvo locooooooooo :( voy a formatiar windows de nuevo :(:(:(:(:(:(:(:(:(:(
  #19 (permalink)  
Antiguo 23/03/2005, 14:24
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 12 años, 10 meses
Puntos: 3
ya esta ya solucione el famoso error NOTICE

Notice: Undefined index: nick in d:\inetpub\wwwroot\PRUEBA4\TMPe32modtnnr.php on line 32
Debe especificar un nick y password
Login

en la linea 32 que tenia esto

if(trim($_POST["nick"]) != "" && trim($_POST["password"]) != "")

delante de $_post le puse @ osea asi:

if(trim(@$_POST["nick"]) != "" && trim(@$_POST["password"]) != "")

Debe especificar un nick y password
Login

MISION CUMPLIDA gracias de igual manera a aquellos que hicieron posible para resolver esto tenk you so muck
  #20 (permalink)  
Antiguo 24/03/2005, 06:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por coyote20
ya esta ya solucione el famoso error NOTICE

Notice: Undefined index: nick in d:\inetpub\wwwroot\PRUEBA4\TMPe32modtnnr.php on line 32
Debe especificar un nick y password
Login

en la linea 32 que tenia esto

if(trim($_POST["nick"]) != "" && trim($_POST["password"]) != "")

delante de $_post le puse @ osea asi:

if(trim(@$_POST["nick"]) != "" && trim(@$_POST["password"]) != "")

Debe especificar un nick y password
Login

MISION CUMPLIDA gracias de igual manera a aquellos que hicieron posible para resolver esto tenk you so muck
Ese @ sólo "oculta" el mensaje de error .. de hecho ajustanto tu php.ini en la directiva error_reporting a un nivel de mensajes de error más bajo no verías esos "notice" y te evitarías estar usando @ en todo script. También podrías usar la función error_Reporting() para tal fin (al principio de tus scripts)

Pero la solución pasa por usar empty() o isset() .. para "preguntar" si tu variable está definida antes de pretender usalar ...

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 13:19.