Legro
10.09.2006, 17:18:26
Witam wszystkich serdecznie,
Napisałem sobie skrypt z panelem administracyjnym. Pisalem go na localhoscie.
Na localhoscie wszystko dziala poprawnie, wpisuje dane do panelu administracyjnego i mnie loguje. Natomiast gdy wgralem wszystkie pliki na wykupiony serwer za nic nie moge sie zalogowac do panelu admina, wpisuje poprawne dane i nic. Co moze byc tego przyczyna? Zly serwer czy co?
Prosze o pomoc...
bartek-z
10.09.2006, 17:28:03
Podobne problemy pojawiaja sie zazwyczaj w przypadku:
1. Atrybuty plikow/katalogow
2. W plikach masz odnosniki typu: c:\serwer\strona\plik.php, ktore na wykupionym serwerze nie prowadza do odpowiedniego pliku...
3. Uzywasz bibliotek, ktorych nie ma na serwerze
4. Kozystasz z bazy danych i masz nieodpowiednie dane (haslo/login).
Legro
10.09.2006, 17:40:54
Ad1 - uprawnienia plików i katalogów mam na pewno dobre,
Ad2 - nie mam takich odnośnikow, wszystkie odnosniki mam definiowane jako stałe, php znam od kilku miesiecy wiec nie popelnilbym takiego błedu,
Ad3 - nie uzywam żadnych bibliotek typu GD itp. Korzystam jedynie ze Smarty.
Ad4 - tak, z bazy danych korzystam, MySQL, ale login i hasło są poprawne, wręcz takie same jak na localhoscie.
Domniemam że może to być wina register_globals, ale nie jestem pewien.
Na localhoscie jest register_globals=on i korzystam ze zmiennych superglobalnych typu $_POST $_GET $_SESSION itp.
Natomiast na wykupionym jest register_globals=off
I korzystam tez ze zmiennych superglobalnych.
Wiec juz nie wiem w czym problem :/
kossa
10.09.2006, 17:41:22
Jeśli nie pojawiają się Tobie żadne błędy to włącz je w swoim panelu i wtedy będziesz miał jasność co jest nie tak.
Łukasz
Legro
10.09.2006, 17:44:24
kossa - w tym pliku do logowania do panelu admina mam opcje ze jak nie wypelnie wszystkich pol to wysiwetla error. Wpisuje poprawne dane do formularza i daje OK. Nie loguje mnie tylko pisze Wypelnij wszystkie pola formularza. Natomiast na localhoscie dziala wszystko jak powinno.
Cos mi sie wydaje ze skrypt nie przesyla zmiennych czy cos.
Jak to naprawic?
kossa
10.09.2006, 17:49:33
1. Jaka motodą przesyłasz dane (get, post)?
2. Sprawdz czy Twój skrypt wogóle je odbiera (echo)
3. Co robiasz aby ustalicz czy user jest zalgoowany (sesje,cookies)?
4. Sprawdz sesje,cookies są tworzone
5. Podaj na forum odpowiednie fragmenty Twojego kodu - bez tego nie jesteśmy wstanie pomóc - powodów nie działania może być X
Łukasz
Legro
10.09.2006, 18:53:08
Ad1 - dane z formularza przesyłam przez $_POST
Ad2 - ok
Ad3 - używam do tego sesji
Ad4 - ok
Ad5 - poniżej...
Kod do logowania admina:
<?php
require_once '../common_adm.php';
if ( $_POST['login'] == '' or $_POST['password'] == '' ) {
$c = 'Nalezy wypelnic wszystkie pola formularza.';
} elseif ( $_POST['login'] == $array['login'] && ( md5 ( $_POST['password'] ) == $array['password'] )) {
$_POST['login'] = $login;
$_SESSION['Admin'] = $login;
header ('Location: admin.php');
} else {
$c = 'Wpisz poprawny login i haslo administratora.';
}
?>
Potem sobie definiuje zmienna $c i wyswietlam w smarty.
Nikt nie pomoze?
kossa
10.09.2006, 18:56:25
tak na szybko:
<?php
else if (($_POST['login'] == $array['login']) && (md5($_POST['password'])==$array['password'] )) ?>
poza tym czy nie lepiej odwrócić kolejność w kodzie i zapytanie wykonywać jak są już dane z formularza pzresłane - bo jeśli jest pusto w formularzu to po co wyszukiwać czegoś i obciązać skrypt? i zrobić tak
<?php
$res = mysql_query (" Select * From `admin` where login=".$_POST['login']." and haslo=".$_POST['haslo']." ");
if ($ile>0){ // to zalogwany }
else echo "nie zalogowany"; ?>
to tak na szybko dla przykladu teraz, tak bedzie lepiej, optymalniej
Łukasz
Legro
10.09.2006, 19:47:52
Ale czy to pomoze w naprawie skryptu? Raczej watpie, ale sprawdze.
Rafał U.
11.09.2006, 13:42:54
Wydaje mi się, że to coś ze zmiennymi. Spróbuj zamienić ten kawałek kodu:
<?php
$_POST['login'] = $login;
$_SESSION['Admin'] = $login;
?>
Na ten:
<?php
$login = $_POST['login'];
$login = $_SESSION['Admin'];
?>
Powinno raczej działać :]
kossa
11.09.2006, 13:50:23
@Rafał U. masz rację ale nie do końca.
<?php
$_POST['login'] = $login; //nie zwróciłem na to uwagę ale żeczywiście tak nie można - jest to niedopuszczalne
$_SESSION['Admin'] = $login; //to jest ok jeśli chciał wartość zmiennej $login przyisać do zmiennej sesji ale nie wiemy co autor skryptu chciał osiągnąć
?>
Pozdrawiam,
Łukasz
Rafał U.
11.09.2006, 13:57:20
Tak to jest, jeżeli ktoś chce przypisać istniejącą zmienną do nieistniejącej

Co do drugiego punktu to tak też może być.
Legro
13.09.2006, 20:16:09
hhe. fajnie dzieki wam działa

zrobilem tylko to co podał Rafał U.
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.