webForumDet fria alternativet

skicka en användare till en sidna direkt?

PHP

21 svar · 798 visningar · startad av Mycodez

Medlem sedan feb. 2010445 inlägg
Frågan#1

Hej,

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.";

mycket tack sam för snabba svar :)

/ Mycodez

- Tro på din idé annars funkar det inte -

Medlem sedan juni 20006 031 inlägg
#2

Byt ut din echo mot

header("Location: welcome.php");
exit;
Medlem sedan feb. 2010445 inlägg
#3

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>

NU fick vi visst med registreringen med men men

Medlem sedan juni 20006 031 inlägg
#4

Ok, för att använda header location så får inget skrivas ut på sidan före.
Alltså får ju använda javascript istället.

Medlem sedan juni 20006 031 inlägg
#5
<script type="text/javascript">
window.location = "welcome.php"
</script>
Medlem sedan feb. 2010445 inlägg
#6

okej vad menar du med skriva ut?

Medlem sedan feb. 2010445 inlägg
#7

och vart ska jag sätta

<script type="text/javascript">
window.location = "welcome.php"
</script>

jag jag sätta det är echo är och ska jag göra något annat med koden?

Medlem sedan juni 20006 031 inlägg
#8

Sätt det där du har din echo.

Medlem sedan mars 2004485 inlägg
#9

Nån smart person har sagt nått om lösenord:
http://www.webforum.nu/showpost.php?p=1498017

Medlem sedan juni 20006 031 inlägg
#10

Mycodez skrev:

okej vad menar du med skriva ut?

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.

Medlem sedan mars 2004485 inlägg
#11

Pedda skrev:

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.

Medlem sedan juni 20006 031 inlägg
#12

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.

Medlem sedan feb. 2010445 inlägg
#13

Hur hade ni gjort login sidan då?

Medlem sedan feb. 2010445 inlägg
#14

Och var inte mint lösenords skydd säkert nog?

Medlem sedan juni 20006 031 inlägg
#15

Mycodez skrev:

Och var inte mint lösenords skydd säkert nog?

Du skickar in data från formuläret direkt in i databasen utan att kontrollera vad det innehåller.

Vill du göra det på bästa sätt så använder du PDO och prepared statements istället.

Medlem sedan mars 2004485 inlägg
#16

Mycodez skrev:

Och var inte mint lösenords skydd säkert nog?

Om jag förstod rätt så har du sparat dem som md5 hash, vilket alltså inte är så säkert.

Medlem sedan juni 20014 290 inlägg
#17

Några kommentarer:

Header() problemet (can not modify header) går att lösa med output buffering http://php.net/manual/en/function.ob-start.php

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.

Medlem sedan feb. 2010445 inlägg
#18

japp det har jag ;)

men hur funkar dem andra förstår inte på mig dem

är ganska ny i php ;)

Medlem sedan feb. 2010445 inlägg
#19

Jag löste det med att skicka användaren till en annan sida ;)

jag gjorde som ni sa gjorde separata filer med php koden :) då funkade det jätte bra ;)

Medlem sedan feb. 2010445 inlägg
#20

går det använda fler än en header funktion på en och samma sida?

270 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)