Jag håller på med en sida här nu där man ska logga in sen om man ahr loggat in korrekt så ska man skickas automatiskt till en sida som heter welcome.php hur gör jag det i denna kod?
<?php
session_start();
require("connect.php");
$post_username = $_POST['username'];
$post_password = $_POST['password'];
if($post_username&&$post_password)
{
if(strlen($post_username)>25||strlen($post_password)>15)
echo "Username or password character length too long!";
else
{
//Convert password to md5
$post_password = md5($post_password);
//query the database
$login = sprintf("SELECT * FROM users WHERE username='%s' AND password='%s'", mysql_real_escape_string($post_username), mysql_real_escape_string($post_password));
$rowcount = mysql_num_rows(mysql_query($login));
$fieldarray = mysql_fetch_assoc(mysql_query($login));
$id = $fieldarray['id'];
if ($rowcount==1)
{
//log the user in
$_SESSION['user']=$post_username;
$_SESSION['id']=$id;
echo $_SESSION['user'].", you have been logged in! <a href='index.php'>Return</a> to the main page.";
}
else
echo "Incorrect username or password combination!";
}
}
else
echo "Username and password required!";
?>
dett är detta echo meddelande jag vill ha bort alltså
echo $_SESSION['user'].", you have been logged in! <a href='index.php'>Return</a> to the main page.";
Okej.
men när jag gjode det så fick jag detta error meddelande
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\Learn\Projekt-VisualUpload\layout\Index\header.php:20) in C:\xampp\htdocs\Learn\Projekt-VisualUpload\layout\Index\meny.php on line 43
rad 43 är
header("Location: welcome.php");
och hela koden är:
<table width="1200">
<tr>
<td width="250" valign="top">
<font size="4" face="arial">
Logga In<br>
<hr>
</font>
<u>
<font size="2">
<div align="center">
<?php
session_start();
require("connect.php");
$post_username = $_POST['username'];
$post_password = $_POST['password'];
if($post_username&&$post_password)
{
if(strlen($post_username)>25||strlen($post_password)>15)
echo "Username or password character length too long!";
else
{
//Convert password to md5
$post_password = md5($post_password);
//query the database
$login = sprintf("SELECT * FROM users WHERE username='%s' AND password='%s'", mysql_real_escape_string($post_username), mysql_real_escape_string($post_password));
$rowcount = mysql_num_rows(mysql_query($login));
$fieldarray = mysql_fetch_assoc(mysql_query($login));
$id = $fieldarray['id'];
if ($rowcount==1)
{
//log the user in
$_SESSION['user']=$post_username;
$_SESSION['id']=$id;
header("Location: welcome.php");
exit;
}
else
echo "Incorrect username or password combination!";
}
}
else
echo "Username and password required!";
?>
</u>
<br/><br/>
</div>
</font>
<form action="index.php" method="post">
<table width="250">
<tr>
<td align="right" width="50%">
<font size='2' face='arial'>Användarnamn:</font>
</td>
<td><input type='text' name='username'></td>
</tr>
<tr>
<td align="right">
<font size='2' face='arial'>Lösenord:</font>
</td>
<td>
<input type='password' name='password'>
</td>
</tr>
</table>
<div align="right">
<input type='submit' value='Logga In'>
</div>
</form>
<hr>
<font size="4" face="arial">
<br>
Bli medlem - HELT GRATIS<br>
</font>
<hr>
<font size="2">
<div align="center">
<u>
<?php
//Register code
if($_POST['submit'])
{
// Grabb submitted data
$firstname = strip_tags($_POST['firstname']);
$lastname = strip_tags($_POST['lastname']);
$username = strtolower(strip_tags($_POST['username']));
$password = $_POST['password'];
$password_repeat = $_POST['password_repeat'];
$dob_year = $_POST['dob_year'];
$dob_month = $_POST['dob_month'];
$dob_day = $_POST['dob_day'];
$gender = $_POST['gender'];
if($firstname&&$lastname&&$username&&$password&&$password_repeat&&$dob_year&&$dob_month&&$dob_day&&$gender)
{
//Validate
if(strlen($firstname)>25||strlen($lastname)>25||strlen($username)>25)
echo "Firstname, lastname and username must be no more than 25 characters.";
else
{
//Check password
if(strlen($password)>25||strlen($password)<6)
echo "Password must be between 6 and 25 characters";
else {
//Check dob
if(is_numeric($dob_year)&&is_numeric($dob_month)&&is_numeric($dob_day))
{
if(strlen($dob_year)>4||strlen($dob_month)>2||strlen($dob_day)>2)
echo "Date of birth year must be 4 characters, month and day must be 2 characters.";
else
{
if($gender=="Male"||$gender="Female")
{
// compare Password
if($password==$password_repeat)
{
//check dob limits for month and day
if($dob_month>12 ||$dob_day>31)
echo "Date of birth month or day is bigger than expected!";
else
{
//check for existing user
$query = mysql_query("SELECT * FROM users WHERE username='$username'");
if(mysql_num_rows($query)>=1)
echo "That usernmae is already taken!";
else
{
// Sucess! Register the user..
$dob_db = "$dob_year-$dob_month-$dob_day";
$password_db = md5($password);
switch ($gender)
{
case "Male":
$gender_db = "M";
break;
case "Female":
$gender_db = "F";
break;
}
$register = mysql_query("INSERT INTO users VALUES ('','$firstname','$lastname','$username','$password_db','$dob_db','$gender_db')");
echo "Sucess!";
}
}
}
else
echo "Passwords do not match!";
}
else
echo "Gender must be Male or Female!";
}
}
else
echo "Date of birth be in number form. For exemple, 1992/12/28";
}
}
}
else
echo "Missing field! Please fill in all fields!";
}
else
echo "Please enter your details and click Register.";
?>
</u>
</div>
</font><br />
<form action='index.php' method='POST'>
<table>
<tr>
<td align='right'>
<font size='2' face='arial'>Förnamn:</font>
</td>
<td>
<input type='text' value='<?php echo $firstname; ?>' name='firstname' maxlength='25'>
</td>
</tr>
<tr>
<td align='right'>
<font size='2' face='arial'>Efternamn:</font>
</td>
<td>
<input type='text' value='<?php echo $lastname; ?>' name='lastname' maxlength='25'>
</td>
</tr>
<tr>
<td align='right'>
<font size='2' face='arial'>Användarnamn:</font>
</td>
<td>
<input type='text' value='<?php echo $username; ?>' name='username' maxlength='25'>
</td>
</tr>
<tr>
<td align='right'>
<font size='2' face='arial'>Lösenord:</font>
</td>
<td>
<input type='password' name='password' maxlength='25'>
</td>
</tr>
<tr>
<td align='right'>
<font size='2' face='arial'>Upprepa lösenord:</font>
</td>
<td>
<input type='password' name='password_repeat' maxlength='25'></td>
</tr>
<tr>
<td align='right'>
<font size='2' face='arial'>Födelsedag:</font>
</td>
<td>
<input type='text' name='dob_year' maxlength='4' size='3' value='<?php if($dob_year) echo $dob_year; else echo "YYYY"; ?>'> /
<input type='text' name='dob_month' maxlength='2' size='1' value='<?php if($dob_month) echo $dob_month; else echo "MM"; ?>'> /
<input type='text' name='dob_day' maxlength='2' size='1' value='<?php if($dob_day) echo $dob_day; else echo "DD"; ?>'>
</td>
</tr>
<tr>
<td align='right'>
<font size='2' face='arial'>Kön:</font>
</td>
<td>
<select name='gender'>
<option>Kvinna</option>
<option>Man</option>
</select>
</td>
</tr>
</table>
<div align='right'><input type='submit' name='submit' value='Registrera'></div>
</form>
<hr>
</td>
Innan man kör header location så får inget skrivas ut. Dvs det får inte finnas någon html kod eller någon echo innan.
I stället för att köra javascript borde han väll ta bort dom utskrifterna och ersätta dem med att byta sida med php-header? Och ha php koden i en egen fil, inte samma som formuläret.
Det får han avgöra själv. Jag skulle ha all kod där man kollar inloggning mm i en separat fil och formuläret i en egen fil, men alla gör på olika sätt antar jag.
Data formulär skall alltid kontrolleras och rensas innan det skickas in i en sql fråga eller system fråga. Antingen med mysql_real_escape() eller PDO som det skrivits om tidigare i tråden.