Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> logowanie - include()
invx
post
Post #1





Grupa: Zablokowani
Postów: 655
Pomógł: 0
Dołączył: 28.11.2003
Skąd: Zagórz

Ostrzeżenie: (80%)
XXXX-


napisaem skrypt do logowania mniej wiecej najwazniejejsza jego czesc wyglada tak:

login.php
[php:1:984db7506e]<?php
if($_GET[mode] == spr)
{
if(!isset($_POST[login]))
{
echo"Nie masz dostępu do tego modułu";
}

else
{
mysql_connect("127.0.0.1", "root", "krasnal") or die ("nie mozna polaczyc sie z baza");
mysql_select_db(rcx) or die ("nie mozna wybrac bazy");

session_start();

if($_POST['submit'])
{
$wyszukaj = mysql_query("SELECT * FROM users WHERE login='$_POST[login]' AND haslo='$_POST[pass]'");
$wynik = mysql_num_rows($wyszukaj);

if(empty($_POST[login]))
{
echo "nie podano loginu<br>";
}

if(empty($_POST[pass]))
{
echo "nie podano hasla<br>";
}


elseif($wynik == 1)
{
$_SESSION['log'] = $login;
}

elseif(isset($_POST[login]) && $_POST[pass])
{
echo "Niepoprawne dane";
}
}

if($_SESSION['log'])
{
/*Wstwaic ID*/ echo "Witaj <b>".$_SESSION['log']."</b> na stronie !<br><a href='form_login.php?mode=a_profil&id=$id'>aktualizuj swuj profil</a><br><a href=login.php?mode=wyloguj>wyloguj</a>";
}
}
}


elseif($_GET[mode] == wyloguj)
{
session_start();
unset($_SESSION['log']);
echo"zostales wylogowany kliknij aby powrucic <a href=login.php>TUTAJ</a>";
}

else
{
echo"
<form action=logowanie/login.php?mode=spr method='POST'>
Login:
<input type='text' name='login'>
Hasło:
<input type='text' name='pass'>
<input type='submit' name='submit' value='Zaloguj'>
</form>
...
?>[/php:1:984db7506e]

plik ten includuje do pliku head.inc.php, nastepnie plik head.inc.php do index.php. i tu pojawia sie problem, a nawet dwa:
1. po includzie, login.php do head.inc.php, a potem do index.php, url'e zmieniaja mi sie jak by byly z poziomu pliku index.php, czy nie da sie tego uniknac?? (ale z tym sobie poradzilem, zmieniajac po prostu url'e )
2. w index.php pojawia mi sie jak powinien formularz do logowania z pliku login.php, i po kliknieciu na ZALOGUJ, chce zeby w razie zaogowania, formularz zmienilo, na info ze zalogowalo, a teraz zamienia mi cala strone... w czym popelniam blad (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
shima
post
Post #2





Grupa: Zarejestrowani
Postów: 245
Pomógł: 0
Dołączył: 9.09.2002

Ostrzeżenie: (0%)
-----


Bazą jest plik, w którym includujesz. Oczywiście możesz sobie z tym poradzić. Sprawdzaj gdzie jesteś i dodawaj opowiednią część [manual:568cbe3655]dirname[/manual:568cbe3655]()
Go to the top of the page
+Quote Post
invx
post
Post #3





Grupa: Zablokowani
Postów: 655
Pomógł: 0
Dołączył: 28.11.2003
Skąd: Zagórz

Ostrzeżenie: (80%)
XXXX-


8O to sie odnosi do pierwszego problemu czy drugiego, jak bys mogl janiej (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif)
Go to the top of the page
+Quote Post
shima
post
Post #4





Grupa: Zarejestrowani
Postów: 245
Pomógł: 0
Dołączył: 9.09.2002

Ostrzeżenie: (0%)
-----


Cytat
8O to sie odnosi do pierwszego problemu czy drugiego, jak bys mogl janiej (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif)

@1: Jeżeli w index.php masz [php:1:23f1149328]<?php
include('katalog/plik.php')
?>[/php:1:23f1149328], a w plik.php znów dajesz include, to ścieżkę obliczasz z poziomu index.php, więc jeżeli ten drugi plik jest na tym samym poziomie co plik.php, to ścieżka nadal powinna być 'katalog/drugi.php' . Zawsze możesz zdefiniować sieżkę bazową i od niej obliczać ścieżkę do pliku. A nawet nie definiować. Dla informacji wywołaj sobie kod:
[php:1:23f1149328]<?php
print_r ($_SERVER);
?>[/php:1:23f1149328]
@2: To nie do końca rozumiem jak zmienia się strona, ale zastanów się, czy $_SESSION['log'] ma szansę być ustawiona. Może nie mam racji, ale przejrzałem kod pobieżnie. Uporządkuj go trochę, chyba sprawdzanie czy $_GET['mode'] jest równe spr i do tego czy ustawione jest $_POST['login'] to chyba o jedno za dużo. Po za tym sprawdzenie czy jesteś zalogowany nie ppowinno byc uzależnione od wypełnienia formularza.
Go to the top of the page
+Quote Post
invx
post
Post #5





Grupa: Zablokowani
Postów: 655
Pomógł: 0
Dołączył: 28.11.2003
Skąd: Zagórz

Ostrzeżenie: (80%)
XXXX-


1. jak mam zdefiniowac ta sciezke ?
2. zaznaczylem ze to najwazniejsza czesc kodu, ale prosciej, jak zrobiz zeby po zalogowaniu, zamiast formularza pojawiala sie info o zalogowaniu, ale zeby reszta indexu zostala niezmieniona, oczywsicie z przeladowaniem. dla tego kodu co wkleilem.
Go to the top of the page
+Quote Post
shima
post
Post #6





Grupa: Zarejestrowani
Postów: 245
Pomógł: 0
Dołączył: 9.09.2002

Ostrzeżenie: (0%)
-----


Cytat
1. jak mam zdefiniowac ta sciezke ?
2. zaznaczylem ze to najwazniejsza czesc kodu, ale prosciej, jak zrobiz zeby po zalogowaniu, zamiast formularza pojawiala sie info o zalogowaniu, ale zeby reszta indexu zostala niezmieniona, oczywsicie z przeladowaniem. dla tego kodu co wkleilem.


@1: w wersji najprostszej, wszystkie include dołączaj jakby były z poziomu index.php
@2: rozumiem, że login jest zaincludowany w index.php, nie przekierowywuj na login.php?mode=spr tylko na $_SERVER['PHP_SELF'] a zamiast $_GET['mode'] użyj $_POST['mode'] - zmienną mode daj jako pole ukryte formularza. I wyrzuć to session_start() gdzieś na początek (to już uwaga edycyjna).
Go to the top of the page
+Quote Post
invx
post
Post #7





Grupa: Zablokowani
Postów: 655
Pomógł: 0
Dołączył: 28.11.2003
Skąd: Zagórz

Ostrzeżenie: (80%)
XXXX-


1. ale mam je w roznych katalogach. nie moge ich dac na jeden poziom
2. zmienilem i blad wywala
Kod
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at c:usrkrasnalwwwrcx-portalindex.php:14) in c:usrkrasnalwwwrcx-portallogowanielogin.php on line 15



Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:usrkrasnalwwwrcx-portalindex.php:14) in c:usrkrasnalwwwrcx-portallogowanielogin.php on line 15

a na dole pokazuje ze zalogowalo mnie
teraz kod wyglada tak

[php:1:114af85578]<?php
if($_POST[mode] == spr)
{
if(!isset($_POST[login]))
{
echo"Nie masz dostępu do tego modułu";
}

else
{
mysql_connect("127.0.0.1", "root", "krasnal") or die ("nie mozna polaczyc sie z baza");
mysql_select_db(rcx) or die ("nie mozna wybrac bazy");

session_start();

if($_POST['submit'])
{
$wyszukaj = mysql_query("SELECT * FROM users WHERE login='$_POST[login]' AND haslo='$_POST[pass]'");
$wynik = mysql_num_rows($wyszukaj);

if(empty($_POST[login]))
{
echo "nie podano loginu<br>";
}

if(empty($_POST[pass]))
{
echo "nie podano hasla<br>";
}


elseif($wynik == 1)
{
$_SESSION['log'] = $login;
}

elseif(isset($_POST[login]) && $_POST[pass])
{
echo "Niepoprawne dane";
}
}

if($_SESSION['log'])
{
/*Wstwaic ID*/ echo "Witaj <b>".$_SESSION['log']."</b> na stronie !<br><a href='form_login.php?mode=a_profil&id=$id'>aktualizuj swuj profil</a><br><a href=login.php?mode=wyloguj>wyloguj</a>";
}
}
}


elseif($_GET[mode] == wyloguj)
{
session_start();
unset($_SESSION['log']);
echo"zostales wylogowany kliknij aby powrucic <a href=login.php>TUTAJ</a>";
}

else
{
echo"
<form action='$_SERVER[PHP_SELF]' method='POST'>
Login:
<input type='text' name='login'>
Hasło:
<input type='text' name='pass'>
<input type='hidden' name='mode' value='spr'>
<input type='submit' name='submit' value='Zaloguj'>
</form>
<a href='$_SERVER[PHP_SELF]'>zarejestruj sie</a>&nbsp;|&nbsp;
<a href='logowanie/form_login.php?mode=zapomnialem_pass'>zapomnialem hasla</a>
";
}
?>[/php:1:114af85578]
Go to the top of the page
+Quote Post
invx
post
Post #8





Grupa: Zablokowani
Postów: 655
Pomógł: 0
Dołączył: 28.11.2003
Skąd: Zagórz

Ostrzeżenie: (80%)
XXXX-


prubowalem gdzie indziej dac sesion_start() ale nie pomoglo (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) co w takim razie jest zle (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 16:39