Skocz do zawartości
ra-v

Php Help

Rekomendowane odpowiedzi

Chciłem zrobić system pisania newsów

ale narazie mam problem z logowanie sie admina

mam dwa pliki

 

itd nie pisałem bo to każdy zna

i gdzie jest bład ?

jak sie loguj to mi wyskakuje złe hasło mimo że podałem dobre...

HELP....

 

EDIT

usunąłem już zawartość plików...

aby nie kopiowano

Edytowane przez ra-v

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Moje propozycje:

 

admin.html - nie podałeś metody przesłania danych z formularza.

<form action="adminpanel.php" method="post">
adminpanel.php - twój "if" sprawdzał tylko jeden warunek, ten prawdza oba:

if($adminlogin == $truelogin && $adminpass == $truepass)
Edytowane przez shaqal

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

nie chce mi się całego wklepywać na drugiego kompa (złożony jest).

Ale co się rzuca w oczy, i co możesz samodzielnie zrobić:

 

<form action="adminpanel.php" method="POST">
Dla pewności ;)

Poza tym wyremuj sobie ifa, a zamiast tego wpisz

echo $_POST['login'];echo $_POST['pass'];

Zobaczysz czy Ci przekazuje te zmienne z formularza.

 

Inna sprawa, to ta linijka:

if($adminlogin == $truelogin | $adminpass == $truepass)
Porównujesz bitowo.

Zamiast tego powinieneś logicznie- ||, albo w tym przypadku && jest prawidłowe.

Wyjaśnienie-

|| zwróci true, jeżeli co najmniej jedno pole będzie poprawne - czyli możesz wpisać poprawny login i złe hasło, a i tak wejdziesz.

&& zwraca true tylko kiedy oba są poprawne.

w związku z tym spróbuj tak:

if(($adminlogin == $truelogin) && ($adminpass == $truepass))
Nawiasy wstawiłem, bo nie pamiętam priorytetów operatorów :oops:

 

.:.:edit:.:.

Shaqual: pierwszy byłeś :]

Edytowane przez MareCeK

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

adminpanel.php

<?php

//poczatek skryptu autor : R@fcio

$adminlogin = $_POST['login'];

$adminpass = $_POST['pass'];

$truelogin = "admin";

$truepass = "pass";

// sprawdzamy pola login i password

if($adminlogin == $truelogin && $adminpass == $truepass)

{

echo '

<span class="style1 style2">Tytuł</span>

<input name="tytul" type="text" class="style3" /><br>

<span class="style3">Treść :</span>

<textarea name="tresc" cols="100" rows="15" class="style3"></textarea><br>

<input type="submit" class="style3" value="Napisz newsa" />'

$news = $tytul."\n".$tresc;

// otworzenie pliku

$openplik = fopen("news.txt","w");

//dopisanie nowych informacji

fputs($openplik,$news);

// zamknięcie pliku

fclose($openplik);

}

else

{

echo "Podales zle haslo";

}

//koniec skryptu

?>

I jak tu poprawić żeby zapisało sie do pliku news.txt ??

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

$news = $tytul."\n".$tresc;
jakie wartości mają $tytul i $tresc?

Nigdzie ich nie widzę, a to znaczy że masz dwa puste łańcuchy przedzielone enterem -> w rezultacie sam enter.

W tym przypadku pewnie będzie Ci wpisywać pojedynczy enter ilekroć uruchomisz skrypt.

 

Jeszcze coś:

Masz w parametrach funkcji fopen() podane "w" (zapis), przez co za każdym razem plik będzie zerowany a kursor ustawiany na jego początku. Jeżeli chcesz dopisywać do pliku, proponuję ustawić sobie "a" (albo "a+"), wtedy kursor ustawi się na końcu pliku i nie usunie dotychczasowej zawartości (może nawet po parokrotnym wywołaniu zobaczysz kilka enterów ;) ).

Więcej tutaj

Proponuję trochę poczytać największy "tutorial" dostępny w sieci, czyli właśnie php.net. Albo przynajmniej czytać opisy funkcji których używasz korzystając z innego tutoriala.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

ok dzięx zaraz zmienie z tym fopen a co to tego że sie nie zapisuje faktycznie miałem formularz ale zapomniałem przypisać wartości do zmiennej za pomocą $_POST[''];

mój bład teraz pomęcze sie nad odczytaniem

a teraz mam jeszcze pytanie jak zrobić żeby był podział na temat i treśc i przy odczytywaniu to rozróżniał

bo takto jak zapisuje i odczytuje to temat i treśc bierze za jedną całość...

mam np. napisać w notatniku $ temat = "coś tam" i $ tresc = "cos tam" a potem odczytać to ??

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

mam wątpliwości czy to porównanie zadziała...

if($adminlogin == $truelogin)
gdzieś widziałem że nie powinno się w ten sposób porównywać stringów bo w jakimś przypadku to będzie zwracać ciągle na false...

 

do porównywania stringów bardziej andaje się chyba operator === ale on też ma jakieś wady...

 

tutaj więcej.. moze sie przyda... :wink:

http://www.leon.w-wa.pl/texts/kurs/text.php

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

mam ostatnie pytanie

co jest źle w tym kodzie ?

<? php

// początek skryptu odczytywania danych z pliku news.txt

//autor : Ra-V21

// otworzenie pliku

$openplik = fopen("news.txt", "r");

// odczyt z pliku

$news = fread($openplik, filesize("news.txt"));

//rozszczepienie tytułu i tematu

explode("\t", $news);

// wyświetlenie newsa

echo $news;

//zamknięcie pliku txt

fclose($openplik);

//koniec skryptu

?>

Bład który mi wyskakuje to :

Parse error: parse error in /data/members/free/tripod/uk/c/m/s/cmsample/htdocs/portfolio/index.php on line 13

I siedze nad tym od pół godziny i nie moge nic wymyślić

Pomocy...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

flock($openplik ,1);fread($openplik , filesize("news.txt"));flock($openplik ,3);
uzywaj dodatkowo blokady pliku dla odczytu... na wszelki wypadek, choć w tym przypadku nie jest to istotnym błędem.

 

a błąd wyskakuje przy fclose() o ile dobrze policzyłem czy w której linijce? Która to jest linijka 13....

Acha... i jak przeczytasz plik to go zamnij, a potem operuj sobie na wczytanej tablicy czy wczytanym tekście (explode...)

Edytowane przez PelzaK

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

//rozszczepienie tytułu i tematuexplode("\t", $news);// wyświetlenie newsaecho $news;

Hmmm, to nie jest obiekt :) - musisz przypisać wynik explode() do zmiennej i odwoływać się do elementów tablicy. Poza tym we wcześniejszym listingu separatorem był znak nowej linii (\n) a teraz tabulacja (\t)?

 

// ...$temp = explode("\t", $news);// wyświetlenie tytułuecho $temp[0];// wyświetlenie treściecho $temp[1];// ...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...