Hey allen,

Momenteel heb ik een tutorial gevolgd voor een mysqli register/login form alleen loop ik vast wanneer ik ga inloggen. want ik kom niet verder wanneer ik een gebruiker wil inloggen.



Register Form

<?php require "php_conectie/Connectie.php";?>
<?php
	if(isset($_POST['Register'])){
		
		session_start();
		$FName = $_POST['First_Name'];
		$LName = $_POST['Last_Name'];
		$Email = $_POST['Email'];
		$PW = $_POST['Password'];
		
		$StorePassword = password_hash($PW, PASSWORD_BCRYPT, array('cost'=> 10));
		
		$sql = $con->query("INSERT INTO user (Fname, Lname, Email, Password)Values('{$FName}', '{$LName}', '{$Email}', '{$StorePassword}')");	
		
		header('Location: Login.php');
	}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Register</title>

<link href="css/Master.css" rel="stylesheet" type="text/css">
<link href="css/Menu.css" rel="stylesheet" type="text/css">

</head>

<body>
	<div class="Container">
    	<div class="Header"></div>
        <div class="Menu">
        	<div id="Menu">
            	<nav>
                	<ul class="cssmenu">
                    	<li><a href="Register.php">Register</a></li>
                        <li><a href="Login.php">LogIn</a></li>
                    </ul>
                </nav>
           </div>
        </div>
        <div class="LeftBody"></div>
        <div class="RightBody">
        <form action="" method="post" name="RegisterForm" id="RegisterForm">
            	<div class="FormElement">
                	<input name="First_Name" type="text" required="required" class="TField" id="First_Name" placeholder="First Name">
                </div>
                <div class="FormElement">
                	<input name="Last_Name" type="text" required="required" class="TField" id="Last_Name" placeholder="Last Name">
                </div>
                <div class="FormElement">
                	<input name="Email" type="email" required="required" class="TField" id="Email" placeholder="E-mail">
                </div>
                <div class="FormElement">
                	<input name="Password" type="password" required="required" class="TField" id="Password" placeholder="Password">
                </div>
                <div class="FormElement">
                	<input name="Register" type="submit" class="button" id="Register" value="Register">
                </div>
            </form>
        </div>
        <div class="Footer"></div>
     </div>
</body>
</html>


Login

<?php require "php_conectie/Connectie.php";?>
<?php
	if(isset($_POST['LogIn'])){
		
		$EM = $_POST['email'];
		$PW = $_POST['password'];
		
		//$result = $con->query("select * from user where Email='$EM' AND Password='$PW'");
		$result = $con->query("select * from user where Email='$EM'");
		
		$row = $result-> fetch_array(MYSQLI_BOTH);
		
		if(password_verify($PW, $row['Password'])){
		
			session_start();
			$_SESSION["UserID"] = $row['UserID'];
			header('Location: Account.php');
		}else{
			session_start();
			$_SESSION["LogInFail"] = "Yes";	
		}
	}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>LogIn</title>

<link href="css/Master.css" rel="stylesheet" type="text/css">
<link href="css/Menu.css" rel="stylesheet" type="text/css">

</head>

<body>
	<div class="Container">
    	<div class="Header"></div>
        <div class="Menu">
        	<div id="Menu">
            	<nav>
                	<ul class="cssmenu">
                    	<li><a href="Register.php">Register</a></li>
                        <li><a href="Login.php">LogIn</a></li>
                    </ul>
                </nav>
           </div>
        </div>
        <div class="LeftBody"></div>
        <div class="RightBody">
            <form name="form1" method="post" action="">
            <?php if(isset($_SESSION["LogInFail"])){?>
				<div class="FormElement">LogIn Failed! Please Try Again.</div>
			<?php } ?>
                <div class="FormElement">
                	<input name="email" type="email" required="required" class="TField" id="email" placeholder="E-mail">
                </div>
                <div class="FormElement">
                	<input name="password" type="password" required="required" class="TField" id="password" placeholder="Password">
                </div>
                <div class="FormElement">
                	<input name="LogIn" type="submit" class="button" id="LogIn" value="LogIn">
                </div>
            </form>
        </div>
        <div class="Footer"></div>
     </div>
</body>
</html>


Account

<?php require "php_conectie/Connectie.php";?>
<?php
	session_start();
	if(isset($_SESSION["UserID"])){
	}else{
		//header('Location: Login.php'); // hier loop ik vast
	}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Account</title>

<link href="css/Master.css" rel="stylesheet" type="text/css">
<link href="css/Menu.css" rel="stylesheet" type="text/css">

</head>

<body>
	<div class="Container">
    	<div class="Header"></div>
        <div class="Menu">
        	<div id="Menu">
            	<nav>
                	<ul class="cssmenu">
                    	<li><a href="Register.php">Register</a></li>
                        <li><a href="Login.php">LogIn</a></li>
                        <li><a href="LogOut.php">LogOut</a></li>
                    </ul>
                </nav>
           </div>
        </div>
        <div class="LeftBody"></div>
        <div class="RightBody">Your Account<br>
			<br><?php echo $_SESSION["UserID"];?>
      </div>
        <div class="Footer"></div>
     </div>
</body>
</html>


Logout

<?php require "php_conectie/Connectie.php";?>
<?php
	session_start();
		unset($_SESSION["UserID"]);
		session_destroy();
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>LogOut</title>

<link href="css/Master.css" rel="stylesheet" type="text/css">
<link href="css/Menu.css" rel="stylesheet" type="text/css">

</head>

<body>
	<div class="Container">
    	<div class="Header"></div>
        <div class="Menu">
        	<div id="Menu">
            	<nav>
                	<ul class="cssmenu">
                    	<li><a href="Register.php">Register</a></li>
                        <li><a href="Login.php">LogIn</a></li>
                    </ul>
                </nav>
           </div>
        </div>
        <div class="LeftBody"></div>
        <div class="RightBody">You have Logged Out!<br>
			<br><?php echo $_SESSION["UserID"];?>
      	</div>
        <div class="Footer"></div>
</div>
</body>
</html>


Update Account

<?php require "php_conectie/Connectie.php";?>
<?php
	session_start();
	if(isset($_SESSION["UserID"])){
	}else{
		header('Location: Login.php'); // hier loop ik vast
	}
?>
<?php
	$User = $_SESSION["UserID"];
	$result = $con->query ("select * from user where UserID='$User'");
	$row = $result->fetch_array(MYSQLI_BOTH);
	session_start();
	
	$_SESSION["FirstName"] = $row['Fname'];
	$_SESSION["LastName"] = $row['Lname'];
	$_SESSION["Email"] = $row['Email'];
	$_SESSION["PW"] = $row['Password'];
?>
<?php
	if(isset($_POST['Update'])){
		
		$UpdateFName = $_POST['FirstName'];
		$UpdateLName = $_POST['LastName'];
		$UpdateEmail = $_POST['Email'];
		$UpdateFPassword = $_POST['Password'];
		
		$sql = $con->query("UPDATE user SET Fname = '{$UpdateFName}', Lname = '{$UpdateLName}', Email='{$UpdateEmail}', Password='{$UpdateFPassword}' where UserID= $User");
		
		header('Location: UpdateAccount.php');
		
	}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>UpdateAccount</title>

<link href="css/Master.css" rel="stylesheet" type="text/css">
<link href="css/Menu.css" rel="stylesheet" type="text/css">

</head>

<body>
	<div class="Container">
    	<div class="Header"></div>
        <div class="Menu">
        	<div id="Menu">
            	<nav>
                	<ul class="cssmenu">
                    	<li><a href="Register.php">Register</a></li>
                        <li><a href="Login.php">LogIn</a></li>
                    </ul>
                </nav>
           </div>
        </div>
        <div class="LeftBody"></div>
        <div class="RightBody">
        	<form name="form1" method="post" action="">
                <div class="FormElement">
                  <input name="FirstName" type="text" required="required" class="TField" id="FirstName" value="<?php echo $_SESSION["FirstName"]; ?>">
                </div>
                <div class="FormElement">
            	    <input name="LastName" type="text" required="required" class="TField" id="LastName" value="<?php echo $_SESSION["LastName"]; ?>">
                </div>
                <div class="FormElement">
        	        <input name="Email" type="email" required="required" class="TField" id="Email" value="<?php echo $_SESSION["Email"]; ?>">
                </div>
                <div class="FormElement">
    	            <input name="Password" type="password" required="required" class="TField" id="Password" value="<?php echo $_SESSION["PW"]; ?>">
                </div>
                <div class="FormElement">
 	               <input name="Update" type="submit" class="button" value="Update Info">
                </div>
            </form>
        </div>
        <div class="Footer"></div>
</div>
</body>
</html>
OP een of andere manier werkt het gewoon helemaal niet meer....

want ik krijg nu op elke pagina dezelfde error...

Fatal error: Call to a member function query() on a non-object in /home/i296429/domains/i296429.iris.fhict.nl/public_html/page/WP31/Week1/Login.php on line 12
Hoe zit je config nu in elkaar dan, want daar staat de connectie in.
Misschien ook handig om na de mysqli_connect nog iets te doen als:
<?php
if (mysqli_connect_errno($con)) {
echo mysqli_connect_error();
}
?>
(of, als je het OO wilt doen)
<?php
if ($con->connect_errno) {
echo $con->connect_error;
}
?>
- Aar - op 15/09/2015 10:14:47

Hoe zit je config nu in elkaar dan, want daar staat de connectie in.



<?php
// Verbinden met MySQL Database 
	$host = "localhost"; // Welke server : localhost 
	$username = "i296429_i296429"; // Geberuikersnaam 
	$password321 = "wachtwoord"; // Wachtwoord 
	$dbnaam = "databasenaam"; // Naam van de database 
	
	//$con = mysqli_connect ("$host", "$username", "$password321", "$dbnaam");
	$con= new mysqli($host, $username, $password321, $dbnaam);
	
	if ($con){
		echo("je bent verbonden");	
	}else{
		echo("je bent niet verbonden");	
	}
?>


dit is wat ik er nu uit krijg als antwoord:

Access denied for user 'i296429_i296429'@'localhost' (using password: YES)
> if ($con)

Dit gaat niet werken om te kijken of het connecten gelukt is, want je zult altijd een resource terugkrijgen. Je moet kijken of het connecten een error heeft opgeleverd.
los van dit verhaal kun je ook nog een melding Header already sent verwachten.

session_start() moet aangeroepen worden voordat je iets naar de browser stuurt. Je kúnt dat wel doen op regel 25 van een script, maar dan moet je niet zoals in je eerste script op regel 1 ?> gebruiken en dan een enter plaatsen.

Op regel 2 begint je script weer, maar intussen is er wel een enter naar de output geschreven.
Alleen als je output buffering op je server aan hebt staan, zal er niets gebeuren.

In een ander geval zal Apache roepen "he browser, hier komt wat html aan." (de header) en daarna stuurt hij een ascii karakter (de enter).

Bij session start wil php nog een header toevoegen, maar helaas, die zijn al naar de browser dus niet meer aan te passen.

Toevoeging op 15/09/2015 10:52:27:

session_start dus een eind naar boven (in elk script)
Enrico van der List op 15/09/2015 10:37:30

Access denied for user 'i296429_i296429'@'localhost' (using password: YES)

Foute inloggegevens dus.

Je moet verder met dit controleren of de gegevens correct zijn, of niet:

<?php
if ($mysqli->connect_error) {
    die('Connectie error (' . $mysqli->connect_errno . ') '
            . $mysqli->connect_error);
}
?>

Los daarvan is die() niet de beste manier, maar als je het heel netjes wilt doen raad ik een Exception aan.

Reageren