Неустранимая ошибка: нельзя использовать возвращаемое значение функции в контексте записи в строке 3,
В каких случаях возникают такие ошибки?
Моя программа:
//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>
Попробуйте изменить
if(!isset($_COOKIE(user_id)))
в
if(!isset($_COOKIE['user_id'])) ^^ ^^
$_COOKIE
– ассоциативный массив.
Попробуйте посмотреть здесь
Weird PHP error: «Невозможно использовать возвращаемое значение функции в контексте записи»
Может быть, это помогает!
Я привел код здесь:
<?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 } ?>
Некоторые проблемы, которые я могу запомнить:
$_COOKIE(user_id)
вместо $_COOKIE['user_id']
while()
. Я заменил его на if
и mysql_fetch_assoc()
form
не FROM
Были и другие, о которых я, наверное, забыл.
Наслаждайтесь!