Puchacz1 Opublikowano 24 Maja 2010 Zgłoś Opublikowano 24 Maja 2010 (edytowane) Warning: session_start(): Cannot send session cookie - headers already sent in C:\usr\krasnal\www\PRZYKL~2\index.php on line 2Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at C:\usr\krasnal\www\PRZYKL~2\index.php:2) in C:\usr\krasnal\www\PRZYKL~2\index.php on line 2 wyjawcie mi o co chodzi. Chociażbym chciał sobie wyświetlić taki oto kod: <?php echo('to ja') ?> to zawsze nie działą. Dzisiaj bawiłem się trochę session_start(); i od tego się zaczęło. Teraz nie da się nawet zwykłego tekstu wyświetlić. Wyczytałem gdzieś, że może chodzić o spację przed skryptem ale spacji niet. Edytowane 25 Czerwca 2010 przez Puchacz1 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
borsuczy_król Opublikowano 24 Maja 2010 Zgłoś Opublikowano 24 Maja 2010 session_start() wywołuje się na samym początku a ty najwyraźniej wywołujesz po nagłówkach HTML-a. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Puchacz1 Opublikowano 24 Maja 2010 Zgłoś Opublikowano 24 Maja 2010 właśnie wywołuje ją na samiuteńkim początku. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
borsuczy_król Opublikowano 24 Maja 2010 Zgłoś Opublikowano 24 Maja 2010 Rozumiem, że jak usuniesz session_start() to działa? Pokazałbyś może cały ten skrypt. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Puchacz1 Opublikowano 24 Maja 2010 Zgłoś Opublikowano 24 Maja 2010 widzisz cały skrypt -> to tylko echo, ono także nie działa. Tam nawet nie ma już tego session_start. Usunąłem je, nadal nie działa. Wyczyściłem cookie, nadal to samo :). Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
m4r Opublikowano 24 Maja 2010 Zgłoś Opublikowano 24 Maja 2010 ob_start(); na początku powinno pomóc. Nie zapomnij jeszcze, przy jego użyciu, na końcu skryptu wklepać ob_end_flush(); albo ob_flush();. Ale stawiam na to, że masz zapisany plik w czystym utf8 (nie utf8 bez BOM, inaczej zwane "ansi jako utf8"), co powoduje wysłanie paru bajtów z defaultu znajdujących się przed ciapkami <?php. W takim przypadku pomoże (jeżeli komuś nie spodoba się buforowanie wyjścia), zapisanie jako właśnie takie utf8 bez BOM. <?php echo ( 'to ja') ?>nie zadziała pewnie przez to, że nie masz średnika po nawiasie. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 24 Maja 2010 Zgłoś Opublikowano 24 Maja 2010 Widocznie masz coś skopane w konfiguracji serwera. Kod: <? echo 'hello'; ?>powinien działać niezależnie od ustawień edytora. Klepię identyczny kod w PSPad (zapis w UTF8, strona kodowa i nagłówki nie ustawione) i działa bez problemu. session_start() powinno być przed drukowaniem czegokolwiek na ekran. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
m4r Opublikowano 24 Maja 2010 Zgłoś Opublikowano 24 Maja 2010 (edytowane) ULISSES, spróbuj tego B-) : utf.zip Jeżeli jest wszystko w porządku z konfigiem, to powinno być ostrzeżenie. Tak sobie jeszcze sprawdziłem z nudów tego ob_flush()... nie bangla, więc zostaje zmiana charsetu na "normalny". Edytowane 24 Maja 2010 przez m4r Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 24 Maja 2010 Zgłoś Opublikowano 24 Maja 2010 m4r: Jakiś edytor do... niczego. Otworzyłem w PSPad, Ctrl+S i działa ;] Co to za edytor? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
m4r Opublikowano 24 Maja 2010 Zgłoś Opublikowano 24 Maja 2010 Każdy normalny, z którym miałem do czynienia. To PSPad jest ułomny, bo chrzani, jak widać, kodowania i z utf8+BOM bez przyczyny robi ANSI przy zapisie. Przez to, zresztą, go nie używam- nie ma szans z plikami, na których działam na co dzień. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Puchacz1 Opublikowano 26 Maja 2010 Zgłoś Opublikowano 26 Maja 2010 (edytowane) <form action="index.php" mehtod="GET"><input type="text" name="nick" /> <textarea name="textarea"></textarea> <input type="submit" value="Wyslij" /></form><?php$nick = $_GET['nick'];$textarea = $_GET['textarea'];if(empty($nick)){ echo('Wpisz nazwe uzytkownika');}elseif(!is_readable('comments.txt')) { echo('Nie moge odczytac pliku.');}else{ if (!empty($textarea) && file_exists('comments.txt')); { $open = fopen('comments.txt', 'r'); $read = fread($open, filesize('comments.txt')); fclose($open); $save = $read . $textarea; file_put_contents('comments.txt', $save); $open = fopen('comments.txt', 'r'); $read = fread($open, filesize('comments.txt')); fclose($open); echo($read); } else { echo("Puste pole textarea, uzupelnij je"); }}?> możecie mi powiedzieć dlaczego wywala błąd w miejscu ostatniego else?. Edytowane 26 Maja 2010 przez Puchacz1 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 26 Maja 2010 Zgłoś Opublikowano 26 Maja 2010 (edytowane) Pomijając, że: - formularzy nie wysyłamy przez GET, lecz przez POST - masz literówkę w słowie "method" to nie napisałeś treści błędu, a tutaj wróżek nie ma. Edit: Jak bym miał strzelać, to masz średnik po IF w linii 18. Edytowane 26 Maja 2010 przez ULLISSES przepuszczenie kodu przez serwer ;] Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Puchacz1 Opublikowano 26 Maja 2010 Zgłoś Opublikowano 26 Maja 2010 Parse error: parse error in c:\usr\krasnal\www\podstrony\komentarze.php on line 32 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
stivo Opublikowano 26 Maja 2010 Zgłoś Opublikowano 26 Maja 2010 Winny jest średnik w 18 linii, jak to zauważył ULLISSES Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 26 Maja 2010 Zgłoś Opublikowano 26 Maja 2010 m4r: Wracając jeszcze do edytora, to UTF8 nie wymaga BOM, więc jest on ignorowany przy zapisie (domyślny zapis w PSPad ustawiony właśnie na UTF8). Jak widać lekcje odrobiłem ;] Coś słabo ustawiony ten Krasnal/PHP, bo komunikat powinien być bardziej szczegółowy: Parse error: syntax error, unexpected T_ELSE in D:\AppServ\www\test.php on line 30 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Puchacz1 Opublikowano 26 Maja 2010 Zgłoś Opublikowano 26 Maja 2010 (edytowane) dzięki za odpowiedzi. ULLISSES, jeśli wiesz jak zmienić działanie serwera tak aby wyświetlał bardziej szczegółowo błędy to byłbym wdzięczny :). Ewentualnie, powiedz co wpisać w google to sobie znajdę. Powracając jednak, chciałem Was zapytać o kilka istotnych rzeczy. 1. Pisząc jakiś skrypt w którym wysyłam dane, zapisuje je w pliku txt a następnie wyświetlam jest problem ponieważ po odświeżeniu dane zapisują się jeszcze raz. Jak sobie tak odświeżam to ciągle się zapisuje to samo. Jak zlikwidować ten problem?. Dobrze byłoby gdybyś wskazali nazwy funkcji które mogą mi pomóc. Jakimś rozwiązaniem byłoby napisanie skryptu sprawdzającego czy w następnej linijce nie są zapisywane takie same dane jak w poprzedniej. Jest to jednak chyba trochę nie wygodne. Może da się to jakoś uprościć?. 2. includuje sobie w index.php skrypt komentarze.php. Działa on jednak dopiero po wejściu w podstronę (które nawiasem mówiąc także są tworzone przez skrypt). Co powinienem zrobić aby działało to od pierwszego wejścia. Gdyby potrzebny był kod, napiszcie pokaże. Edytowane 26 Maja 2010 przez Puchacz1 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 27 Maja 2010 Zgłoś Opublikowano 27 Maja 2010 0. Sposób wyświetlania błędów jest specyficzny dla Krasnal Serv - zapewne jest to wina ustawień lub wersji PHP. Rzuciłem na szybko okiem do Sieci, ale nie znalazłem sposobu na przestawienie tego. Poszukaj/popytaj na stronie wsparcia Krasnala. 1. Pokaż kod. Przy odświeżeniu strony zapewne masz pytanie, czy przesłać dane jeszcze raz. Takich stron nie powinno się odświeżać.Możesz zablokować kolejny zapis przez cookies lub sesję. 2. Pokaż kod. Poczytaj: PHP - Wikibooks, biblioteka wolnych podręczników Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
m4r Opublikowano 27 Maja 2010 Zgłoś Opublikowano 27 Maja 2010 Ad. 1. {// otwarcie plikuif(zapis do pliku zakończony sukcesem) header('Location: http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']); exit;// wyświetlenie zawartości pliku}jak to mniej-więcej działa- zapisujesz przesłane dane do pliku, po zapisaniu skrypt wywołuje sam siebie jeszcze raz, ale już bez przesłania zmiennych _POST, _GET, _FILES (czy co tam jeszcze jest), co przy sprawdzaniu przesyłanych danych zablokuje ponowny zapis. Ad. 2. Pokaż kod. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Puchacz1 Opublikowano 28 Maja 2010 Zgłoś Opublikowano 28 Maja 2010 (edytowane) dzięki Panowie, rzeczywiście cookie rozwiązują sprawę :). pytanie: mam tablicę w której jest kilka wartości/stringów. Czy da się wyszukać która to tablica (np. $tablica[10]) znając jej wartość czy string?. przykład: ... tablica[?] = gryzon ... jak zabezpieczyć formularz przed wpisywaniem kodu, np php. Powinienem blokować wszystko po <?php. Wyrażenia regularne?, split() i zapisywanie bez <?php czy może jeszcze coś innego?. Edytowane 28 Maja 2010 przez Puchacz1 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 28 Maja 2010 Zgłoś Opublikowano 28 Maja 2010 Wyobraź sobie, że masz 10 szuflad. Do jednej włożyłeś ładowarkę i teraz jej potrzebujesz? Jak ją odnajdziesz? Oczywiście musisz sprawdzić każdą szufladę. Podobnie jest w programowaniu. Nie ma magicznych sposobów - niezależnie od tego, czy skorzystasz z gotowej funkcji, czy sam taką napiszesz, sprowadzi się to do sprawdzenia każdego elementu z osobna. Można użyć for (z exit), można użyć while lub do-while. Najprościej jest chyba tak: $i=0;while($tablica[$i]!='gryzon') { $i++; }if ($i!=0) echo 'szukane slowno znaduje się pod indeksem: '.$i;else echo 'szukane slowo nie zostalo odnalezione w tablicy'; Przypominam o linku z poprzedniego postu - jest tam wiele informacji, które przydają się w walce z kodem PHP. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Puchacz1 Opublikowano 28 Maja 2010 Zgłoś Opublikowano 28 Maja 2010 wiem, pamiętam o tym linku :). Jest bardzo przydatny jednak czasem czegoś po prostu nie potrafię znaleźć. Co do tych formularzy, czy takie wprowadzone dane są w stanie zaszkodzić stronie?. Na obecnym poziomie wiedzy nie jestem w stanie sobie tego wyobrazić. Gdy próbowałem w ten sposób wywołać echo nic się nie wyświetliło aczkolwiek była ona najpierw zapisana w pliku, następnie odczytana. Wygląda więc na to, że serwer jej nie wziął pod uwagę. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
m4r Opublikowano 31 Maja 2010 Zgłoś Opublikowano 31 Maja 2010 pytanie: mam tablicę w której jest kilka wartości/stringów. Czy da się wyszukać która to tablica (np. $tablica[10]) znając jej wartość czy string?. przykład: ... tablica[?] = gryzon ... PHP: array_search - Manual //kod pisany z głowy i całkowicie nie testowany$in = array_search('gryzon',$tablica);echo "indeks: ".( $in !== false ? $in : 'nie znaleziony'); ULLISSES, Po co jechać z Krakowa do Warszawy przez Moskwę? Poza tym... "if ($i!=0)" << a jak szukane będzie pod zerowym indeksem? jak zabezpieczyć formularz przed wpisywaniem kodu, np php. Powinienem blokować wszystko po <?php. Wyrażenia regularne?, split() i zapisywanie bez <?php czy może jeszcze coś innego?. strip_tags, htmlentities, stripslashes/addslashes, do sql mysql_real_escape_string. Poczytaj trochę o tych funkcjach i im podobnych. Regexpy zwykło się używać do filtrowania konkretnych danych- czy coś jest mailem, url-em, kodem pocztowym, peselem, nipem, datą urodzenia, walutą, etc. Można ofc filtrować całe stringi, ale przy istniejących już funkcjach stosuje się to raczej jako dodatkowy "ficzer", jeżeli chcesz np. wyłuskać jakiś konkretny atrybut w tagu (np. dodawać/wywalać/podmieniać rel="" w linku, ścieżki obrazków, etc.). Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 31 Maja 2010 Zgłoś Opublikowano 31 Maja 2010 m4r: Dzięki za poprawki - pisałem na szybko i wyszło tak jak wyszło ;] Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Puchacz1 Opublikowano 15 Czerwca 2010 Zgłoś Opublikowano 15 Czerwca 2010 (edytowane) zaczynam uczyć się mysqla, mam więc w bazie różne dane takie jak nick, hasło itd.. próbowałem napisać sobie skrypt który wyświetli je ale coś mi nie wychodzi. Właściwie to nic się nie wyświetla $open = mysql_connect('127.0.0.1', 'root'); $get_nick = 'SELECT nick FROM nba WHERE nick = Puchacz'; $get_passwd = 'SELECT haslo FROM nba WHERE haslo = qwerty'; $get1 = mysql_query($get_nick); $get2 = mysql_query($get_passwd); mysql_close($open); echo($get1.$get2); Edytowane 15 Czerwca 2010 przez Puchacz1 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
luk1999 Opublikowano 15 Czerwca 2010 Zgłoś Opublikowano 15 Czerwca 2010 (edytowane) Stringi należy podawać w cudzysłowie: $get_nick = 'SELECT nick FROM nba WHERE nick = "Puchacz"'; $get_passwd = 'SELECT haslo FROM nba WHERE haslo = "qwerty"'; Edytowane 15 Czerwca 2010 przez luk1999 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
szkkam Opublikowano 15 Czerwca 2010 Zgłoś Opublikowano 15 Czerwca 2010 $get_nick = 'SELECT nick FROM nba WHERE nick = Puchacz'; $get_passwd = 'SELECT haslo FROM nba WHERE haslo = qwerty';Takie zapytania są trochę bez sensu bo skoro znasz nick/hasło i podajesz je w klauzuli WHERE to po co je wykonywać? :) W takich zapytaniach zwykle podaje się warunek na ID użytkownika. A żeby działało to tak jak kolega wyżej napisał. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Puchacz1 Opublikowano 15 Czerwca 2010 Zgłoś Opublikowano 15 Czerwca 2010 (edytowane) nie działa mimo tych zmian. ale jak mam porównać login i hasło po id?. Musiałbym kazać użytkownikowi wpisywać je ręcznie... bazę tworze tak: $haslo = MD5('qwerty'); $connect = mysql_connect('127.0.0.1', 'root'); $dbname = 'users'; $query ='CREATE DATABASE '.$dbname; mysql_query($query); mysql_select_db('users'); $zapytanie = 'CREATE TABLE nba (id int NOT NULL AUTO_INCREMENT, nick char(30), imie char(30), nazwisko char(15), email char(25), haslo char(30), PRIMARY KEY(id))'; $zapytanie2 = "INSERT INTO `nba` (`id`, `nick`, `imie`, `nazwisko`, `email`, `haslo`) VALUES ('','Puchacz', 'Jakub', 'Puchała', 'niemam3@interia.pl', '".$haslo."')"; mysql_query($zapytanie); mysql_query($zapytanie2); mysql_close($connect); Edytowane 15 Czerwca 2010 przez Puchacz1 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
borsuczy_król Opublikowano 15 Czerwca 2010 Zgłoś Opublikowano 15 Czerwca 2010 (edytowane) Musisz użyć funkcji mysql_fetch_array albo mysql_fetch_row... mysql_query nie zwraca tego co oczekujesz a jedynie identyfikator wyniku do dalszego wykorzystania. Korzystasz w ogóle z manuala? Wszystko tam jest ładnie opisane. W Twoim przypadku byłoby jakoś tak: $open = mysql_connect('127.0.0.1', 'root');$get_nick = "SELECT nick FROM nba WHERE nick = 'Puchacz'"; $get_passwd = "SELECT haslo FROM nba WHERE haslo = 'qwerty'"; $result = mysql_query($get_nick);$get1 = $mysql_fetch_row($result);$result = mysql_query($get_passwd);$get2 = $mysql_fetch_row($result);mysql_close($open);echo($get1[0].$get2[0]); Edytowane 15 Czerwca 2010 przez borsuczy_król Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 15 Czerwca 2010 Zgłoś Opublikowano 15 Czerwca 2010 I jeszcze jeden drobiazg. Jeśli: $haslo = MD5('qwerty');To nie znajdziesz go zapytaniem: $get_passwd = 'SELECT haslo FROM nba WHERE haslo = "qwerty"'; Natomiast zamiast manuala, polecam tą e-książkę: PHP/Wstęp do baz danych - Wikibooks, biblioteka wolnych podręczników Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
m4r Opublikowano 16 Czerwca 2010 Zgłoś Opublikowano 16 Czerwca 2010 Sprawa pierwsza... Do testowania zapytań dobra jest konsola mysql (cmd, potem przejdź do katalogu mysql/bin, odpal sql -{tutaj dodatkowe opcje- login usera mysql, hasło, etc}), ewentualnie phpmyadmin. Zapytania w php wstawiaj już sprawdzone i najlepiej od razu podmieniaj sobie potrzebne wartości zmiennymi. Sprawa druga... Po co drzeć osobno nick, a osobno hasło, skoro rozumiem, że mają dotyczyć tej samej osoby (a więc tego samego wiersza tabeli w sql)? $sql = "SELECT `nick`, `haslo` FROM `nba` WHERE `nick` = 'nick' AND `haslo` = 'haslo'";Sprawa trzecia, na przyszłość... Robienie takiego selecta, jak podałem odrobinę wyżej jest bezsensowne. Why? Jeżeli już sprawdzisz, czy istnieje w bazie osoba z takim nickiem i hasłem, to przydałoby się w większości przypadków pobrać od razu dodatkowe dane (id, jakiś adres, etc...). W Twoim przypadku będziesz musiał wrzucić kolejne zapytanie, więc bez modów będziesz miał już ich trzy (select nick, select pass, select inne duperele), a można to załatwić ślicznie jednym: $sql = "SELECT `nick`, `haslo`,{tutaj jakieś inne potrzebne kolumny z tabeli} FROM `nba` WHERE...W wersji ultimate (:lol:) możesz nawet zrobić "SELECT * FROM...", o joinach i im podobnych nie wspominam. I jeszcze jeden drobiazg. Jeśli: $haslo = MD5('qwerty');To nie znajdziesz go zapytaniem: $get_passwd = 'SELECT haslo FROM nba WHERE haslo = "qwerty"'; $get_passwd = 'SELECT haslo FROM nba WHERE haslo = "'.md5('qwerty').'"';Btw, wolę odwrotnie cudzysłowy: $get_passwd = "SELECT `haslo` FROM `nba` WHERE `haslo` = 'qwerty'";...bo można bez zbędnych kombinacji wstawiać pehapowe zmienne, albo wręcz pojechać z takim kwiatkiem (też się czasem przydaje): $get_passwd = "SELECT `haslo` FROM `nba` WHERE `haslo` = '{$_POST['haslo']}'"; (...) Zapomniałeś cudzysłowi przy stringach. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...