$sql = "SELECT * FROM members WHERE user = '{$_POST['username']}' && pass = '{$_POST['password']}' ";
något sånt.
17 svar · 638 visningar · startad av slow
Fakta, har precis börjat med PHP och har precis börjat att skriva mitt första loginscript. Har lyckats ganska bra. Blev ett väldigt enkelt men ändå. Man registrera sig åså.
Så till min fråga:
Ifall jag vill hämta data från en databas.
Och då info om den inloggade.
Jag använder mig att sessioner.
Kan man göra så här:
$sql = "SELECT * FROM members WHERE user = ??????? ";
$result = mysql_query("$sql");
while ($rad = mysql_fetch_array($result)){
echo "Anv: ".$rad[user]."<br>";
echo "Lösenord: ".$rad[pass]." <br>";
echo "Namn: ".$rad[name]." <br>";
echo "Email: ".$rad." <br>";
}
mysql_close ($länk);
Vad ska man skriva istället för frågetecknena isåfall?
Kan man mata in aktuell session på något sätt?
eller är jag helt ute och cyklar?
Kanske finns något enklare sätt?
Tack för ordet.. :)
//Patrik
$sql = "SELECT * FROM members WHERE user = '{$_POST['username']}' && pass = '{$_POST['password']}' ";
något sånt.
Förstår inte riktigt vad du menar men när användaren loggar in registrerar du användarnamnet eller nått id i en session gissar jag. I stil med:
Kolla om användaren finns i databasen och kolla så att lösenordet stämmer. Stämmer lösenordet så kan du nu registrera användarnamnet i sessionen.
session_start();
$_SESSION['username'] = $rad['user']
I så fall går det ju enkelt att plocka fram information från databasen med:
$sql = "SELECT * FROM members WHERE user = '{$_SESSION['username']}' "
Eller vad du nu valt att döpa sessionen till.
onödigt. skapa session EFTER att man är inloggad.
wieee...
<?
$länk = @mysql_connect ("localhost", "blaha","blaha")
or die ("kunde inte ansluta");
$databas = mysql_select_db("blaha");
$sql = "SELECT * FROM members WHERE user='{$_POST['user']}'";
$result = mysql_query("$sql");
while ($rad = mysql_fetch_array($result)){
echo "Anv: ".$rad[user].";
}
mysql_close ($länk);
?>
Så ser min kod ut...
Men den skriver ändå bara ut blankt.
Jag tycker att det ska fungera så här men men...
Förslag på ändring någon?
Ingen?
Vad får du om du provar
<?
$länk = @mysql_connect ("localhost", "blaha","blaha")
or die ("kunde inte ansluta");
$databas = mysql_select_db("blaha") or die('Fel: ' . mysql_error());
$sql = "SELECT * FROM members WHERE user='{$_POST['user']}'";
$result = mysql_query("$sql") or die('Fel2: ' . mysql_error());
while ($rad = mysql_fetch_array($result)){
echo "Anv: ".$rad['user'].";
}
mysql_close ($länk);
?>
WiZzLeR skrev:
$sql = "SELECT * FROM members WHERE user = '{$_POST['username']}' && pass = '{$_POST['password']}' ";
något sånt.
Vad gör det för skillnad om man skriver
user = '{$_POST[username]}'
istället för
user = '$_POST[username]'?
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'
Den får jag fram på denna rad:
echo "$rad['user']";
Vad göra?
echo $rad['user'];
elller (om du vill ha in lite formateringar)
echo "<p>" . $rad['user'] . "</p>";
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
så säger den istället då.. :(
På denna rad:
while ($rad = mysql_fetch_array($result)){
skippa mellanrummet mellan while och ($rad.
Melea skrev:
skippa mellanrummet mellan while och ($rad.
Ska inte spela någon roll!
slow > Har du kvar "or die()" på raden med mysql_query()? Felet du får nu brukar bero på att sql-frågan inte utfördes och då skulle du få ett felmeddelande.
$result = mysql_query("$sql") or die('Fel: ' . mysql_error());
Melea skrev:
WiZzLeR skrev:
$sql = "SELECT * FROM members WHERE user = '{$_POST['username']}' && pass = '{$_POST['password']}' ";
något sånt.
Vad gör det för skillnad om man skriver
user = '{$_POST[username]}'
istället för
user = '$_POST[username]'?
om du har 'username' så måste man köra {} annars blir det fukked. men visst man kan skriva utan $_POST[username]. det rätta alternativet är nog :
$sql = "SELECT * FROM members WHERE user = '".$_POST['username']."' && pass = '".$_POST['password']."'";
Varför blir det fukked om man inte har {}?
Aldrig kört med det och skriver alltid
WHERE user = '$_POST[username]' AND pass = '$_POST[password]'
Aldrig strulat för mig.
Detta är vad jag använder mig av nu.
Och då pratar den om parse error på rader som är blanka.
Ursäkta att jag kass! :)
Har nog börjat lite för avancerat tror jag...
<?
$länk = @mysql_connect ("localhost", "blaha","blaha")
or die ("kunde inte ansluta");
$databas = mysql_select_db("blaha");
$sql = "SELECT * FROM members WHERE user='{$_POST['user']}'";
$result = mysql_query("$sql") or die('Fel: ' . mysql_error());
while($rad=mysql_fetch_array($result)){
echo "Anv: ".$rad['user'].";
}
mysql_close ($länk);
?>
echo "Anv: ".$rad['user'].";
Enligt mitt tycke har du fortfarande parse error på raden ovan. Ojämt antal fnuttar är ett tecken på fel.
echo "Anv: " . $rad['user'];
<?php session_start(); ?> Detta har jag överst.
<?php
include "conn.php"; // Databasanslutningen
$sql = "SELECT * FROM members WHERE user='{$_POST['user']}' AND pass='{$_POST['passwd']}'";
$result = mysql_query($sql) or die ("Fråga gick ej");
while ($row = mysql_fetch_array($result)){
echo $row["user"];
}
?>
Då blir det inget felmeddelande men den skriver heller inte
ut något från databasen. bara blankt.
Då måste det ju nästa vara så att jag misslyckats med sessionerna...
Så här har jag inloggningen:
if (isset($_POST['submit'])){
$sql = "SELECT id FROM members
WHERE user='{$_POST['user']}'
AND pass='{$_POST['passwd']}'";
$result = mysql_query($sql);
// Hittades inte användarnamn och lösenord
// skicka till formulär med felmeddelande
if (mysql_num_rows($result) == 0){
header("Location: index.php?badlogin=");
exit;
}
// Sätt sessionen med unikt index
$_SESSION['sess_id'] = mysql_result($result, 0);
$_SESSION['sess_user'] = $_POST['user'];
$_SESSION['sess_passwd'] = $_POST['passwd'];
header("Location: welcome.php");
exit;
}
osv...
ser ni nått galet som skulle kunna ändras på där?