Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: logowanie
Forum PHP.pl > Forum > PHP
peterlan
Witam, czy ktos moze mi pomoc,

mam cos takiego,

if($_SESSION["USER_AUTH"]==TRUE)
{
if ($login == 'piotr')
{
include("panel_admin.php");
}
else
{
include("panel_uzytkownik.php");
}
}

gdy podam login 'piotr', to laduje sie panel admin, ale po chwili przeskakuje na panel uzytkownika.

Jestem grafikiem, a w wolnej chwili probuje cos w php namieszac.
buliq
Masz może namiary na sklep ze szklanymi kulami?

A zmienna $login to gdzie jest deklarowana?
kw95s
Czemu cały czas sprawdzasz czy $login = Piotr ?
Za pierwszym razem gdy przkazuhesz tę zmienną zawiera Piotr lecz po przejściu do panelu admina zmienna jest pusta i zgodnie z instrukcją przechodzi do panelu użytkownika.
peterlan
w login.php mam cos takiego:

<?php
echo"
<form action=\"index.php?action=login\" method=post>
<input class=login type=text name=login></input>
<input class=login type=password name=pass></input>
<input class=submit type=submit value=OK></input>
</form>
";

if($_GET['action']=="login")

{
$login = $_POST['login'];
$pass = md5($_POST['pass']);
$db = mysql_connect( $db_server, $db_user, $db_pass );
mysql_select_db( $db_name );
$query = "SELECT `password` FROM `users` WHERE `login`='$login'";
$query = mysql_query( $query );
$haslo = mysql_fetch_row( $query );

if( $haslo[0]==$pass )
{
login( $login );
echo"<META HTTP-EQUIV=Refresh CONTENT=\"0; URL=index.php\">";
}

else{ echo"Zły login lub hasło!"; }

mysql_close( $db );
}
?>


Chodzi mi o to ze gdy ktos zaloguje sie jako piotr, to pokaze mu sie inny panel.
kw95s
Cytat(peterlan @ 30.07.2013, 12:31:11 ) *
w login.php mam cos takiego:

<?php
echo"
<form action=\"index.php?action=login\" method=post>
<input class=login type=text name=login></input>
<input class=login type=password name=pass></input>
<input class=submit type=submit value=OK></input>
</form>
";

if($_GET['action']=="login")

{
$login = $_POST['login'];
$pass = md5($_POST['pass']);
$db = mysql_connect( $db_server, $db_user, $db_pass );
mysql_select_db( $db_name );
$query = "SELECT `password` FROM `users` WHERE `login`='$login'";
$query = mysql_query( $query );
$haslo = mysql_fetch_row( $query );

if( $haslo[0]==$pass )
{
login( $login );
echo"<META HTTP-EQUIV=Refresh CONTENT=\"0; URL=index.php\">";
}

else{ echo"Zły login lub hasło!"; }

mysql_close( $db );
}
?>


Chodzi mi o to ze gdy ktos zaloguje sie jako piotr, to pokaze mu sie inny panel.

Niezbyt to uporządkowane
peterlan
a wiesz moze jak to rzowiaza? ja pracuje na codzien w photoshopie tongue.gif

rozwiazac.
kw95s
nie mam tera dostępu do komputera, do tego czasu na pewno ktoś Ci pomoże smile.gif
freemp3
Można wrzucić login do sesji.
peterlan
dzieki wielkie, dziala
buliq
Kod
$login = $_POST['login'];

POST jest przekazywany tylko raz, wrzuć to do sesji i wtedy sprawdzaj.
peterlan
w sesji mam cos takiego:

<?php
session_start();
function auth()
{
return $_SESSION["USER_AUTH"];
}
function login( $login )
{
$_SESSION["USER_AUTH"]=TRUE;
}
function logout()
{
$_SESSION["USER_AUTH"]=FALSE;
$_SESSION["USER_ID"]="";
}
if( $_GET['action']=="logout" ){ logout(); }
?>
freemp3
Zapomniałeś o zapisaniu do sesji identyfikatora uzytkownika w funkcji login.
peterlan
mam tak wpisane:

$_SESSION["USER_ID"]=$login;

freemp3
Więc powinno działać, w czym jest problem?
peterlan
dale mi to nie dziala:

if($_SESSION["USER_AUTH"]==TRUE)
if ($login=='piotr') {
include("panel_admin.php");
}
else{
include("panel_uzytkownik.php");
}

za kazdym razem skacze do else

moze to byc wina ze to robie na localu?
freemp3
Nie działa ponieważ dalej porównujesz zmienną $login zamiast wartość z sesji.
peterlan
czyli jak np?

wow, dziala!! dzieki
freemp3
Czyli zamiast:
  1. if ($login=='piotr') {

powinno powinno być:
  1. if ($_SESSION["USER_ID"]=='piotr') {
peterlan
witam jeszcze jedno pytanko:

jak dobrze zapisac takie cos?

  1. if($_SESSION["USER_AUTH"]==TRUE)
  2. if ($_SESSION["USER_ID"] == 'piotr')
  3. {
  4. include("panel_piotr.php");
  5. }
  6. elseif ($_SESSION["USER_ID"] == ('administrator' || 'remik'))
  7. {
  8. include("panel_administrator.php");
  9. }
  10. elseif ($_SESSION["USER_ID"] == 'neo')
  11. {
  12. include("panel_neo.php");
  13. }


nie wiem czy dobrze kombinuje, ale nie dziala mi to poprawnie.

chodzi mi dokladnie o ta linijke:

  1. elseif ($_SESSION["USER_ID"] == ('administrator' || 'remik'))
ssstrz
musisz zastosować funkcję in_array
freemp3
To nie zadziała ponieważ
  1. ('administrator' || 'remik')

Zwraca true, które nastepnie jest porównywane ze stringiem. String jest konwertowany do zmiennej typu bool, a ponieważ jest tam jakaś treść to wynikiem także będzie true. Więc wynik jest taki, że:
  1. true == true
peterlan
hmmm,

cos w tym stylu?

  1. (in_array('administrator', 'renate')))
freemp3
Przeczytaj dokładnie dokumentacje funkcji
  1. (in_array($_SESSION["USER_ID"], array('administrator', 'renate')))
peterlan
dla mnie to jest jakas magia, skad Wy to wszystko wiecie? ja jestem grafikiem, chcialbym sie nauczyc php, ale chyba nie mam glowy do tego.
chmiello
Nie ma innego sposobu jak tylko siedzieć, czytać poradniki, kursy i samemu pisać kod, bardzo dużo kodu, wymyśl sobie jakiś temat (np. projekt jakiejś strony) i obuduj go w kod, a potem następny i następny i następny....
peterlan
prosze o jeszcze jedna porade,

tutaj wszystko jest juz dobrze:

  1. if($_SESSION["USER_AUTH"]==TRUE)
  2. if (in_array($_SESSION["USER_ID"], array('Sabine','Claudia')))
  3. {
  4. include("panel_verkaufer.php");
  5. }
  6. elseif (in_array($_SESSION["USER_ID"], array('Administrator','Renate','Chef')))
  7. {
  8. include("panel_administrator.php");
  9. }
  10. elseif (in_array($_SESSION["USER_ID"], array('Christian','Hermann','Jochan','Roland','Ryszard')))
  11. {
  12. include("panel_uhrmacher.php");
  13. }


Jak w tym momencie po zalogowaniu wyswietlic ktory uzytkownik zostal zalogowany?
freemp3
Nazwę użytkownika trzymasz w sesji więc w odpowiednim miejscu po prostu ją wyświetlasz:
  1. echo $_SESSION["USER_ID"]
peterlan
magia, dzieki: )

jescze jedno krotkie pytanie:

czy mozna jakos zasapic
  1. include


  1. if($_SESSION["USER_AUTH"]==TRUE)
  2. if (in_array($_SESSION["USER_ID"], array('Sabina','Klaudia')))
  3. {
  4. include("lista.php");
  5. }
  6. elseif (in_array($_SESSION["USER_ID"], array('Administrator','Renata','ja')))
  7. {
  8. include("lista.php");
  9. }
  10. elseif (in_array($_SESSION["USER_ID"], array('as','Hermann','sa','sa','sa')))
  11. {
  12. include("lista.php");
  13. }


tak by otwierala sie nowa strona? tj. lista.php
freemp3
Co dokładnie chcesz zrobić? Przekierować czy otworzyć stronę w nowej karcie?
peterlan
  1. header("location: lista.php");


chodzilo mi o cos takiego
freemp3
Czyli przekierowanie, nie zapominaj o dodaniu exit. Samo dodanie header nie spowoduje przekierowania strony od razu. Jest to tylko informacja dla przeglądarki, że po wykonaniu skryptu ma ona przekierować użytkownika pod podany adres. Oznacza to, że wszystko co jest poniżej wykona się aż do samego końca i dopiero po tym zostanie wykonane przekierowanie.
peterlan
witam, czym moge jeszcze zapytac o jedna sprawe, a mianowicie,

znalazlem gdzies w necie rozwiazanie dot. skalowania zdjec, prosze mi powiedziec czy dobrze kombinuje?

  1. $photo = mysqli_real_escape_string($dbc, trim($_FILES['photo']['name']));
  2. $photo_type = $_FILES['photo']['type'];
  3. $photo_size = $_FILES['photo']['size'];
  4.  
  5. $scale_size = $photo_size;
  6.  
  7.  
  8. if (!empty($datumek) && !empty($photo) && !empty($verkaufer) && !empty($artikel) && !empty($material) && !empty($hersteller) && !empty($modell) && !empty($darenr) && !empty($indnr) && !empty($rechnungsnummer) && !empty($referenz))
  9. {
  10. if ((($photo_type == 'image/gif') || ($photo_type == 'image/jpeg') || ($photo_type == 'image/pjpeg') || ($photo_type == 'image/png'))
  11. && ($photo_size > 0) && ($photo_size <= GW_MAXFILESIZE)) {
  12. if ($_FILES['photo']['error'] == 0) {
  13. $target = GW_UPLOADPATH . $photo;
  14. if (move_uploaded_file($_FILES['photo']['tmp_name'], $target))
  15.  
  16. $query = "INSERT INTO bestandsliste (datumek, photo, verkaufer, artikel, material, hersteller, modell, ekk3200, darenr, indnr, rechnungsnummer, datumvk, referenz) VALUES ('$datumek','$photo', '$verkaufer', '$artikel', '$material', '$hersteller', '$modell', '$ekk3200', '$darenr', '$indnr', '$rechnungsnummer', '$datumvk', '$referenz')";
  17.  
  18. }
  19.  
  20. if(is_uploaded_file($plik_tmp))
  21. {
  22. move_uploaded_file($plik_tmp, ''.$scale_size.'');
  23. echo "wszystko poszlo ok";
  24.  
  25. $img = imagecreatefromjpeg(''.$scale_size.'');
  26.  
  27. $width = imagesx($img);
  28. $height = imagesy($img);
  29.  
  30. $width_mini = 250;
  31. $height_mini = 170;
  32. $img_mini = imagecreatetruecolor($width_mini, $height_mini);
  33.  
  34. imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $width_mini , $height_mini, $width , $height);
  35. imagejpeg($img_mini, "min-".$save_file."", 80);
  36. imagedestroy($img);
  37. imagedestroy($img_mini);
  38. }
  39.  
  40. }
  41.  
  42. mysqli_query($dbc, $query);
gitbejbe
działa Ci to wogole ? jak tak to każdy typ obrazków jest dobrze przerabiany ? mam na myśli zwłaszcza format png i gif.
$target zwraca Ci na pewno dobrą lokalizacje ?

$photo = mysqli_real_escape_string($dbc, trim($_FILES['photo']['name'])); Po co to to wszystko przed $_FILES['photo']['name'] ? wywal

rażący brak obsługi błędów

w ogóle dziwnie to wygląda, poszukałbym Ci czegos ale właśnie kończe robote
peterlan
wgrywanie zdjec mi dziala, ale nie skaluje.
mlawnik
Sprawdź, czy na serwerze jest biblioteka gd.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.