Mam o to taki sobie sql
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user` varchar(50) NOT NULL DEFAULT '',
`pass` varchar(50) NOT NULL DEFAULT '',
`nick` varchar(50) NOT NULL DEFAULT '',
`email` varchar(50) NOT NULL DEFAULT '',
`nazwisko` varchar(50) NOT NULL DEFAULT '',
`lvl` varchar(50) NOT NULL DEFAULT '',
`x` varchar(50) NOT NULL DEFAULT '',
`data` varchar(50) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
i taki skrpcik php:
<?php
/* Gdyby, ktoś(czytaj zły niedobry hacker) popsuł apacha tak, że nie widzi plików .htaaccess to musimy sami upewnić s
i
czy plik został tylko includowany */
if(eregi(\"config.php\",$_SERVER['PHP_SELF']) OR eregi(\"config.php\",$_SERVER['QUERY_STRING'])) { header(\"Location: /\"); die(); }
/* Klucz XOR dla szyfrowania cookie dowolny ciąg znaków - musi mieć dokładnie 64 znaki
2x hash md5 */
$_CONFIG['kxc'] = \"a523d703f908dd69e02db64ec35d07315f4c49ab3cacad14a97304b02f2fbb09\";
/* Dane potrzebne do zalogowania sie do bazy MySQL - zastap swoimi */
$_CONFIG['MySQL']['host'] = \"localhost\";
$_CONFIG['MySQL']['user'] = \"krasnal\";
$_CONFIG['MySQL']['pass'] = \"fajnehaslo\";
$_CONFIG['MySQL']['base'] = \"taksobietambazal\";
/* jesli nie mamy swojej sesji to ja zakladamy */
if(!isset($_SESSION['sesja'])) { $_SESSION['sesja'] = '';
}
/* Łączymy sie z Bazą Danych, jesli coś jest nie tak - wyskakuje nam \"przyjazny\" komunikat */
@mysql_connect($_CONFIG['MySQL']['host'], $_CONFIG['MySQL']['user'], $_CONFIG['MySQL']['pass']) or
die('
Err0r
body { background: #FFFFFF; }
div { font-family: Verdana, Arial; font-size: 12px; color: #000000; }
<DIV>
Przepraszamy, wystąpiła chwilowa awaria serwisu.
Nie mogę połączyć się z serwerem bazy danych.
Proszę powiadom <a href="\"mailto:ustek@ustek.one.pl\"">Webmastera.
');
/* To samo co wyżej, z tym, że teraz wybieramy bazę */
Err0r
body { background: #FFFFFF; }
div { font-family: Verdana, Arial; font-size: 12px; color: #000000;}
<DIV>
Przepraszamy, wystąpiła chwilowa awaria serwisu.
Nie mogę odnaleść bazy Danych.
Proszę powiadom <a href="\"mailto:ustek@ustek.one.pl\"">Webmastera.
');
function login() {
/* Pewnie sie zastanawiasz czemu nie globalizujemy tez potrzebnej nam tablicy $_P
ST - otórz ona już jest globalizowana - automatycznie */
/* Niezalogowany dopuki nie udowodni, że jest tym za kogo się podaje */
$zalogowany = false;
/* W pierwszej kolejności będą brane pod uwage dane z cistek, potem sesji, na koń
u z formularza. Ta część funkcji ma ustalić, skąd pochodzą dane, i upewnić się,
e owe dane są zaszyfrowane w md5. strtolower przy loginie, ma za zadanie sprawić
by wielkość liter nie miała znaczenia - ale tylko przy loginie */
if(isset($_COOKIE[\"dane\"])) { $dane = $_COOKIE[\"dane\"]^$_CONFIG['kxc'];
$login = substr($dane, 0
, 32
); $metod = \"cookies\";
}
elseif(isset($_SESSION['login']) AND
isset($_SESSION['haslo'])) { $login = $_SESSION['login'];
$haslo = $_SESSION['haslo'];
$metod = \"session\";
}
elseif(isset($_POST['login']) AND
isset($_POST['haslo'])) { $haslo = md5($_POST['haslo']); $metod = \"post\";
}
/* Jeśli istnieje $metod - czyli jeśli dane zostały dostarczone, to sprawdzamy czy są poprawne. Możemy spo
ojnie wstawić zmienne $login i $haslo do zapytania SQL bo obydwie zmienne, zawsz
i wszędzie wyglądać będą tak samo dwa ciągi zawierające 32 znaki czyli 2x hash
d5
*/ $query = mysql_query(\"SELECT * FROM `users` WHERE `user`='\".$login.\"' AND `pass`='\".$haslo.\"';\"); /* Jeśli baza danych zwróciła tylko jeden wynik to haslo i login zostały odnalezi
ne zatem $zalogowany = true, ale oprucz tego musimy sie upewnić, że dane, które
ykożysaliśmy nam nie przepadną */
$zalogowany = true;
/* Jeśli dane nie pochodzą z sesji, to umieszczamy je w sesji + zapisujemy w sesj
info, ktore może się do czegoś przydać, np nick */
if($metod <> \"session\") {
$_SESSION['login'] = $wiersz['user']; ///dlaczego dialaja mi te sesje
$_SESSION['haslo'] = $wiersz['pass'];///dlaczego dialaja mi te sesje
$_SESSION['nick'] = $wiersz['nick'];///dlaczego dialaja mi te sesje
$_SESSION['email'] = $wiersz['email'];/// a ta nie??
/* Jeśli dane pochodzą z formularz i dodatkowo gość poprosił o zapamiętanie danyc
na przyszłość to dodatkowo umieszczamy potrzebne (zaszyfrowane) dane w cisteczkach */
if($metod == \"post\" AND isset($_POST['pamietaj']) AND $_POST['pamietaj'] == \"ok\") {
$dane = ($login.$haslo)^$_CONFIG['kxc'];
setcookie (\"dane\", $dane,time()+3600*24*365); /* straci ważnosc za rok */ }
}
}
}
return $zalogowany;
}
/* Wylogowanie, polega na zniszczeniu danych, które znajdują sie w sesji i jeśli
ą w cistakach to tam też sprzątamy */
function logout() {
if(isset($_COOKIE[\"dane\"])) setcookie (\"dane\", \"\",time()-3600*24*365); unset($_SESSION['login']); unset($_SESSION['haslo']); unset($_SESSION['nick']); unset($_SESSION['email']); }
?>
Jakie mogą być przyczyny tego że zaznaczone sesje mi działają ( ja ten plik includuje do innych plikow) a inne nie?
PS: jeżeli Ktoś czegoś niezrozumiał to proszę mi wybaczyć
EDIT:
<?php
$query = mysql_query("SELECT `user`,`pass`,`nick`,`email` FROM `users` WHERE `user`='".$login."' AND `pass`='".$haslo."';"); ?>
Tu wystarczyło zmienić i gitarka
Ten post edytował qba10 17.11.2007, 23:28:43