arrays - Error "No se puede usar el valor de retorno de la función en el contexto de escritura" en PHP
cookies fatal-error (3)
He ordenado tu código aquí:
<?php
//CLEAR THE ERROR MESSAGE
$error_msg = '''';
//CHECK TO SEE IF COOKIE IS SET
if ( ! isset($_COOKIE[''user_id'']))
{
$output_form = TRUE;
if (isset($_POST[''login_submit'']))
{
//GRAB DATA
$user_name = $_POST[''user_name''];
$user_password = $_POST[''user_pwd''];
if ( ! empty($user_name) && ! empty($user_password))
{
//DATABASE CONNECTION VARIABLE
$dbc = mysqli_connect(''localhost'',''root'','''',''mismatch'') or die(''Error Connecting To Database'');
//QUERY VARIABLE
$query = ''SELECT id FROM `user` WHERE user_name = /'''.mysql_real_escape_string($user_name).''/' and user_password = /'''.sha($user_password).''/''';
//ESTABLISHING CONNECTION
$result = mysqli_query($dbc,$query) or die(''Error Querying Database'');
if (mysql_num_rows($result)) {
$row = mysql_fetch_assoc($result);
//SET COOKIE
setcookie(''user_name'', $user_name);
setcookie(''user_id'', $row[''id'']);
header(''Location: /index.php'');
die();
}
else {
$error_msg = ''Please type both user name and password correctly to login'';
}
//TERMINATING CONNECTION
mysqli_close($dbc);
}
else {
$error_msg = ''Please type both user name and password correctly to login'';
}
}
else {
header(''Location: /register.php'');
die();
}
}
if ($output_form)
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Mismatch - Log In</title>
<link rel="stylesheet" href="stylesheets/style.css" media="all" />
</head>
<body class="body_style">
<?php
echo ''<label class="signin_label">''.$error_msg.''</label>'';
?>
<h2>Mismatch - Where Matches Happen...</h2>
<fieldset>
<legend>Mismatch - Log In</legend>
<form method="post" action="<?php echo $_SERVER[''PHP_SELF'']; ?>"><!--Self Referencing Form-->
<label class="signin_label">USER NAME</label>
<input type="text" name="user_name" title="Enter Your Account User Name" class="signin_textbox" value="<?php if(!empty($_POST[''user_name''])) echo $_POST[''user_name'']; ?>" /><br />
<label class="signin_label">PASSWORD</label>
<input type="password" name="user_pwd" title="Enter Your Account Password" class="signin_textbox" value="" /><br />
</fieldset>
<input type="submit" name="login_submit" title="Click To Log In" value="Log In" class="button" />
</body>
</html>
<?php
}
?>
Algunos problemas que recuerdo haber encontrado:
-
$_COOKIE(user_id)
lugar de$_COOKIE[''user_id'']
- Sin escapes en la entrada de MySQL
- Gran problema con su cláusula
while()
He reemplazado esto con unif
ymysql_fetch_assoc()
- Las consultas SQL dicen que la
form
noFROM
Hubo algunos otros también que probablemente he olvidado.
¡Disfrutar!
Error fatal: no se puede usar el valor de retorno de la función en el contexto de escritura en la línea 3,
¿En qué casos se desencadenan tales errores?
Mi programa:
//QUERY VARIABLE
$query="select * form user where user_name=''$user_name'' and user_password=''sha($user_password)''";
//ESTABLISHING CONNECTION
$result=mysqli_query($dbc,$query)or die(''Error Querying Database'');
while($row=mysqli_num_rows($result)==1)
{
//SET COOKIE
setcookie(''user_name'',$row[''user_name'']);
setcookie(''user_id'',$row[''id'']);
$query="select * form user";
$result=mysqli_query($dbc,$query)or die(''Error Querying Database'');
$page_url=''http://''.$_SERVER[''HTTP_HOST''].dirname($_SERVER[''PHP_SELF'']).''/index.php'';
header(''Location''.$page_url);
}
//TERMINATING CONNECTION
mysqli_close($dbc);
}
else
{
$error_msg=''Please type both user name and password correctly to login'';
}
//}
}
else
{
$page_url=''http://''.$_SERVER[''HTTP_HOST''].dirname($_SERVER[''PHP_SELF'']).''/register.php'';
header(''Location''.$page_url);
}
}
if($output_form)
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Mismatch - Log In</title>
<link rel="stylesheet" href="stylesheets/style.css" media="all" />
</head>
<body class="body_style">
<?php
echo(''<label class="signin_label">''.$error_msg.''</label>'');
?>
<h2>Mismatch - Where Matches Happen...</h2>
<fieldset>
<legend>Mismatch - Log In</legend>
<form method="post" action="<?php $_SERVER[''PHP_SELF'']; ?>"><!--Self Referencing Form-->
<label class="signin_label">USER NAME</label>
<input type="text" name="user_name" title="Enter Your Account User Name" class="signin_textbox" value="<?php if(!empty($_POST[''user_name'']))$_POST[''user_name'']; ?>" /><br />
<label class="signin_label">PASSWORD</label>
<input type="password" name="user_pwd" title="Enter Your Account Password" class="signin_textbox" value="" /><br />
</fieldset>
<input type="submit" name="login_submit" title="Click To Log In" value="Log In" class="button" />
<?php
}
?>
</body>
</html>
Intenta cambiar
if(!isset($_COOKIE(user_id)))
a
if(!isset($_COOKIE[''user_id'']))
^^ ^^
$_COOKIE
es una matriz asociativa.
Intenta mirar aquí
Tal vez ayude!