Jo.
THa KeinuX:
1. Kur yra įterpiamas Functions.php failas?
2. Kur yra įvykdoma online funkcija?
3. Kodėl header naudoji, kai yra išvesta informacija?
4. Kodėl naudoji dvi mysql užklausas? Tiesiog pirmąja užklausa gauk slaptažodį bei rangą. Po to aišku patikrink ar slaptažodžiai sutampa ar ne ir dar patikrink ar rangas yra admin ir pnš.
5. Kam formos duomenis siunti į index.php?id=log, kai su "id" kintamuoju nieko nedarai?
EDIT: Šitas klausimas buvo kilęs, kai vienas dalykas buvo neaiškus, po to paaiškėjus pamiršau ištrint.
6. Nebūtų geriau vietoj šito:
- Kodas: Pasirinkti visus
if ($check2 == 0) {
$online = 0;
}else{
$online = 1;
}
return $online;
}
naudoti šitą:
- Kodas: Pasirinkti visus
if ($check2 == 0) {
return 0;
}else{
return 1;
} }
Čia perrašyta tavo prisijungimo funkcija pagal mane:
functions.php failas:
- Kodas: Pasirinkti visus
<?
function login($first=0){
if($first===0){
global $nick,$pass;
}elseif($first===1){
$nick = $_COOKIE['username'];
$pass = $_COOKIE['password'];
}
// Šioje vietoje prisijuk prie MySQL'o!
$query = mysql_query("SELECT * FROM users where nickas = '$nick'");
if(mysql_num_rows($query))<=0){
return 1;
}else{
while($infoUser = mysql_fetch_array($query)) {
if($pass != $infoUser['password']){
return 0;
}else{
$time = time()+ 3600;
setcookie("username",$nick,$time);
setcookie("password",$pass,$time);
if($infoUser['rank']=="admin"){
return 4;
}elseif($infoUser['rank']=="user"){
return 3;
}else{
return 2;
}}}}
?>
Kaip pirmą kartą jungsies, iš formos nick'ą ir užšifruotą slaptažodį įdėk į kintamuosiuos $nick ir $pass, bei kreipkis į funkciją su reikšme 1 - login(1)
Tada skriptas patikrins vartotojo vardą ir slaptažodį, jei bus geri tada į sausainėlius username ir password įrašys vartotojo vardą ir slaptažodį ir pasižiūrės kos rangas. Jei rangas bus admin, tada skriptas gražins reikšmę 4, jei rangas bus user tada skriptas gražins 3, jei rangas bus kitoks skriptas gražins 2, jei neras tokio vartotojo vardo gražins reikšmę 1, jei slaptažodžiai nesutaps, tada gražins reikšmę 0.
Kai norėsi tiesiog patikrinta ar sausainėliuose įvesta teisinga informacija, tai tada kreipkis į funkciją su reikšme 0 - login(0), skriptas gražins tokias pačias reikšmes.
Tai maždaug index.php failas turėtų būti toks:
Tikrinam ar GET kintamasis id yra log;
Jei taip, tada patikrinam ar gauti duomenys iš formos;
Jei taip tada kreipiamės į funkciją login(1) ir tikrinam ar gražino reikšmę 4;
Dar galima tikrinti koks kitoks skaičius buvo gražintas ir pagal tai gražinti atitinkamą informaciją;
Jei taip tada su header perkėliam į kitą puslapį (header("index.php?id=admin"));
Jei nebuvo nusiusti duomenys is formos, tada isvedam prisijungimo forma;
Jei GET kintamasis id nėra log, tada tikrinam ar yra admin;
Jei taip kreipiamės į funkcija login(0), jei ji gražins 4, tada išvedam admin panel;
Jei ne, išvedam klaida dar ką nors.
Ir viskas.
Tikiuosi ką nors paaiškinau
Ai dar prisiminiau, kad žiūrėdamas tavo skriptą pamačiau, kad, kai užsetinai sausainėlius, username ir pass rašei be kabučių, o reikia su kabutėm, nes čia paprasta eilutė (string)
