Permalänk

PHP! Login script

Försöker så en hemsida att fungera men loginet vill inte fungera med mig

Det gär är scriptet jag använder för tillfället. Problemet är att den alltid säger att det är fel PW och Username även fast jag skriver rätt :/.

<?php $host="localhost"; // Host name $username="****"; // Mysql username $password="****"; // Mysql password $db_name="****"; // Database name $tbl_name="members"; // Table name // Connect to server and select databse. mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); // username and password sent from form $myusername=$_POST['username']; $mypassword=$_POST['password']; // To protect MySQL injection (more detail about MySQL injection) $myusername = stripslashes($username); $mypassword = stripslashes($password); $myusername = mysql_real_escape_string($username); $mypassword = mysql_real_escape_string($password); $sql="SELECT * FROM $tbl_name WHERE username='$username' and password='$password'"; $result=mysql_query($sql); // Mysql_num_row is counting table row $count=mysql_num_rows($result); // If result matched $myusername and $mypassword, table row must be 1 row if($count==1){ // Register $myusername, $mypassword and redirect to file "memindex.php" session_register("username"); session_register("password"); header("location:memindex.php"); } else { ?> <center> <? echo "Wrong Username or Password"; } ?>

Får även error "Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/jole/public_html/login.php on line 26"

LINE 26 :

$count=mysql_num_rows($result);

Visa signatur

| MacBook Pro 2016 Touch Bar 15" |

| 16GB Ram DDR4 2133 MHz | i5 6500k | RX 480 4GB | ASUS Z170-A | Fractal Design XL | Corsair TX650W |

CITERA FÖR SVAR

Permalänk

Det ser ut som om du blandat ihop $username/$password med $myusername/$mypassword i koden
$username / $password är väl för åtkomst till mysql?

$myusername = stripslashes($myusername); $mypassword = stripslashes($mypassword); $myusername = mysql_real_escape_string($myusername); $mypassword = mysql_real_escape_string($mypassword); $sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'"; $result=mysql_query($sql);

kanske?

döp även om $password $username till $sql_password och $sql_username, så blandar du inte ihop dem

Permalänk
Inaktiv

Japp, du får till tillgång till databasen då mysql_num_rows klagar på argumentet du gav till den.
Varför har du "" om variablerna? Testa:

mysql_connect($host,$username,$password)or die("cannot connect"); mysql_select_db($db_name)or die("cannot select DB");

Permalänk

Jag lyckades fixa det. Visade sig att det var en länk som var fel :/

Koden är tagen från internet. Vi har ett projekt i skolan men har inte hunnit lära oss mycket PHP alls (i princip inget) så vi får ta hjälp genom internet när vi behöver.

Kommer antagligen posta fler problem här framöver men kan väl börja med att fråga hur man skriver ut användarnamnet på personen som är online?

Har "$session->myusername" just nu. I tabellen så heter namnen username och i fältet man loggar in genom heter myusername. Vilket ska man anropa och hur?

Visa signatur

| MacBook Pro 2016 Touch Bar 15" |

| 16GB Ram DDR4 2133 MHz | i5 6500k | RX 480 4GB | ASUS Z170-A | Fractal Design XL | Corsair TX650W |

CITERA FÖR SVAR

Permalänk
Inaktiv

Om ni redan ska jobba med databaser och sessioner och inte har lärt er något om PHP måste ni ha en riktigt dålig lärare.
För att skriva ut en variabel i sessionen kan du använda:

echo($_SESSION['myusername']);

Permalänk
Medlem

Om ni får ta hjälp av internet så använd gärna en kod som inte förlitar sig på deprecated funktioner.

Tänker mest på session_register() som är satt som deprecated.

Så försök leta reda på en lite nyare kod så du lär dig rätt från början.

Permalänk

Han trodde att vi lärt oss php innan i en annan kurs så han utgick från det. Men han hade fel -.-

Ok, vad är en deprecated funktion?

Visa signatur

| MacBook Pro 2016 Touch Bar 15" |

| 16GB Ram DDR4 2133 MHz | i5 6500k | RX 480 4GB | ASUS Z170-A | Fractal Design XL | Corsair TX650W |

CITERA FÖR SVAR

Permalänk
Skrivet av Jooh4n:

Han trodde att vi lärt oss php innan i en annan kurs så han utgick från det. Men han hade fel -.-

Ok, vad är en deprecated funktion?

Jag skulle gissa på att det är en föråldrad och numer utbytt funktion.

Permalänk
Medlem
Skrivet av Jooh4n:

Han trodde att vi lärt oss php innan i en annan kurs så han utgick från det. Men han hade fel -.-

Ok, vad är en deprecated funktion?

Funktioner som är markerade som deprecated är utdaterade och kan även innebära potentiella säkerhetsluckor.

Jag antar att du endast kör den koden på en liten server på din egna dator? Den är inte speciellt säker, men det kanske du redan vet

Visa signatur

Citera eller nämn gärna mig (@ToJa92) om du svarar på något jag skrivit.
Uppskattar du eller blir hjälpt av ett inlägg jag skrivit är jag tacksam om du gillar det.

Permalänk

Joo, är bara tänk för att visas upp för läraren för ett betyg. Ingenting mer!

Fan vad gött, nu funkar registrering, login, logout och att visa inloggat namn. nu är det bara massa kvar!!! ^^

Visa signatur

| MacBook Pro 2016 Touch Bar 15" |

| 16GB Ram DDR4 2133 MHz | i5 6500k | RX 480 4GB | ASUS Z170-A | Fractal Design XL | Corsair TX650W |

CITERA FÖR SVAR

Permalänk

Någon som har någon aning om varför det här IF kommandot inte fungerar?

if ((strlen($text)>5) || ($text!="WRITE YOUR MESSAGE HERE")){ $query = "INSERT INTO msg (name, text) VALUES('$name', '$text')"; mysql_query($query) or die(mysql_error()); mysql_close(); }

samt hur jag skriver ut fler en än kolumn när jag har sökt på något.
Såhär ser kodensnutten ut nu;

//Skriver ut svaret while ($row = mysql_fetch_array($sql)) { echo '<br/> '.$row['text']; echo '<br/><br/>'; } ?>

Jag vill att den ska skriva ut både kolumnen namn och text, just nu skriver den bara ut text.

Tacksam för svar

Visa signatur

| MacBook Pro 2016 Touch Bar 15" |

| 16GB Ram DDR4 2133 MHz | i5 6500k | RX 480 4GB | ASUS Z170-A | Fractal Design XL | Corsair TX650W |

CITERA FÖR SVAR

Permalänk
Skrivet av Jooh4n:

Någon som har någon aning om varför det här IF kommandot inte fungerar?

if ((strlen($text)>5) || ($text!="WRITE YOUR MESSAGE HERE")){ $query = "INSERT INTO msg (name, text) VALUES('$name', '$text')"; mysql_query($query) or die(mysql_error()); mysql_close(); }

Nu är jag visserligen rätt trött och rostig på PHP, men jag tycker den ser korrekt ut. Kolla datan i $text om det är vad du förväntar dig.

Skrivet av Jooh4n:

samt hur jag skriver ut fler en än kolumn när jag har sökt på något.
Såhär ser kodensnutten ut nu;

//Skriver ut svaret while ($row = mysql_fetch_array($sql)) { echo '<br/> '.$row['text']; echo '<br/><br/>'; } ?>

Jag vill att den ska skriva ut både kolumnen namn och text, just nu skriver den bara ut text.

Tacksam för svar

Alla kolumner i databasen ligger i arrayen $row. Ersätt text med ett annat kolumnnamn för att skriva ut det.
Exempel: echo $row['namn'].' skrev: '.$row['text'];

Använder du bara kolumnnamn när du refererar till din data så kan du byta ut mysql_fetch_array mot mysql_fetch_assoc som är något snabbare.

Visa signatur

"to conquer others is to have power, to conquer yourself is to know the way"

Permalänk

Får det här error på echo meddelandet

Parse error: syntax error, unexpected T_VARIABLE, expecting ',' or ';' in /home/jole/public_html/results.php on line 45

EDIT: Har fått allt och fungera nu, var en massa småfel som är rättade nu

EDIT2: Kom på att jag skulle vilja ha ett block för hur ofta man får skriva meddelanden, någon som har en aning om hur man gör detta?

Visa signatur

| MacBook Pro 2016 Touch Bar 15" |

| 16GB Ram DDR4 2133 MHz | i5 6500k | RX 480 4GB | ASUS Z170-A | Fractal Design XL | Corsair TX650W |

CITERA FÖR SVAR