ugrás a tartalomhoz

Session

superman · 2010. Júl. 11. (V), 22.22
Minden tökéletesen működik, annak ellenére, hogy sok hibát kapok.
login.php

<?php>
session_start();
include ("includes/config.php");
?>
<html>
<head>
</head>
<body>
<form method="post">
<table>
<tr>
<td>
Vezetéknév
</td>
<td>
<input type="text" name="lastname"/>
</td>
</tr>
<tr>
<td>
Keresztnév
</td>
<td>
<input type="text" name="firstname"/>
</td>
</tr>
<tr>
<td>
Jelszó
</td>
<td>
<input type="password" name="password"/>
</td>
</tr>
<tr>
<td>
<input type="submit" name="loginbutton"/>
</td>
</tr>
</table>
</form>
<?php
mysql_connect($dbHost, $dbUser, $dbPass);
mysql_select_db($dbName);
if($_SESSION['log'] == true)
{
    print ("Sajnálom, de jelenleg be vagy jelentkezve!");
}
else
{
    if (isset($_POST['loginbutton']))
    {
        $lastname = $_POST['lastname'];
        $firstname = $_POST['firstname'];
        $password = $_POST['password'];
        
        $sql = "SELECT * FROM users WHERE (lastname='".$lastname."' AND firstname='".$firstname."' AND password='".$password."')";
        $query = mysql_query($sql);
        $fetch = mysql_fetch_assoc($query);
        
        if(mysql_num_rows($query) !== 0)
        {
            print ("Sikeres belépés");
            $_SESSION['log'] = true;
            $_SESSION['id'] = mysql_num_rows($fetch);
            print ("A jelenlegi azonosítód: ".$_SESSION['id']);
        }
        else
        {
            print ("Sikertelen belépés<br>");
        }
    }
}
?>
</body>
</html>
Itt a config.php is...hátha itt van kimenet.(Hozzáteszem sehol se találtam arra vonatkozóan írást, hogy mi a kimenet)

<?php
/*************************
***ADATBÁZIS BEÁLLÍTÁSOK**
*************************/

$dbHost = "********";
$dbUser = "********";
$dbPass = "********";
$dbName = "********";
?>
Nem nagyon értek a session-ökhöz. Ezeket a hibákat kapom:
Warning: session_start() [function.session-start]: open(/tmp/sess_1ba583c6c101b6d96fb69e15004b55c0, O_RDWR) failed: No such file or directory (2) in /login.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /login.php:2) in /login.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /login.php:2) in /login.php on line 2


Warning: Unknown: open(/tmp/sess_1ba583c6c101b6d96fb69e15004b55c0, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0
 
1

Nem létezik a tmp nevű

inf · 2010. Júl. 12. (H), 00.00
Nem létezik a tmp nevű könyvtár, ahova a session fájlokat tenné a rendszer, meg a session headert elsőnek kell kitenni. Nem hiszem, hogy minden tökéletesen menne ilyen hibák mellett...
2

Hol kellene lennie tmp nevű

superman · 2010. Júl. 12. (H), 00.09
Hol kellene lennie tmp nevű könyvtárnak?
3

A webroot-on belül közvetlenül

_subi_ · 2010. Júl. 12. (H), 09.56
A webroot-on belül közvetlenül, az index.php-vel egy szinten kellene lennie a tmp könyvtárnak.

Csak nem ATW-s tárhely? :) Náluk láttam ilyesmit, szerencsére ez sem tegnap volt…
4

De...sajna atw-s... végülis

superman · 2010. Júl. 12. (H), 12.57
De...sajna atw-s... végülis ingyenes, mivel csak kezdő vagyok. De tervezem, hogy komolyabban foglalkozom a programozással. Addig is jó az ingyenes tárhely...bár lehet akkor váltok az atw-ről. Tudtok ajánlani valami jót? ultraweb esetleg?
5

Viszont most látom, hogy a

superman · 2010. Júl. 12. (H), 13.14
Viszont most látom, hogy a lekérdezéssel is baj van... print ("A jelenlegi azonosítód: ".$_SESSION['id']); ennek a sornak a visszatérési értéke "A jelenlegi azonosítód: Array"

Nem megy a lekérdezés...esetleg valaki látja mi a hiba? Légyszi segítsetek, soha nem csináltam még MySql lekérdezést...
6

mysql_num_rows

Schmidi · 2010. Júl. 12. (H), 13.27
A mysql_num_rows() egy result sorainak számát adja vissza, ezt a feltétel vizsgálatkor használod is.

Viszont utána ugyanezt a függvényt alkalmazod a $fetch tömbre, és az így kapott eredményt próbálod betenni a sessionbe ID-ként.

A $fetch tömb tartalmazza a lekérdezett adatokat, ezen ne mysql_num_rows()-t futtass, hanem olvasd ki belőle a megfelelő értéket.

A tömb tartalmát pl. a print_r(), var_export(), var_dump() metódusokkal tudod megnézni.

Amúgy ez egy asszociatív tömb, ahol a kulcsok az adatbázis tábla mezőnevei, az értékek pedig az adatbázis tábláben szereplő értékek lesznek.
7

Na jó, kicsit bőbeszédűbb

bugadani · 2010. Júl. 12. (H), 13.31
Na jó, kicsit bőbeszédűbb leszek mint eredetileg szerettem volna.

De azért első körön, minden rossz szándék nélkül: RTFM.
mysql_num_rows
mysql_fetch_assoc
mysq_real_escape_string

Másodsorban:

$conn = mysql_connect($dbHost, $dbUser, $dbPass);  
mysql_select_db($dbName);  
if($_SESSION['log'] == true)  
{  
    print ("Sajnálom, de jelenleg be vagy jelentkezve!");  
}  
else  
{  
    if (strtolower($_SERVER['REQUEST_METHOD']) == 'post')  
    {  
        if(get_magic_quotes_gpc() === true){
            $lastname = striplashes($_POST['lastname']);
            $firstname= striplashes($_POST['firstname']);
            $password = striplashes($_POST['password ']);
        }
        $lastname = mysql_real_escape_string($lastname , $conn);  
        $firstname = mysql_real_escape_string($firstname, $conn);  
        $password = mysql_real_escape_string($password, $conn);
          
        $sql = "SELECT * FROM users WHERE (lastname='".$lastname."' AND firstname='".$firstname."' AND password='".$password."')";  
        $query = mysql_query($sql);  
        $fetch = mysql_fetch_assoc($query);  
          
        if($fetch !== false)  
        {  
            print ("Sikeres belépés");  
            $_SESSION['log'] = true;  
            $_SESSION['id'] = $fetch['id'];
            unset($fetch['password']);
            $_SESSION['data'] = $fetch;
            print ("A jelenlegi azonosítód: ".$_SESSION['id']);  
        }  
        else  
        {  
            print ("Sikertelen belépés<br>");  
        }  
    }  
}  
Mondjuk valahogy így. Bár megmondom őszintén, én nem így csinálnám :)

Ó és nagyon remélem hogy az első sorban az a <?php> csak elírás.
8

hehe. Igen az elírás. De a

superman · 2010. Júl. 12. (H), 13.38
hehe. Igen az elírás. De a rendes progiban nincs elírva. Csak itt sikerült...bár nem tudom hogy...