Home > Enterprise >  Fatal error: Can't use function return value in write context in /home/claymati/public_html/log
Fatal error: Can't use function return value in write context in /home/claymati/public_html/log

Time:07-12

This code was working correctly until about a day or two ago. I am new at php and am learning php 5 (which I intend to relearn everything once I am done my course.) The error that I keep getting now is: Fatal error: Can't use function return value in write context in /home/claymati/public_html/login.php on line 28

Thi is the code:

<!doctype html>
    <?php
    ini_set( "display_errors", "on" );
    error_reporting( E_ALL | E_STRICT );
    ini_set( "include_path", "./includes" );
    include( "dbinfo.inc" );
    $cxn = mysqli_connect($host,$user,$passwd,$dbname)
             or die ("couldn't connect to server");
    ?>
    
    <?php
    
     
    // Check if the user is already logged in, if yes then redirect him to welcome page
    if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true){
        header("location: stored.inc");
        exit;
    }
     
    // Define variables and initialize with empty values
    $username = $password = "";
    $username_err = $password_err = $login_err = "";
     
    // Processing form data when form is submitted
    if($_SERVER["REQUEST_METHOD"] == "POST"){
     
        // Check if username is empty
        if(empty(trim($_POST["username"]))){
            $username_err = "Please enter username.";
        } else{
            $username = trim($_POST["username"]);
        }
        
        // Check if password is empty
        if(empty(trim($_POST["password"]))){
            $password_err = "Please enter your password.";
        } else{
            $password = trim($_POST["password"]);
        }
        
        // Validate credentials
        if(empty($username_err) && empty($password_err)){
            // Prepare a select statement
            $sql = "SELECT id, username, password FROM users_login WHERE username = ?";
            
            if($stmt = mysqli_prepare($cxn, $sql)){
                // Bind variables to the prepared statement as parameters
                mysqli_stmt_bind_param($stmt, "s", $param_username);
                
                // Set parameters
                $param_username = $username;
                
                // Attempt to execute the prepared statement
                if(mysqli_stmt_execute($stmt)){
                    // Store result
                    mysqli_stmt_store_result($stmt);
                    
                    // Check if username exists, if yes then verify password
                    if(mysqli_stmt_num_rows($stmt) == 1){                    
                        // Bind result variables
                        mysqli_stmt_bind_result($stmt, $id, $username, $hashed_password);
                        if(mysqli_stmt_fetch($stmt)){
                            if(password_verify($password, $hashed_password)){
                                // Password is correct, so start a new session
                                session_start();
                                
                                // Store data in session variables
                                $_SESSION["loggedin"] = true;
                                $_SESSION["id"] = $id;
                                $_SESSION["username"] = $username;                            
                                
                                // Redirect user to welcome page
                                header("location: stored.inc");
                            } else{
                                // Password is not valid, display a generic error message
                                $login_err = "Invalid username or password.";
                            }
                        }
                    } else{
                        // Username doesn't exist, display a generic error message
                        $login_err = "Invalid username or password.";
                    }
                } else{
                    echo "Oops! Something went wrong. Please try again later.";
                }
    
                // Close statement
                mysqli_stmt_close($stmt);
            }
        }
        
        // Close connection
        mysqli_close($cxn);
    }
    ?>
     
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Login</title>
        <link href="style.css" rel="stylesheet" type="text/css">
        <style>
            body{ font: 14px sans-serif; }
            .wrapper{ width: 360px; padding: 20px; }
        </style>
    </head>
    <body>
        <div >
            <h1>Login</h1><br>
            <p>Please fill in your credentials to login.</p><br>
    
            <?php 
            if(!empty($login_err)){
                echo '<div >' . $login_err . '</div>';
            }        
            ?>
    
            <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
                <div >
                    <label>Username</label>
                    <input type="text" name="username"  value="<?php echo $username; ?>">
                    <span ><?php echo $username_err; ?></span>
                </div><br>  
                <div >
                    <label>Password</label>
                    <input type="password" name="password" >
                    <span ><?php echo $password_err; ?></span>
                </div>
                <div >
                    <input type="submit"  value="Login">
                </div>
                <br>
                <p>Don't have an account? Register Now </a>.</p>
            </form>
        </div>
    </body>
    </html>

Affected Part of code:

<?php


// Check if the user is already logged in, if yes then redirect him to welcome page
if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true){
    header("location: stored.inc");
    exit;
}

// Define variables and initialize with empty values
$username = $password = "";
$username_err = $password_err = $login_err = "";

// Processing form data when form is submitted
if($_SERVER["REQUEST_METHOD"] == "POST"){

    // Check if username is empty
    if(empty(trim($_POST["username"]))){
        $username_err = "Please enter username.";
    } else{
        $username = trim($_POST["username"]);
    }

    // Check if password is empty
    if(empty(trim($_POST["password"]))){
        $password_err = "Please enter your password.";
    } else{
        $password = trim($_POST["password"]);
    }

I am unsure how to fix this error as I am still fairly new.

CodePudding user response:

I'm not sure if you are using a version of PHP below 5.5 but if you are , you can't just do that you should do this instead:

$username = trim($_POST["username"]);
if(empty($username)){
...your code
}

or

if(trim($_POST["username"]) == false){
...your code
}

because empty function in versions below 5.5 support just variables

CodePudding user response:

$username = trim($_POST["username"]){ }

  • Related