Autor Zpráva
Lamca
Profil *
Zdravim opet jsem tu s dotazem:

odešlu formuláře pod jmenem heslo a password na stranku kde je tento script:

<?php
$login = $_POST['login'];
$password = $_POST['password'];
if($login != "" && $password !="") {
require "db.php"; // pripoji k databazi
$password = MD5($password);
$query = MySQL_Query("SELECT * FROM test WHERE (jmeno LIKE '$login') AND (heslo LIKE '$password')");

if($result = MySQL_Fetch_Array($query)) {
Session_Start();
$_SESSION['auth'];
MySQL_Close();

// presmerovani do administracni casti
Header('Location: http://localhost/test/ukaz.php');
} else {
// chybne zadane udaje
$error = 0;
MySQL_Close();
}
} else {
// nebyly zadany oba udaje
$error = 1;
}
?>


na stranku ukaz.php me to v pohode presmeruje kdyz zadam spravny udaje ale zobrazi se me tato hlaska:
"nejsi prihlasen!"
a to proto ze na webu ukaz.php mam tento script:


if (!IsSet($_SESSION['auth']))
{
echo "nejsi prihlasen!";
}

jakym zpusobem mam tedy jinak odeslat SESSION ?? diky
Alphard
Profil
na stránce ukaz.php musí být také session_start(); a session proměnné bych nastavil nějakou hodnotu, např. $_SESSION['auth'] = TRUE;
Lamca
Profil *
No asi bude lepsi cookies prosim mate nejaky script na ukazku jak udelat bezpecne prihlasovani cookies za pouziti srovnavani udaju v DB? mockrat dekuji..
tomas.fejfar
Profil *
heslo LIKE '$password'
Nemelo by tam byt spis heslo = '$password' ...nebo tedy lepe... heslo = 'mysql_real_escape_string($password)'? Takhle se ti tam dostanu behem 2s.
tomas.fejfar
Profil *
... kdyz ti tolik jde o "bezpecne prihlasovani" tak sis moh alespon MySQL injection osetrit. :D
HGD
Profil
tak já sem tenhle způsob taky zkoušel, nastavil sem na stránce ukaz.php
<?php

session_start();
if (!IsSet($_SESSION['auth']=TRUE))
{
echo "nejsi prihlasen!";
}
?>


a když tam nemam "TRUE" tak to pokaždý vypíše nejsi přihlášen, a když to tam mam, tak to hází
Parse error: parse error, expecting `','' or `')'' in c:program fileseasyphp1-8wwwadminlogin.php on line 3


Poradíte pls někdo???
tiso
Profil
HGD - to TRUE tam máš navyše, nemá tam čo hľadať... Chyba je v časti so spracovaním formulára, prečítaj si niečo o funkcii session_register a do sesssion priraď nejakú hodnotu (napríklad nick pihlásenej osoby)
HGD
Profil
tak mi PLS poraďte kde je SESSION vysvětlený.
Jinak sem tam zkusil toto
<?php

session_start();
session_register("auth");
if (!isset($_SESSION["auth"])) $_SESSION["auth"]=TRUE;
{
echo "nejsi prihlasen!";
}
?>


ale nejede, furt mi píše že nejsem přihlášenej
tiso
Profil
HGD
1. vysvetlenie je tam kde všetky php funkcie - na php.net
2. nemôžeš testovať nastavenie session na rovnakej stránke ako ju vytváraš, ale až na ďalšej
HGD
Profil
dyt to taky nedělam, mam index.php

<?php

$login = $_POST['nick'];
$password = $_POST['heslo'];
if($login != "" && $password !="") {
require "config.php"; // pripoji k databazi
$password = MD5($password);
$query = MySQL_Query("SELECT * FROM users WHERE (nick = 'mysql_real_escape_string($login)') AND (heslo = 'mysql_real_escape_string($password)')");

if($result = MySQL_Fetch_Array($query)) {
Session_Start();
$_SESSION['auth'];
MySQL_Close();

// presmerovani do administracni casti
Header('Location: http://localhost/admin/login.php');
} else {
// chybne zadane udaje
$error = 0;
MySQL_Close();
}
} else {
// nebyly zadany oba udaje
$error = 1;
}
?>

<table>
<form method=post action=login.php>

<tr>
<td width=50%>Jmeno: </td>
<td width=50%><input type=text name="nick"></td>
</tr>
<tr>
<td>Heslo: </td>
<td><input type=password name="heslo"></td>
</tr>
<tr>
<td colspan=2 align=center><input type=submit value=" Přihlásit " name=submit></td></tr>
</table>


a login.php

<?php

session_start();
session_register("auth");
if (!isset($_SESSION["auth"])) $_SESSION["auth"]=TRUE;
echo "nejsi prihlasen!";

?>
tiso
Profil
HGD
session_register("auth");
presuň do index.php a miesto:
$_SESSION['auth'];
napíš:
$_SESSION['auth']="ok";
alebo niečo podobné...

Okrem toho ošetrovať hash hesla je zbytočné, ošetri si vstupné $_POST hodnoty
HGD
Profil
no já v PHP sem docela začátečník, tak nevim jak mam ošetřit POST místo nějakýho HASHE ;-), nicméně mi to na stránce login.php píše pořád "nejsi prihlasen"...poradíte mi eště jak dál???
PS.:v index.php je vypsáno $error=1 a $error=0 a chci se zeptat jak ví co to má udělat? nebo tam to nejni nikde definovaný...??? Díky
krapet
Profil *
co takhle v index.php:

...

if($result = MySQL_Fetch_Array($query)) {

MySQL_Close();

Session_Start();

Session_register('auth','login');

$auth = TRUE;

// presmerovani do administracni casti

...


a v login.php:


session_start();

if (isset($_SESSION["auth"]) && $_SESSION["auth"]) {
echo "prihlasen je: ".$_SESSION["login"];
} else {
echo "nejsi prihlasen!";
}
krapet
Profil *
nebo lepe

v index.php:

<?php
Session_Start();
Session_register('auth','login');
$auth = FALSE; // dokud neprobehne overeni

$login = $_POST['nick'];
$password = $_POST['heslo'];
if($login != "" && $password !="") {
require "config.php"; // pripoji k databazi
$password = MD5($password);
$query = MySQL_Query("SELECT * FROM users WHERE (nick = 'mysql_real_escape_string($login)') AND (heslo ='mysql_real_escape_string($password)')");

if($result = MySQL_Fetch_Array($query)) {
MySQL_Close();
$auth = TRUE; // overen
// presmerovani do administracni casti
...


a v login.php:

<?php
Session_start();
if (isset($auth) && $auth) {// promenna existuje a uzivatel je overen
echo "prihlasen je: ".$login;
} else {
echo "nejsi prihlasen!";
}
?>
HGD
Profil
no tak nevim, vypadá to, že tohle by mohlo fungovat, ale myslim si, že mam špatně udělaný připojení k DB:
INDEX
    $auth = FALSE; // dokud neprobehne overeni


$login = $_POST['nick'];
$password = $_POST['heslo'];
if($login != "" && $password !="") {
require "config.php"; // pripoji k databazi
$password = MD5($password);
$query = MySQL_Query("SELECT * FROM users WHERE (nick = 'mysql_real_escape_string($login)') AND (heslo = 'mysql_real_escape_string($password)')");


CONFIG
<?

$db_server = "localhost";
$db_login = "root";
$db_password = "";
$db_name = "login";
$spojeni = MySQL_Connect($db_server ,$db_login, $db_password);
MySQL_Select_DB($db_name);
?>
HGD
Profil
poraďte pls někdo... Jak mam navázat spojení s DB abych ten příkaz moch mít v config.php a pak ho jenom naincludovat
Toto téma je uzamčeno. Odpověď nelze zaslat.

0