webForumDet fria alternativet

Hämta data från databas..

17 svar · 638 visningar · startad av slow

slowMedlem sedan apr. 2004148 inlägg
#1

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

WiZzLeRMedlem sedan juni 2002346 inlägg
#2

$sql = "SELECT * FROM members WHERE user = '{$_POST['username']}' && pass = '{$_POST['password']}' ";

något sånt.

Cri11eMedlem sedan aug. 200235 inlägg
#3

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.

WiZzLeRMedlem sedan juni 2002346 inlägg
#4

onödigt. skapa session EFTER att man är inloggad.

slowMedlem sedan apr. 2004148 inlägg
#5

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?

slowMedlem sedan apr. 2004148 inlägg
#6

Ingen?

PeeerMedlem sedan mars 20025 907 inlägg
#7

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);
?>
MeleaMedlem sedan juli 20033 147 inlägg
#8

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]'?

slowMedlem sedan apr. 2004148 inlägg
#9

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?

K@llenMedlem sedan mars 20032 667 inlägg
#10
echo $rad['user'];

elller (om du vill ha in lite formateringar)

echo "<p>" . $rad['user'] . "</p>";
slowMedlem sedan apr. 2004148 inlägg
#11

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)){

MeleaMedlem sedan juli 20033 147 inlägg
#12

skippa mellanrummet mellan while och ($rad.

PeeerMedlem sedan mars 20025 907 inlägg
#13

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());
WiZzLeRMedlem sedan juni 2002346 inlägg
#14

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

MeleaMedlem sedan juli 20033 147 inlägg
#15

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.

slowMedlem sedan apr. 2004148 inlägg
#16

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);
?>

K@llenMedlem sedan mars 20032 667 inlägg
#17
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'];
slowMedlem sedan apr. 2004148 inlägg
#18

<?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?

143 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)