Har återupptagit php användandet nu när jag har börjat med webbdesign i skolan.
Håller på med en hemsida till en inlämningsuppgift i skolan och skulle behöva lite hjälp med php-koderna.
Först och främst har jag en sida där man kan kontakta mig, frågan är vad som ska stå i send.php
Frågorna var alltså;
1. Vad ska jag skriva i send.php för att ett mail ska skickas till mig?
2. Vad ska jag ändra/lägga till i login.php för att man ska skickas vidare till administrationspaneln, och för att man inte ska kunna surfa direkt till admin/index.php?
2. Du behöver ta en titt på sessions: Sessions
När någon försöker komma åt admin/index.php kan du kolla om du t.ex. sparat login-data i session, finns den inte där - bara redirect till login eller nått.
2. Du behöver ta en titt på sessions: Sessions
När någon försöker komma åt admin/index.php kan du kolla om du t.ex. sparat login-data i session, finns den inte där - bara redirect till login eller nått.
Ska kolla på detta imorgon, tack för ditt snabba svar :)
2. Du behöver ta en titt på sessions: Sessions
När någon försöker komma åt admin/index.php kan du kolla om du t.ex. sparat login-data i session, finns den inte där - bara redirect till login eller nått.
Glömde nämna att där är något fel i koden som jag skrivit hittils, skriver jag in rätt kommer jag inte till nån sida, likadant om jag skriver in fel...
Glömde nämna att där är något fel i koden som jag skrivit hittils, skriver jag in rätt kommer jag inte till nån sida, likadant om jag skriver in fel...
Antagligen för att din password input inte har attributet "name=".. enligt din kod borde det finnas ett attribut som ser ut: name="password"
eftersom i din login.php kollar du post["password"] variabeln som just nu är tom.
Antagligen för att din password input inte har attributet "name=".. enligt din kod borde det finnas ett attribut som ser ut: name="password"
eftersom i din login.php kollar du post["password"] variabeln som just nu är tom.
Har lagt till "name=" nu, måste ha missat det i allithopa :P
Ska se om det fungerar nu, annars återkommer jag :)
Har mixtrat lite med login.php och gjorde så att jag la in användarnamnet och lösenordet i MySQL istället. Men fortfarande fungerar det inte =/
Detta kommer upp när jag försöker logga in:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Program\xampp\htdocs\martin\admin\login.php:9) in C:\Program\xampp\htdocs\martin\admin\login.php on line 11
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Program\xampp\htdocs\martin\admin\login.php:9) in C:\Program\xampp\htdocs\martin\admin\login.php on line 11
login.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Loggar in...</title>
</head>
<body>
<?php
//Sessionen startar
session_start();
//Ansluter till MySQL
$dbServer = "localhost";
$dbUser = "root";
$dbName = "admin";
mysql_pconnect($dbServer, $dbUser)
or die("Varning! Kunde inte ansluta till MySQL!");
mysql_selectdb($dbName);
if($login) {
//Hämtar data från databasen admin
$sql = "SELECT * FROM admin WHERE admin.username = '" . $username . "' AND admin.password = '" . $password . "'";
$result = mysql_query($sql);
// Kolla hur resultatet blir
$num = mysql_num_rows($result);
// Blir det 1 är kombinationen rätt
if($num == 1) {
echo "Välkommen " . $username . ", du är nu inloggad!";
// redirect till admin.php inom 2sec
echo '<meta http-equiv="Refresh" content="2;url=admin/index.php">';
// Avsluta laddning av php filen, du vill ju inte visa login igen?
exit();
} else {
echo "Du har angivit fel användarnamn och/eller lösenord! Var vänlig försök igen!";
}
}
?>
</body>
</html>
När jag skriver in något i fälten, även om det är rätt användarnamn och lösenord, så händer ingenting. Jag kommer bara till sidan login.php.
Är det något annat som är fel i koden?
Databasnamn: admin
Databastabell: admin, 2 fält inuti tabellen, username & password.
id username password
1 Shadow NULL
Lösenordet är krypterat...
<?php
//Ansluter till MySQL
$dbServer = "localhost";
$dbUser = "root";
$dbName = "admin";
mysql_pconnect($dbServer, $dbUser)
or die("Varning! Kunde inte ansluta till MySQL!");
mysql_selectdb($dbName);
if($login) {
//Hämtar data från databasen admin
$sql = "SELECT * FROM admin WHERE admin.username = '" . $username . "' AND admin.password = '" . $password . "'";
$result = mysql_query($sql);
// Kolla hur resultatet blir
$num = mysql_num_rows($result);
// Blir det 1 är kombinationen rätt
if($num == 1) {
echo "Välkommen " . $username . ", du är nu inloggad!";
// redirect till admin.php inom 2sec
echo '<meta http-equiv="Refresh" content="2;url=admin/index.php">';
// Avsluta laddning av php filen, du vill ju inte visa login igen?
exit();
} else {
echo "Du har angivit fel användarnamn och/eller lösenord! Var vänlig försök igen!";
}
}
?>
Antar du sätter dina $username och $password till dina post variabler tidigare i koden?
Prova att felsöka lite.. skriv t.ex. ut värdet av $num för att se vad det blir. Blir den inte 1 så vet du ju att något antagligen är fel med din query. Skrivs 1 ut så är det lite klurigare :)
Är du säker på att du vill använda mysql_pconnect? det brukar inte vara så poppis på delade hosts. Jag har även ruckat om lite i din kod det känns ju lite dumt att skapa en databas connection utan att du vet att du faktiskt ska använda den. Jag har även ändrat i din sql-fråga.
<?php
//Sessionen startar
session_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Loggar in...</title>
</head>
<body>
<?php
//Sessionen startar
session_start();
if(isset($_POST['login'])) {
//Ansluter till MySQL
$dbServer = "localhost";
$dbUser = "root";
$dbName = "admin";
mysql_connect($dbServer, $dbUser)
or die("Varning! Kunde inte ansluta till MySQL!");
mysql_selectdb($dbName);
//Hämtar data från databasen admin
$sql = sprintf("SELECT * FROM admin WHERE admin.username = '%s' AND admin.password = '%s'",mysql_real_escape_string($_POST['username'],mysql_real_escape_string($_POST['password']);
$result = mysql_query($sql);
// Kolla hur resultatet blir
$num = mysql_num_rows($result);
// Blir det 1 är kombinationen rätt
if($num == 1) {
echo "Välkommen " .htmlentities($_POST['username'], ENT_QUOTES) . ", du är nu inloggad!";
// redirect till admin.php inom 2sec
echo '<meta http-equiv="Refresh" content="2;url=admin/index.php">';
// Avsluta laddning av php filen, du vill ju inte visa login igen?
exit();
} else {
echo "Du har angivit fel användarnamn och/eller lösenord! Var vänlig försök igen!";
}
}
?>
</body>
</html>
Tack för att du tog dig tid att hjälpa mig colione!
Dock hade jag redan fixat en fungerande kod då du skrev =)
<?php
$username = "test";
$password = "test";
if(isset($_POST['username']) == $username && ($_POST['password']) == $password) {
echo "Välkommen <b>$username</b>, du kommer att bli vidarekopplad till administrationspanelen strax!<p>Klicka <a href=\"index.php\">här</a> om du inte blir vidarebefodrad!<p />";
echo '<meta http-equiv="Refresh" content="2;url=index.php">';
} else {
echo '<meta http-equiv="Refresh" content="2;url=../admin.php">';
echo "Du skrev in fel användarnamn och/eller lösenord!<br />Vänligen försök igen!";
}
?>
Denna koden fungerar grymt bra, enligt mig!
Även om du försöker surfa till admin/login.php kommer felmeddelandet upp!
Nu återstår det bara att försöka fixa så man fortfarande är inloggad som admin när man klickar på administration.
Jag har en gästbok på min sida också, under administrationspanelen ska man kunna radera och ändra meddelanden som är skrivna, hur ska jag koda detta?