webForumDet fria alternativet

Hämta data från databas..

PHP

17 svar · 638 visningar · startad av slow

Medlem sedan apr. 2004148 inlägg
Frågan#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

Medlem sedan juni 2002346 inlägg
#2

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

något sånt.

Medlem 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.

Medlem sedan juni 2002346 inlägg
#4

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

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

Medlem sedan apr. 2004148 inlägg
#6

Ingen?

Medlem 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);
?>
Medlem 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]'?

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

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

elller (om du vill ha in lite formateringar)

echo "<p>" . $rad['user'] . "</p>";
Medlem 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)){

Medlem sedan juli 20033 147 inlägg
#12

skippa mellanrummet mellan while och ($rad.

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

Medlem 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.

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

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

134 ms totalt · 2 externa anrop · v20260731065814-full.2ae45ccc
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)