Hej! Detta blir mitt första inlägg här :-)
Använder följande kod för att logga in:
<?
session_register(nick,losen);
if(!strlen(trim($nick)) || !strlen(trim($losen)) ) {
echo("Du fyllde inte i login sakerna");
}
else {
$my_id=mysql_connect("localhost","jappjapp","jappjapp");
mysql_select_db("databasen");
$sql = mysql_query("SELECT * FROM users where nick = '$nick'");
if(mysql_query("SELECT * FROM users where nick = '$nick'") )
{
if($losen == mysql_result($sql,0,"losen"))
{
// echo "<br>";
// echo "inloggad som <b>$nick</b> <br><br>";
// echo "<a href='showinfo.php'>Visa Info</a>";
header("location: ../index.html"); // ladda om sidan
}
else
{
// echo "<br>";
// echo("FEL.<br>\n<a href=\"login.php\">logga in</a> igen");
$nick= NULL; // töm variablerna
$losen = NULL;
session_unregister("nick,losen"); // avregistrera
session_destroy(); // döda sessionen
header("location: ../index.html"); // ladda om sidan
}
}
else
{
echo "<br>";
echo("FEL.<br>\n<a href=\"login.php\">logga in</a> igen");
}
}
mysql_close($my_id);
?>
Men jag får följande felmeddelande när jag försöker logga in: Du fyllde inte i login sakerna
Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in /home/hagman2/public_html/tjockis.se/login/login.php on line 52
Vad kan vara fel tror ni? tack som tusan på förhand :-)
Anslutningen till databsen fungerar korrekt!
Testade med kodsnutten du bifogade också!
Något annat man kan testa?
Tack för hjälpen och välkomnandet! :-)
$sql = mysql_query("SELECT * FROM users where nick = '$nick'");
if(mysql_query("SELECT * FROM users where nick = '$nick'") )
{
if($losen == mysql_result($sql,0,"losen"))
{
// echo "<br>";
// echo "inloggad som <b>$nick</b> <br><br>";
// echo "<a href='showinfo.php'>Visa Info</a>";
header("location: ../index.html"); // ladda om sidan
mot
$sql = "SELECT * FROM users where nick = '$nick'";
$res = mysql_query($sql) or die("Felaktig fråga");
if ($userInfo=mysql_fetch_array($res)) {
if($losen == $userInfo['pass']) {//Om lösenordskolumnen heter pass i db:n
// echo "<br>";
// echo "inloggad som <b>$nick</b> <br><br>";
// echo "<a href='showinfo.php'>Visa Info</a>";
header("location: ../index.html"); // ladda om sidan
Obs dock att du antingen kan skriva ut eller skicka vidare.
Edit: La till Måsvingen som var på utflykt... se Compusas svar längre ner...
aasah:
Testade att byta ut koden med den du skickade.
Då får jag ett annat felmeddelande istället:
Parse error: parse error, unexpected T_ELSE in /home/hagman2/public_html/tjockis.se/login/login.php on line 39
aasah:
Testade att byta ut koden med den du skickade.
Då får jag ett annat felmeddelande istället:
Parse error: parse error, unexpected T_ELSE in /home/hagman2/public_html/tjockis.se/login/login.php on line 39
o line 39 är det bara en else.
Att du får ett annat fel beror på att det ursprungliga är löst.
Vilken rad är rad 39? Skicka med lite kod före och efter med rad 39 makerad. Och posta koden innanför php-taggar, dvs mellan [ PHP] och . (Fast utan mellanslag mellan [ och p.)
Såvida inte Compusas svar ovan löste problemet! Ursäkta! Jag tappade tydligen en måsvinge på vägen... Har stoppat in den ovan.
Hallå hallå, ni är verkligen grymt snälla som hjälper en nybörjare som mig med detta :-)
Den uppdaterade koden jag kör med nu är:
<?
session_register(nick,losen);
if(!strlen(trim($nick)) || !strlen(trim($losen)) ) {
echo("Du fyllde inte i login sakerna");
}
else {
$my_id=mysql_connect("localhost","hemlis","hemlis");
mysql_select_db("databasen");
$sql = "SELECT * FROM users where nick = '$nick'";
$res = mysql_query($sql) or die("Felaktig fråga");
if ($userInfo=mysql_fetch_array($res)) {
if($losen == $userInfo['losen']) { //HÄR SAKNADES EN MÅSVINGE
// echo "<br>";
// echo "inloggad som <b>$nick</b> <br><br>";
// echo "<a href='showinfo.php'>Visa Info</a>";
header("location: ../index.html"); // ladda om sidan
}
else
{
// echo "<br>";
// echo("FEL.<br>\n<a href=\"login.php\">logga in</a> igen");
$nick= NULL; // töm variablerna
$losen = NULL;
session_unregister("nick,losen"); // avregistrera
session_destroy(); // döda sessionen
header("location: ../index.html"); // ladda om sidan
}
}
else
{
echo "<br>";
echo("FEL.<br>\n<a href=\"login.php\">logga in</a> igen");
}
}
mysql_close($my_id);
?>
Nu är dock det gamla felmeddelandet tillbaka:
Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in /home/hagman2/public_html/tjockis.se/login/login.php on line 50
Nu har jag indenterat din kod och lagt till en koll ifall du lyckas skapa en anslutning eller inte. Ett annat fel var att din kod också försökt stänga databasen även om du aldrig anslöt mot dent. Ett tips är att läsa på lite om indentering, det blir mycket enklare att göra rätt då och hitta fel
Observera att det fortfarande finns en del brister i koden, du stänger inte alltid anslutningen mot databasen, kolla dina conditions så ser du nog.
Testa detta och återkom med eventuella felmeddelanden.
<?
session_register(nick,losen);
if(!strlen(trim($nick)) || !strlen(trim($losen)) ) {
echo("Du fyllde inte i login sakerna");
}
else {
$my_id = mysql_connect ("localhost","hemlis","hemlis")
or die ("Could not connect");
print ("Connected successfully");
mysql_select_db("databasen");
$sql = "SELECT * FROM users where nick = '$nick'";
$res = mysql_query($sql) or die("Felaktig fråga");
if ($userInfo=mysql_fetch_array($res)) {
if($losen == $userInfo['losen']) { //HÄR SAKNADES EN MÅSVINGE
// echo "<br>";
// echo "inloggad som <b>$nick</b> <br><br>";
// echo "<a href='showinfo.php'>Visa Info</a>";
header("location: ../index.html"); // ladda om sidan
}
else {
// echo "<br>";
// echo("FEL.<br>\n<a href=\"login.php\">logga in</a> igen");
$nick= NULL; // töm variablerna
$losen = NULL;
session_unregister("nick,losen"); // avregistrera
session_destroy(); // döda sessionen
header("location: ../index.html"); // ladda om sidan
}
}
else {
echo "<br>";
echo("FEL.<br>\n<a href=\"login.php\">logga in</a> igen");
}
mysql_close($my_id);
}
?>
... Ett annat fel var att din kod också försökt stänga databasen även om du aldrig anslöt mot dent. ...
Observera att det fortfarande finns en del brister i koden, du stänger inte alltid anslutningen mot databasen, kolla dina conditions så ser du nog.
Du behöver å andra sidan inte stänga databasanslutningen överhuvudtaget. Den stängs ändå med automatik när skriptet kört klart. Så du kan ta bort mysql_close helt om du vill.
hagmund skrev:
Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in /home/hagman2/public_html/tjockis.se/login/login.php on line 50
Du behöver å andra sidan inte stänga databasanslutningen överhuvudtaget. Den stängs ändå med automatik när skriptet kört klart. Så du kan ta bort mysql_close helt om du vill.
Visst är det så att php:s skräphanterare göra detta, men jag skulle ändå rekommendera att man alltid strukturerar sin kod så att man enkelt kan stänga anslutningen manuellt, när man inte längre behöver använda den.
Visst är det så att php:s skräphanterare göra detta, men jag skulle ändå rekommendera att man alltid strukturerar sin kod så att man stänger anslutningen manuellt, när man inte längre behöver använda den.
Although this isn't strictly speaking necessary, PHP will automatically close the connection when the script ends, you should get into the habit of closing what you open. If you start developing more serious applications, or move to other, less tolerant languages, you will find the transition more difficult if you haven't learnt the basics well from the beginning.
Nu har jag indenterat din kod och lagt till en koll ifall du lyckas skapa en anslutning eller inte. Ett annat fel var att din kod också försökt stänga databasen även om du aldrig anslöt mot dent. Ett tips är att läsa på lite om indentering, det blir mycket enklare att göra rätt då och hitta fel
Observera att det fortfarande finns en del brister i koden, du stänger inte alltid anslutningen mot databasen, kolla dina conditions så ser du nog.
Hallå igen!
Körde nu med koden du skrev här och nu får jag endast: Du fyllde inte i login sakerna. som felmeddelande.
Hallå igen!
Körde nu med koden du skrev här och nu får jag endast: Du fyllde inte i login sakerna. som felmeddelande.
Det betyder att koden fungerar, för det är ju ditt valda felmeddelande.
Om du fyllde i saker så det borde funkat, betyder det ett strul i kopplingen mellan inloggningssidan och denna. Hur ser din formulärsida ut egentligen? Lagrar du någonsin formulärdata i sessions? Vad har du för version av PHP?
Compusa
Although this isn't strictly speaking necessary, PHP will automatically close the connection when the script ends, you should get into the habit of closing what you open. If you start developing more serious applications, or move to other, less tolerant languages, you will find the transition more difficult if you haven't learnt the basics well from the beginning.
(Min fetstil.) Det här är ju direkt larvigt. Det är ju som att försöka allokera minne i Java därför att det behövs om man kör C... (Bortsett ifrån att Java saknar metoder för det.) Varje språk har ju sina egna begränsningar och höjdpunkter.
Om man nu håller på med en applikation med så många samtidiga anslutningar att man slår i taket och måste stänga anslutningen så snart det bara går, så är det naturligtvis en annan sak. Men för att det ska vara någon vits måste anslutningen då stängas före det sista skriptet gör. Behovet av detta borde dock inte tillhöra vanligheterna.
Håller med Compusa, man bör tveklöst stänga databasanslutning. Inte för att man måste utan för att det hör till bra och snygg programmering att göra det.
hagmund, en liten detalj att ha i åtanke. För säkerhets skull är det bra om man kör exit efter en redirect. Från php-manualen:
<?php
header("Location: http://www.example.com/"); /* Redirect browser */
/* Make sure that code below does not get executed when we redirect. */
exit;
?>
393 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91