maviozo [ man with a movie camera ]
Kącik Webmasterski (HTML, JavaScript, PHP i inne) [cz.39]
Wstęp:
Kącik ten powstał w celu gromadzenia informacji, zapytań, porad, a także jako miejsce publikacji i oceny witryn stworzonych przez forumowiczów GOLa. Wszystko powinno znajdować się w jednym miejscu, aby można było łatwiej i przyjemniej odnaleźć informacje związane z tworzeniem stron www. Liczymy na to, że kącik będzie bardzo często odwiedzany :)
-----------------------------------------------------------------------------------------------------------------
NARZĘDZIA WEBMASTERSKIE:
Edytory graficzne - WYSIWYG:
- Macromedia Dreamwaver MX -
- Amaya -
- Adobe GoLive -
- Microsoft FrontPage
- Microsoft FrontPage Express
- Pajaczek
- CoffeeCup Free
- Free HTML 6.0
- 1st page 2000
Edytory tekstowe:
- Macromedia Dreamwaver MX - www.macromedia.com
- Notatnik
- Webmajster
- Pajaczek pro
- Zajaczek
- HotDog Pro
- ezHTML
- NoteTab Light
- Website Pro
- Notepad ++
Programy do obróbki grafiki i animacji:
- Flash MX
- 3D Flash Animator
- Ulead GIF Animator
- Adobe PhotoShop
- Paint Shop Pro
- GIMP
- Corel Draw
Narzędzia do publikacji stron na serwerach:
- CuteFTP
- Total Commander
- WS_FTP
Spis darmowych serwerów
-
Najlepsze kursy HTML
-
-
Odnośnie PHP
-
BŁĘDY W TWORZENIU STRON - koniecznie przeczytaj!
-
-
Ciekawe strony dla webmasterów:
-
-
-
-
-
-
-
-
-
Za darmo dla webmasterów:
-
-
-
-
Nasze strony:
wi3dzmin
-
hotDog
-
SULIK
-
Drak`kan
-
Bri (hmtlowa podstawówka :)
-
Slowik
- https://fotografia.gry-online.pl/
================================
Archwium Kącika:
================================
cz. 01: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=282993
cz. 01: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=1724087 REIKARNACJA
cz. 02: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=293434
cz. 03: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=561138
cz. 04: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=681039
cz. 05: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=709817
cz. 06: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=778829
cz. 07: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=860865
cz. 08: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=987171
cz. 09: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=1348213
cz. 10: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=1966148
cz. 11: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=2031618
cz. 12: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=2059468
cz. 13: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=2160961
cz. 14: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=2219048
cz. 15: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=2305650
cz. 16: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=2374934
cz. 17: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=2404162
cz. 18: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=2479809
cz. 19: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=2531725
cz. 20: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=2661899
cz. 21: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=2739264
cz. 22: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=2940573
cz. 23: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=3283908
cz. 24: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=3713891
cz. 25: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=4000035
cz. 26: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=4101026
cz. 27: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=4177593
cz. 28: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=4379688
cz. 29: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=4722727
cz. 30: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=4979111
cz. 31: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=5179288
cz. 32: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=5566907
cz. 33: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=5880745
cz. 34: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=6280629
cz. 35: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=6280629
cz. 36: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=7016083
cz. 37: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=8042674
cz. 38: https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=9012594&N=1
maviozo [ man with a movie camera ]
Od razu pytanie:P
Po zalogowaniu na ftp mamy foldery:
/www
/1
/drugi
itd.
Po wpisaniu adresu 'wchodzi' bezpośrednio w folder /www/
Uruchomienie subdomeny ląduje w folderze /1
Mogę sobie dowolnie wskazywać subdomeny na foldery, ale TYLKO w takim zakresie (nie może być np. /www/1/
Subdomeny NIE widzą się nawzajem, zatem dokument w folderze /1/ nie będzie widział obrazków w /www
np:
<img src="../www/obrazek.jpg">
nie zadziała.
Zatem rozważam takie możliwości:
1) jeśli chcę wykorzystać te same obrazki na tych subdomenach powinienem je powielać dla każdej osobno
2) tworzę kolejną subdomenę, np. obrazki.maviozo.pl i wszystkie wspólne obrazki z tych subdomen linkuję bezpośrednio
3) tworzę w /www/ folder obrazki i ze wszystkich subdomen linkuję je na
W sumie "najładniej" wygląda 2 opcja;) ale jakie rozwiązanie "technicznie" i z profesjonalnego punktu widzenia jest najlepsze?
Regis [ ]
Obrazki nie będą się "widzieć" poprzez ścieżkę, ale (jak sam zauważyłeś) przez domenę - jak najbardziej. Zrób więc sobie subdomenę "obrazki.domena.pl" i tam wrzucaj obrazki - opcja druga jest zdecydowanie najbardziej 'estetyczna' - po prostu masz osobna subdomene na obrazki.
gromusek [ keep Your secrets ]
EDIT: juz nie wazne :)
Zapruder [ Terran Hate Machine ]
Tak ku przestrodze - jakby komuś kiedyś z jakichś niewiadomych przyczyn przyszło do głowy wykupienie hostingu w digitalart.pl - DON'T!
Mam własnie klienta, który ma u nich serwer i to co ta firma uskutecznia to jest jakaś paranoja. W zasadzie zerowy kontakt (wystarczy powiedziec, że po godzinie 15.00 skontaktować się nie można wcale), serwery ogołocone z praktycznie wszystkich funkcjonalności (choćby to, że nie można wrzucać swoich plików .htaccess...), jak już się uda do nich dodzwonić to siedzi tam ktoś kompletnie niekompetentny, odpowiedzi na maila wybitnie enigmatyczne i nic z nich nie wynika. I jakby tego było mało, uptime mają chyba max 90% : |
Osiwieje przez nich, jeszcze sie z tak beznadziejnym hostingiem nie spotkałem.
maviozo [ man with a movie camera ]
Szybkie pytanie - czy da radę ustawić dla każdego formularza, który ma być następny po wciśnięciu taba, czy decyduje o tym tylko i wyłącznie kolejność w źródle?
SPMKSJ [ Konsul ]
dla każdego pola formularza miałeś na myśli ? Da się. To jest własność, tylko nie pamiętam jak się nazywa.
Zapruder [ Terran Hate Machine ]
Jest niby acceskey, ale to tylko można powiązać jakiś klawisz z danym polem formularza. Ale jak to zrobić po kolei z tabem to nie wiem
edit:
w3schools mówi, że tabindex : P
Tomal_P [ Legend ]
tabindex - służy do ustalania kolejności poszczególnych kontrolek w formularzu
np. <input type="text" name="imie" tabindex="1"> i tak dalej...
mav --> chyba o to Ci chodziło?
maviozo [ man with a movie camera ]
Kolejne pytanie:>
Pytanie z kategorii google:
Dla google.analitycs osobno zdefiniować stronę i poddomeny czy wszystko do kupy?
To samo tyczy się pozycjonowania/wysyłania mapy strony - czy subdomeny złapie sam?
Tzn. w indeksie google jest strona
abc.pl
czy strona xxx.abc.pl też automatycznie jest liczona, czy trzeba ją osobno?
Zapruder [ Terran Hate Machine ]
+
Noras1991 [ Wujek Norek ]
o takie tematy to lubię ;P
ale dzisiaj zbyt mało czasu mam, żeby je czytać:D
Edytory tekstowe:
nie widziałem na liście programu kED - jest małych rozmiarów, ładnie zaznacza tekst,
nie dodaje niepotrzebnych i niechcianych pierdół :P tzn nie zmienia kodu ;p
pao13(grecja) [ Silkroad Fan ]
Mam do was pytanie. Piszę skrypt do typowania zakładów sportowych i mam pewien problem. Dodaję spotkanie do bazy danych z danymi jak: godzina,data, gospodarz, gosc, liga, dyscyplina i kursy (kurs na gospodarza, kurs na remis, kurs na gościa.) Następnie pobieram te dane i wyświetlam na stronie. Problem polega na tym, że chce je wyświetlić jak na podanej stronie. W taki sposób aby użytkownik mógł obstawić pare zakładów. Klika obok spotkania np. na remis i dodaje typ.Domyślam się, że jest to java. Gdzie mogę znaleść rozwiązanie na mój problem?
yo dawg [ 1979 ]
pao, wrzuć jakiś obrazek, bo szczerze nie bardzo rozumiem..
yo dawg [ 1979 ]
Istnieje, może stronka, która zasymuluje inne przeglądarki i pokaże jak strona wyświetli się na innych?
yo dawg [ 1979 ]
Koniec edycji.
Znalazłem taką oto stronkę, odnośnie problemu z posta wyżej. Wrzucam bo może komuś się przyda. Znalazłem jeszcze jakąś tego typu stronę, ale nie znam się na niemieckim :<
Może warto byłoby ją wrzucić do wstępniaka w nowej części? I np. css zen garden?
Zapruder [ Terran Hate Machine ]
sprawdź sobie to
https://browserlab.adobe.com/index.html
nie trzeba tyle czekać na wyniki (na browsershots mi kiedys 5 godzin policzył, dziękuje :) )
pao13(grecja) [ Silkroad Fan ]
yo dawg --- > na tej stronie co podałem w poprzednim poście na środku jest tableka najpopularniejsze zakłady. W tabelce masz spotkania, a obok kursy na 1,X,2. Po najechaniu na dany kurs klikasz i po prawej stronie w tabelce jest dodany twój wybór. Jak to zrobić? Gdzie szukać informacji albo pod jaką nazwą szukać tego w google?
yo dawg [ 1979 ]
To zwykłe przekazywanie danych metodą post za pomocą phpa.
Gdyby było to dynamiczne to w grę wchodziłaby np. technologia AJAX lub js, ale jak patrzę, to tylko php.
Poszukaj w googlach "formularze php". Ale tradycyjnie, mogę się mylić ;)
gromusek [ keep Your secrets ]
pao13(grecja) to o czym mowisz to proste PHP, skonstruowanie takiego czegos nie jest żadnym problem :)
Lutz [ Legend ]
potrzebuje rzecz w ASP, pewnie do wieczora dojde jak zrobic to sam, moze jednak ktos chociaz poda mi jakies namiary na bardziej kompletne info w necie ;)
Mianowicie:
Pojedyncza stronka asp, w niej osadzona aplikacja flash pobierajaca plik(i) xml, z tej aplikacji wysylam w POST dwie zmienne, nazwe pliku oraz zmodyfikowany ciag xml, plik jest wysylany do tej samej strony, zapisywany w tle po czym aplikacja flash odpalana jest ponownie, juz z nowymi parametrami xml.
Potrzebuje funkcje do zapisu ciagu xml do pliku, wsio :) osadzanie flasha powinienem znalezc.
maviozo [ man with a movie camera ]
Jest jakiś fix do opacity w IE?
Jak coś wygaszam (i potem np. przywracam do 1) to znika antyaliasing. To przypadłość IE, czy można to rozwiązać? W Firefoxie nie ma tego problemu
Przykład------->
Zapruder [ Terran Hate Machine ]
Jest pare rozwiązań, ja zawsze korzystałem z prostego wywalenia filter, np.
$('#jakisDiv').fadeIn(function()
if ($.browser.msie)
this.style.removeAttribute('filter');
);
Najlepiej to zrobić jako callback po fadein, jak już animacja się skończy. Nie jest to doskonałe, ale tekst wygląda wtedy troche lepiej niż bez tego. Jako takiego kompletnego rozwiązania chyba jeszcze nie ma.
+
Troche bardziej kompleksowe, ale też nie wywalające tego do końca - bo póki co się nie da po prostu.
Lutz [ Legend ]
Dosc powazna sprawa ;)
Czy jest ktos w stanie przetlumaczyc mi ten kod, na odpowiednik w ASP
<?php
$xmlcontent = $_POST['XMLfile'];
$filename = $_POST['XMLname'];
if (isset($_POST['XMLfile']))
$myFile = "xml/".$filename;
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh, stripslashes($xmlcontent));
fclose($fh);
?>
Lutz [ Legend ]
troche niegrzecznie tak upowac, ale jakby ktos potrafil przerobic kod z [24] na dzialajacy kod w asp
vbylbym, cholernie wdzieczny. A dla osob z paypalem nawet wymiernie wdzieczny:)
zdaje sobie sprawe ze to 5 minut roboty dla osoby znajacej sie na rzeczy, nie mam czasu na to zeby sie bawic w szukanie, potrzebuje dzialajacej, pewnej aplikacji :)
Lutz [ Legend ]
3 godziny meczenia sie ze zmiennymi serwera i glupimi bledami, ale jest !
<%
dim XMLfile
dim XMLname
dim RootName
XMLfile=Request.Form("XMLfile")
XMLname=Request.Form("XMLname")
RootName = Server.MapPath(".")
If XMLfile<>"" Then
XMLname=(RootName+"/xml/"+XMLname)
set xmlDoc=Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.loadXML(XMLfile)
xmlDoc.Save(XMLname)
End If
%>
yo dawg [ 1979 ]
Jak w cssie zmienić położenie wpisywanego w textboxa tekstu? Chciałbym umiejscowić go kilka pikseli niżej od górnej krawędzi obrazka, który jest tłem textboxa.
maviozo [ man with a movie camera ]
padding, podejrzewam, na przykład padding-top.
yo dawg [ 1979 ]
Faktycznie, nie wiem co mi się ubzdurało, że próbowałem to margin-top-em załatwić. Dzięki!
yo dawg [ 1979 ]
Zagadka super trudna: Efekt przezroczystego overliba. Jak?
maviozo [ man with a movie camera ]
Jquery i:
$(document).ready(function()
$("#overlib").css(opacity:0.4)
);
IE miewa problemy z antyaliasingiem i przezroczystością obrazków png.
yo dawg [ 1979 ]
A bez dżej-kłery?
Zapruder [ Terran Hate Machine ]
Nie mam pojęcia co to jest overlib, ale jak bez jquery chcesz przezroczystość to css:
#id
filter: alpha(opacity=70);
-khtml-opacity: 0.7;
-moz-opacity: 0.7;
opacity: .7;
^tak powinno pod kazda przegladarka dzialac
yo dawg [ 1979 ]
Okej, dzięki.
Teraz z innej beczki - czemu Opera ma problem z nakładaniem na siebie dwóch divów? Dałem 'dolnemu' z-index:1;, a drugiemu, 'wyższemu' z-index:2; i na FF działa poprawnie, na najnowszym IE też, ale Opera ma z tym problem. Jak to naprawić?
yo dawg [ 1979 ]
Hobra, już działa ;)
maviozo [ man with a movie camera ]
jquery.
Założenie:
$(".klasa img:first").addClass("pierwszy");
<div class=klasa>
<img ...>
<img ...>
</div>
<div class=klasa>
<img ...>
<img ...>
</div>
Powinno pierwszemu obrazkowi w każdym obiekcie o klasie "klasa" nadać klasę "pierwszy".
Działa tylko dla pierwszego obiektu "klasa". Co robię nie tak?
Zapruder [ Terran Hate Machine ]
$(".klasa img:first-child").addClass("pierwszy");
maviozo [ man with a movie camera ]
Dzięki, działa:)
Jeszcze odnośnie problemu jaki poruszyłem w poście 22, o ustawianiu opacity - efekt był też widoczny przy wygaszonym, nie tylko przywróconym a także w trakcie animowania świrował. Wymyśliłem "obejście", które w pełni mi wystarcza - wystarczyło dociągnąć bibliotekę do animowania kolorów i po prostu zanimować kolor czcionki zamiast przezroczystość.
Piszę to tylko tak, jakby ktoś jeszcze miał z tym problem. Na IE działa elegancko, anty aliasing jest i na przyciemnionym i przywróconym i w trakcie, bez potrzeby usuwania filtrów.
maviozo [ man with a movie camera ]
Hehe, jedno proste pytanie. Czy żeby umieścić linki, jak np. na demotach, z cyklu "umieść na śledziku, facebooku" itp. trzeba mieć jakieś "pozwolenia" od w/w portali, czy hulaj dusza, piekła nie ma?
Regis [ ]
Zależy - Facebook udostępnia API, które można swobodnie wykorzystać. Śledzik chyba w swoim czasie był podatny na CSRF i można było normalnie "zapostować" w odpowiednie miejsce to co chciałeś umieścić na Śledziku.
yo dawg [ 1979 ]
Tak swoją drogą te 'Dodaj do...' stały się bardzo popularne. Nawet onet to wtrynił.
Zapruder [ Terran Hate Machine ]
To w sumie srogi booster poziomu SEO strony, zwlaszcza jakiejś z newsami, etc. więc nie ma co sie dziwić :)
yo dawg [ 1979 ]
Czy na pewno? Czy nie wystarczy jak sobie pierdyknę w profilu linka do swojej strony właśnie w ramach pozycjonowanie? Koniecznie trzeba to dodawać na te szczupaki?
grompablo [ Ocaleniec ]
Zrobiłem stronę
www.andrzejkania.eu
Chciałbym poprawić w niej pozycjonowanie, co radzicie
gromusek [ keep Your secrets ]
grompablo >>>
Zapruder [ Terran Hate Machine ]
Ściągnij sobie dodatek SenSEO do firebuga, tam masz wszystko ładnie opisane, dodatek sprawdza po kolei różne rzeczy na twojej stronie pod kątem danego słowa kluczowego, ocenia - i podaje sugestie.
maviozo [ man with a movie camera ]
Jakby coś trzeba pozmieniać we wstępniaku, to można, chwilowo mam abo:P
Toshi_ [ Got sarcasm? ]
Sprawa może deczko banalna, ale nie mogę tego wykombinować:
czy da się ustalić wymiary podstrony na sztywno, żeby wszelkie linki, jakie mogą do niej prowadzić, otwierały ją w nowym oknie o odgórnie ustalonych rozmiarach? Coś w stylu pop-upa.
Można oczywiście zastosować prosty scrypt JS i dołączać go do "onclick" każdego linka, ale załóżmy, że linków mam tysiące i taka robota byłaby kapkę bez sensu.
Regis [ ]
Można oczywiście zastosować prosty scrypt JS i dołączać go do "onclick" każdego linka, ale załóżmy, że linków mam tysiące i taka robota byłaby kapkę bez sensu.
jQuery zrobi to dla Ciebie w jednej linijce kodu ;)
maviozo [ man with a movie camera ]
jquery:
$(".klasa").click(function()window.open("poszukaj w necie funkcji window.open:P"))
ta-daaa
lub gdy wszystkie linki są w jednym nadrzędnym obiekcie:
$("#linki a"). ...
przynajmniej przyklejanie onclicków to rozwiązuje
Toshi_ [ Got sarcasm? ]
Dobra, tylko że moja aplikacja jest na Ext (do jednej głupiej funkcji jQuery chyba nie będę dorzucał...) a do strony "matki" nie mam dostępu, bo prowadzący przedmiot sam sobie nią zarządza i powrzuca tam linki do naszych projektów.
Chciałbym, żeby po dodaniu zwykłego linka moja strona otworzyła się jak pop-up. W oknie na pełnym ekranie wygląda to tak sobie, bo to jest tylko nagłówek i tabelka z rozwijalnym drzewkiem ==>>>
Da się jakoś ustalić, żeby strona sama sobie "narzucała" określony rozmiar (dopasowany do zawartości)?
yo dawg [ 1979 ]
css i
width:auto;
height;auto;
?
doctor_greenthumb [ Pretorianin ]
Witam.
Mam mały problem, a moje umiejętności są niestety dość ułomne.
Na stronie jest umieszczony obraz, który zajmuje praktycznie cały jej obszar. Przy pomocy <area shape = "poly" . . . > jest tam wydzielone kilka linków.
Chodzi o to, że jak wskaźnik znajdzie się w obszarze tego "poly", załaduje się mały obrazek, który _przykryje_ ten obszar. Efekt ma być mniej więcej taki jak "rollover" w javascript tylko,
że ja nie chcę zamiany obrazków. Jak przeglądam materiały w sieci to wszędzie są podmiany obrazków a mi chodzi o coś nieco innego. Docelowo ten obrazek to png z ustawioną "alfą" więc przykryłby on ładnie ten obszar "poly".
Będę wdzięczny za wszelką pomoc.
maczu [ Generaďż˝ ]
1. nie wiem czy dobrze rozumiem
2. piszę z pamięci, więc musisz to sprawdzić
do tego użyłbym jquery addclass
$('#id_obrazka').rollover().addClass('klasa_z_opacity');
$('#id_obrazka').rollout().removeClass('klasa_z_opacity');
doctor_greenthumb [ Pretorianin ]
Dzięki za pomysł, nie miałem jednak czasu i użyłem tradycyjnego "rollover" + css i efekt jest zadowalający, niestety wskaźnik reaguje też trochę na przezroczysty obszar.
Widzę, że wątek jest trochę mało uczęszczany.
maczu [ Generaďż˝ ]
hmm.. myślę że z uwagi na tematykę. masę info można znaleźć w sieci, dużo można sprawdzić genialnym firebugiem, ewentualnie jak te metody nie działają, można zapytać na forum. A jeżeli chodzi o poważniejsze rzeczy to łatwiej zapytać na jakimś forum programistycznym stricte związanym z językiem. Takie mam przemyślenia na ten temat,.. :)
maviozo [ man with a movie camera ]
Czy jest jakiś sposób na osadzenie map google czy innego cuda, na zasadzie, że wpisuję tylko miasto, a wywołanie samo oblicza trasę? Dokładnie chodzi mi o to, że klient wpisuje na stronie swoje miasto, a skrypt sam wyliczy ile km mam do niego dojazdu.
***Half-Life*** [ Generaďż˝ ]
Mam taki problem: czemu ikonki (są linkami do zewnętrznych stron www) na stronie głównej jak się na którąś najedzie myszką lub na wszystkie to tak się te ikonki trzęsą? Strona główna jest tu
Proszę o pomoc czy da się tak zrobić i jak to zrobić by tak się nie trzęsły?
maviozo [ man with a movie camera ]
Po najechaniu na każdą po prostu dodaje się border i "siłowo rozsuwa" pozostałe elementy. Musisz albo usunąć border z klasy hover, lub dodać border tym linkom na stałe (np. jakiś zbliżony kolorem do tła). Wtedy będzie się tylko zmieniał kolor, a nie rozmiar.
maczu [ Generaďż˝ ]
dość proste pewnie:
mam takiego diva, którego rozmiary są różne w różnych wypadkach. ale wewnątrz niego jest umieszczony następny div, i chciałbym, żeby jego położenie wedle rodzica było stałe bez względu na rozmiary i zawartość rodzica, np. w prawym dolnym rogu, 10 px od krawędzi. position absolute?
@maviozo / ***Half-Life***
a osadzenie w jakimś divie i danie margin lub padding coś dadzą?
Zapruder [ Terran Hate Machine ]
maczu:
parent - position relative
div ktory chcesz pozycjonować - position absolute, bottom: 10px, right :10px
maczu [ Generaďż˝ ]
@zapruder
dzięki
@***Half-Life***
ja bym dał jeszcze inaczej. Jeżeli chcesz wyróżnić obrazek jako button po najechaniu na niego kursorem zrób tak:
jako tło ustawiasz obrazek typu
i dajesz coś takiego:
a ‹
background-image: url(
backgroupd-position: -100px 0;
›
a:hover ‹
background-position: 0px 0px;
›
wtedy po najechaniu przesunie ci się background. nie wiem tylko czy odpowiednio podałem X i Y, musisz potestować
Tomal_P [ Legend ]
Jaki polecacie darmowy hosting??
Teraz mam na friko.pl i wszystko do tej pory było OK. Ale dzisiaj zacząłem w mysql robić i wkurza mnie bo jakoś strasznie wolno mi phpMyAdmin działa. Żeby prostą bazę danych utworzyć to się trochę schodzi.
Tomal_P [ Legend ]
Znalazłem taki ciekawy link -->
Może się komuś coś przyda :)
yo dawg [ 1979 ]
Tomal, z darmowych nie polecam żadnego. Najtańsze płatne to kwestia paru zł za miesiąc.
Regis [ ]
Szkoda nerwów na darmowy. Za 40 zł rocznie można już mieć coś niezłego.
A co do bazy - nie możesz jej utworzyć u siebie (choćby w phpMyAdminie na przykład) i przerzucić samego dumpa?
Tomal_P [ Legend ]
Regis --> A nie próbowałem tak, ale na szczęście jakoś udało mi się stworzyć. Rano po prostu lepiej działa na to wychodzi.
SPMKSJ [ Konsul ]
Opuszczam dzisiaj jeden z swoich płatnych serwerów na linuxpl.com. Po wyczyszczeniu przestrzeni dysku (a zrobię to dzisiaj) jestem w stanie odstąpić serwer komukolwiek.
Serwer w1gb wykupiony jest do któregoś czerwca. Podpięta jest pod niego domena
majcher.ayz.pl
Chętnych proszę o kontakt - możecie pisać w tym wątku, albo prywatnie.
mr00TshnY [ Pretorianin ]
Cześć! Mam pewien problem.
Mam plik .ini w którym jest około 70 linijek. W 1 linijce jest hasło i wyglada to tak
1. Haslo=jakieshaslo.
Używam file i poźniej explode("=", $file), $file[0];. Dlaczego jak jest tylko jedna linijka, to działa, a jak jest więcej, to już nie? D:
maviozo [ man with a movie camera ]
Zależy jak pobierasz plik:) jeśli przez np. file() to masz array i każdy kolejny jest pojedynczą linijką, wtedy potrzebujesz pętli, która leci przez każdą linię.
Ale to dość głupie rozwiązanie..
Regis [ ]
Olaboga, po jaką cholerę wynajdywać koło na nowo? Nie łaska użyć wbudowanych funkcji do obsługi plików ini?
mr00TshnY [ Pretorianin ]
A o czym dokładniej mówisz? Podziel się. :)
yo dawg [ 1979 ]
parse_ini_file()
I życie staje się prostsze :)
SPMKSJ, możesz podrzucić mi passy do tego konta? Z chęcią bym je przejął.
SPMKSJ [ Konsul ]
you dawg <--- Ok. Dzisiaj ok 23:00 wyślę Ci namiary.
mr00TshnY [ Pretorianin ]
Ok, dzięki. : )
Mam jeszcze jedno pytanie. Jak rozumiem prawie wszystko z PHP tak nie rozumiem sesji. Mam skrypt logowania i chcę dopisać do niego wyświetlanie odpowiednich tekstów gdy się kliknie w link z menu. Chciałem to zrobić w ten sposób:
if($_GET['page'] == "info") include("info.php"); ale przy kliknięciu na odnośnik, pokazuje mi się strona logowania. Jak temu zaradzić? W sesjach jestem zielony. :(
yo dawg [ 1979 ]
Bo logowanie bez oparcia o ciastka/sesje, tylko działające na zasadzie jeśli hasło = haslo to zaloguj i pokaz panel to takie logowanie chwilowe. Skrypt i strona muszą pamiętać, że ktoś się zalogował. Poczytaj o sesjach :)
mr00TshnY [ Pretorianin ]
A mógłbyś dać jakiś dobry tekst o sesjach? Bo czytałem w swojej książce ale tam jest tylko tak ogólnie i albo jestem ślepy, albo nie ma porad dla osób z problemami z sesjami takimi jak ja. :P
SPMKSJ [ Konsul ]
yo dawg <- nie masz żadnego komunikatora w opisie. Skontaktuj się ze mną na gg, bądź mailowo (na mojej stronie znajdziesz maila)
yo dawg [ 1979 ]
SPMKSJ, zostawiłem info na gadaczu.
mroczny, odeślę Cię tam gdzie mnie swojego czasu każdy odsyłał, czyli do manuala na ;)
Ew. do googli "php obsługa sesji"
mr00TshnY [ Pretorianin ]
Ok, niby mam już wszystko i sesje działają, ale nadal nie rozumiem ich działania.
yo dawg jesteś czasem zwany Albatrosem? :>
yo dawg [ 1979 ]
Albatros to mój ziom od 'baldurów' z Poznania, którego znam osobiście :-)
o sesjach napiszę Ci szerzej jutro (darmowa lekcja) ale jak będę w stanie ;x
yo dawg [ 1979 ]
Mam problem:
Chciałbym aby enter użyty w polu dodawania komentarza (wprowadzony z klawiatury, nie za pomocą <br>) automatycznie dla skryptu był odbierany właśnie jako <br>.
Czyli w textboxie wpisuję:
"tekst
tekst po 5 enterach"
A skrypt widzi to jako: tekst<br><br><br><br><br>tekst po 5 enterach
Regis [ ]
nl2br() ?
yo dawg [ 1979 ]
Jużem znalazł, ale dzięki.
To jeszcze jak zablokować userowi możliwość wpisania większej niż 2 ilości <br>?
maviozo [ man with a movie camera ]
To już musiałbyś dodatkowo i w php zrobić i jeszcze w javascriptcie (jeśli ma reagować w trakcie wpisywania)
yo dawg [ 1979 ]
Myslałem o filtrze w samym phpie, który podmieniałby więcej niż dwa <br>ki na "".
maviozo [ man with a movie camera ]
Na tej stronie:
pawhox zapostował niezłe rozwiązanie
int strnpos(string $haystack, mixed $needle, int $occurence);
imo - jeśli to działa, ustaw wyszukanie trzeciego <br> i jeśli jest $poz!=0 ( czy tam -1) wtedy od
$wyjscie=substr($wejscie,0,$poz).str_replace("<br>","",substr($wejscie,$poz,strlen($wejscie))
Mogłęm zamotać kolejności parametrów w funkcjach, ale jesteś kumaty, to załapiesz o co mi chodziło;)
Regis [ ]
O mamo, po co do tego jakieś skomplikowane algorytmy, skoro jest preg_replace()?
maviozo [ man with a movie camera ]
Mnie niestety wyrażenia reg. przerastają poza jakimiś bardzo podstawowymi opcjami:P a już ustawianie, żeby działało dopiero od trzeciego wystąpienia...
Regis [ ]
Ale warto je poznać, bo one naprawdę mają w sobie moc - coś jak jQuery ;) I wcale nie są skomplikowane - wystarczy nauczyć się je czytać i zapamiętać parę podstawowych funkcji. Potem w razie potrzeby łatwo można poszerzyć wiedzę. W tym wypadku, jeśli dobrze rozumiem problem, znajdujesz:
/(<br\/>)‹3,›/
i zamieniasz na:
<br/><br/>
Czyli: znajdź wszystkie te miejsca, gdzie masz conajmniej 3 <br/> i zamień na podwójny. Można to zrobić jeszcze bardziej elegancko, ale bez przesady, nie ma takiej potrzeby.
EDIT: oczywiście te małe nawiasy trójkątne to klamry, które GOL pomimo upływu lat dalej zamienia...
maviozo [ man with a movie camera ]
Regis -> jeśli ja dobrze zrozumiałem yodawga, to chodzi o to, że pierwsze dwa <br> przechodzą normalnie, dopiero każde kolejne ma być usuwane, a nie w przypadku, kiedy są trzy obok siebie.
yo dawg [ 1979 ]
Dokładnie, ma to zapobiec ew. próbom wpierniczenia dwustu <br> w komentarzu.
Boroova [ Gwiazdka ]
Yo dawg --> mam prosbe - wez podeslij mi na maila namiary na siebie, bo mam maly biznes do ciebie. Moj adres to BOROOVA[MALPA]O2[KROPKA]PL
Dzieki!
pao13(grecja) [ Silkroad Fan ]
Witam,
Czy istnieje możliwość zliczenia danych z X rzędu z danej tabeli. Powiedzmy, że mam tabele, a w tabeli rząd profit. Rząd ten zawiera dodatnie i ujemne dane. Jak to obliczyc wszystko ?
yasiu [ Legend ]
pao - widzialem plugina do jquery zajmującego się obslugą tabel który chyba coś takiego umożliwial. a nawet jak nie, to z odpowiednio nazwanymi komórkami, za pomocą js czy jquery sobie to spokojnie wyliczysz.
Dym14 [ C L I N I C ]
Witam. Jako że sprawa dotyczy instalacji PHP to może mi pomożecie bo nadal nie rozwiązałem tego problemu - https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=10048010
Muszę zainstalować właśnie PHP a nie używać gotowych serwerów typu krasnal itp. ponieważ potrzebuje stanowiska do stworzenia stronki na mysql a na tamtych serwerach w mysql mam odmowę dostępu nawet przy tworzeniu tabeli będąc zalogowanym na root'a :|
pao13(grecja) [ Silkroad Fan ]
Witam,
Czy istnieje możliwość zliczenia danych z X rzędu z danej tabeli. Powiedzmy, że mam tabele, a w tabeli rząd profit. Rząd ten zawiera dodatnie i ujemne dane. Jak to obliczyc wszystko ?
ROZWIAZANIE
$countq=mysql_query(" SELECT * FROM tabela");
while($row = mysql_fetch_array($countq))
‹
$sum=$sum+$row['nazwa rzedu']; ›
< = klamry
poltar [ Generaďż˝ ]
Po co tak komplikowac?
"Select sum(nazwa_pola) from tabela"
potem zczytujesz wartosc przez mysql_result'
pytanie tylko czy "tabela" z pytania to ta w bazie danych czy table z html jak sugeruje yasiu :)
yasiu [ Legend ]
no wychodzi na to, ze to jednak tabela sqlowa :D w takim razie Twoje rozwiazanie poltar jest najszybsze, ale i to ktore pao przedstawil dziala :)
maviozo [ man with a movie camera ]
pao->następnym razem napisz, że chodzi Ci o mysql, bo odpowiedź jasia dotyczyła zczytania z wygenerowanego kodu, który interpretuje <tr><td>, a to zupełnie coś innego.
dym->zainstaluj XAMPa i/lub mysql ze strony mysqla:) u mnie ten kombos śmiga elegancko.
poltar [ Generaďż˝ ]
yasiu - no tak, nie zauwazylem ze on sam sobie odpowiedzial. :)
Generalnie jestem zdania, ze jesli da sie cos zrobic jeszcze w silniku mysql (szczegolnie tak natywna czynnosc jak sum() ) to nie ma sensu przenosic tego na php. Kod czytelniejszy sie duzo staje a i zasobow juakby wiecej na podoredziu do dyspozycji :)
A gdyby juz sie tak upierac jednak przy petli while (bo na przyklad przewiduje ze bedzie w perzyslosci robil cos wiecej niz tylko sume tych wartosci) to z poprawek malych to
- nie czytac Select * tylko Select nazwa_pola - dobry i pozyteczny nawyk, szczegolnie jak sie chce jedno pole z tabeli ktore ma ich kilkadziesiat
- uzyc operatora +=, ale to juz tylko kosmetyka :)
Regis [ ]
[99] Przy rzeczach większych niż strona domowa rozwiązanie typu "działa" to za mało ;) Polecam zrobić sporego CMS'a (np. dla portalu ktory ma 0.5 mln unikalnych odslon miesiecznie + ze 20-30 tys. artykulow w bazie) i uzyc do pobierania artykulow SELECT *, a potem obrabiać stronicowanie w PHP za pomocą array_slice itp. ;) Jeśli admin odpowiedzialny za serwer, na którym stoi baza, was nie zabije, to zrobią to przełożeni albo użytkownicy.
SQL jest naprawdę potężny, tylko trzeba umieć coś więcej niż SELECT * i inne zapytania 'tego kalibru'. Absolutne minumum to znajomość LIMIT i OFFSET, a także funkcji typu SUM, AVG itp. Użyteczne jest też DISTINCT, GROUP BY, HAVING i inne tego typu wynalazki pozwalające operować na zbiorze wyników. Prócz tego warto korzystać w miarę potrzeby/możliwości z SQL'owych funkcji do obróbki stringów. No i samo zaprojektowanie bazy to istotna kwestia, ale ciężko tu o "skrótowy" poradnik ;)
poltar --> Doprecyzowałbym Twoją poradę: jeśli mamy dużo kolumn, ale większość to pola kilkuznakowe, to nie ma co się bawić w wybieranie kolumn, chyba że potrzebujemy naprawdę dosłownie 2-3 pól. Natomiast zdecydowanie zalecam takie podejście w wypadku wszelkiego rodzaju BLOB'ów i VARCHAR'ów.
pao13(grecja) [ Silkroad Fan ]
Witam ponownie,
Dzięki za wszystkie uwagi. W obecnej chwili mówimy o zliczeniu 1000 rekordów jednego użytkownika. W przyszłosci może być więcej użytkowników z około 200 rekordami. Nie mam pojecia czy tym sposobem nie będzie problemów. Ale jak Regis pisze, lepiej od początku to zaplanować aby nie mieć w przyszłosci problemów.
poltar [ Generaďż˝ ]
Te liczby sa bardzo male :)
Akurat wczoraj testowalem wydajnosc jednego ze skryptow swoich ktory sprawial mi male problemy. Na potrzeby testu wygenerowalem tabele z milionem rekordow z losowymi danymi liczbowymi. Po malej korekcie w konstrukcji pętli przetworzenie tych danych (proste dzielenie modulo) i wygenerowanie na podstawie wyniku wykresu graficznego to ok 4 sekundy (na ok 10 wczesniej), z czego ponad polowa to generowanie tej grafiki przez GD - nomen omen wlasnie na sposobie generowania grafiki dalo sie zaoszczedzic.
Zwazywszy ze musialem do tego zaprząc php to i tak niezly wynik. Ty przy 2000 rekordow i jesli dodatkowo uzyjesz agregatów z sql (sum) nie odczujesz zadnego obciazenia.
Pod warunkiem ze skrypt nie bedzie ociazany np ruchem 100 000 userow na godzine oczywiscie, ale to inna broszka - wtedy bron boze przed kazdorazowym uzyciem bazy (szczegolnie jesli dane nie zmieniaja sie zbyt czesto) :)
Tomal_P [ Legend ]
Jak zrobić w PHP żeby po odczytaniu ciasteczka, wartość tego ciasteczka została wpisana w pole formularza??
Da się to zrobić w PHP czy trzeba użyć JS??
yo dawg [ 1979 ]
<form value=\"".$_COOKIE['atrybut']."\" />
pao13(grecja) [ Silkroad Fan ]
Poltar--- > rozwiązałem to w inny sposób:
$countq=mysql_query(" SELECT id_usera, SUM(profit)FROM games WHERE id_usera='$id1'");
while($row = mysql_fetch_array($countq))‹
echo' '.$row['SUM(profit)'].' ';
›
Czy ten sposób jest poprawny ?
poltar [ Generaďż˝ ]
Agregat w zapytaniu sql ma zrobic za ciebie czesc roboty i dziala tylko w tym zapytaniu, dlatego to :
$row['SUM(profit)
raczej nie zadziala. Po prostu w wyniku zapytania masz efekt dzialania tego sum.
Jesli w bazie masz X rekordow o polu id_usera i chcesz sume pól profit z tych wlasnie rekordow to :
$countq=mysql_query(" SELECT SUM(profit) FROM games WHERE id_usera='$id1'");
echo mysql_result($countq,0);
Nie potrzebujesz pętli, bo wynik dzialania prostego agregatu zawiera tylko jesten rekord. Nie potrzebujesz tez "czytac" w select pola id_usera jesli potrzebne ci jest tylko do warunku WHERE. Gdybys jesnak musial "czytac" wiecej pol to wtedy modyfikujesz lekko zczytanie wartosci :
$countq=mysql_query(" SELECT inne_pole, SUM(profit) as suma_profitu FROM games WHERE id_usera='$id1'");
echo mysql_result($countq,0,'suma_profitu');
pisane z glowy wiec moga byc literowki.
/edit - to drugie zapytanie wydaje mi sie podejrzane, bez sprawdzenia nie gwarantuje ze bedzie dzialac. Moze byc tak ze wynik bedzie zawieral tyle rekordow ile ich znajdzie w bazie spelniajacych warunek, ale kazdy z nich bedzie zawieral ta sume widoczna jako pole suma_profitu z klauzuli AS. Nie stosowalem takich zapytan wiec glowy nie dam, trzeba by sprawdzic :) Jak dotad agregatow uzywalem albo samotnie do uzyskania wartosci (suma, srednia) albo jako warunku w zapytaniu zlozonym z dwoch.
pao13(grecja) [ Silkroad Fan ]
poltar- > Dziękuje za uwagi. Zaraz zacznę nad tym pracować, mam jeszcze jedno pytanie. Powiedzmy, że w jednym zapytaniu mam sumę profitu. Jak jednym zapytaniem wyswietlic makslymalną sumę profitu danego użytkownika? Próbowałem funkcją MAX() ale nic z tego nie wychodzi...
poltar [ Generaďż˝ ]
Co oznacza "maksymalna suma profitu" (jak na razie to wygladalo na to ze masz tabele z wieloma rekordami dla grupy uzytkownikow, i sumujesz dla danego uzytkownika jedno z pol - profit. Wiec suma jest jedna dla danego uzytkownika. A moze chodzi ci o to jak sprawdzic ktory uzytkownik ma najwieksza sume? )? Wciaz nie do konca wiem jaka jest struktura tabeli i co wlasciwie probujesz uzyskac.
pao13(grecja) [ Silkroad Fan ]
poltar --- > fakt zle to opisalem. Chce wyswietlic sume profitu od najwieszkego do najmniejszego...
poltar [ Generaďż˝ ]
No wiec to bedzie tak (jesli dobrze zrozumialem)
SELECT id_usera, SUM(profit) as suma_profitow FROM games GROUP BY id_usera ORDER BY SUM(profit) DESC;
Zapytanie to zwroci ci kompletna liste uzytkownikow z przypisanymi do nich sumami pola profit (oczywiscie dla kazdego uzytkownika jego wlasnymi dzieki "group by") i posegregowanymi wg tych sum (dzieki "odrer by" malejąco - lub rosnąco jesli zamienisz DESC na ASC).
Teraz oczywiscie potrzebujesz petli zeby je przetworzyc
while($row = mysql_fetch_array($countq))‹
echo $row['user_id']." - ".$row['suma_profitow']."<br>";
›
To ci powinno dac liste w postaci
id_1 - suma1
id_2 - suma2 itd.
Jednak wciaz pisane z glowy, moga byc male bledy, choc generalnie idea powinna sie sprawdzic :)
tomazzi [ Flash YD ]
Jak zrobić menu z submenu? W sensie mam menu z elementami 1 2 3. Gdy najeżdżam na 1 to pod menu pojawia mi się A1 B1 C1 itp. Coś takiego jak ma JoeMonster w swoim menu. Da się to zrobić bez JS?
Regis [ ]
Szukaj w gotowych skryptach, albo w jQuery UI - nie ma co wymyślać koła na nowo.
ejpi [ Shit Happens ]
Hmm, takie małe zapytanie:
Jest stronka z prostym htmlem, ma np 4 pozycje w menu, po wybraniu odpowiedniej pozycji z menu ładuje kolejny dział który jest graficznie tą samą stronka tylko z inną zawartością w jednym divie. I tutaj pytanie jak rozwiązać problem odświeżania całej strony po wyborze kolejnych pozycji w menu.. O ile IE zapamiętuje stronke bez problemu w cache, to reszta przeglądarek jakoś ma z tym problem i odświeża całość. Co bu w takim przypadku skonstruować?
maviozo [ man with a movie camera ]
jquery->ajax
Ajax
Tomal_P [ Legend ]
ejpi -->
Może coś Ci pomoże.
ejpi [ Shit Happens ]
hmm to nie to.. strona jest normalna stronka.. z grafika itp.. tylko jest problem gdyż przeglądarka nie zapamiętuje jej w cache i przy kliknieciu w jakiś następny dział brzydko się cała przeładowuje.. chodzi mi bardziej o to, żeby zmusić przegladarke aby sobie pamietała o elementach stronki i nie ładowała na nowo tych samych obrazków, tła itp..
Tomal_P [ Legend ]
ejpi --> A zamiast tego co tych chcesz osiągnąć nie możesz zrobić za pomocą jquery i Ajaxa żeby po kliknięciu w link wczytał dane do tego diva bez przeładowania reszty strony.
Dlaczego akurat chcesz tak zrobić żeby przeglądarka zapamiętywała stronę??
ejpi [ Shit Happens ]
Tomal_P --> jednak przejrzałem bardziej te jquery i się chyba skusze.. dzięki
Regis [ ]
jQuery i Ajax się nadadzą, o ile wali Cię pozycjonowanie - bo jeśli zamierzasz tę stronę pozycjonować, to albo odrzuć tę opcję, albo "zdubluj" linki - tzn. "pod" każdym linkiem JS'owym (onClick) robisz normalnego linka z przeładowaniem strony (hrefa) - wtedy robot Google będzie mógł normalnie zaindeksować stronę. To drugie podejście w ogóle jest bardzo wskazane w przypadku funkcjonalności dostępnych tylko z poziomu JS, a które są niezbędne do działania strony (na wypadek, gdyby ktoś jednak nie miał JS).
ejpi [ Shit Happens ]
hmm właściwie pozycjonowanie strony by się przydało... ale pojawił się też inny problem gdyż ta moja zawartosc ktora sie zmienia w divie jest oparta na skrypcie JSScroling aby przewijac tekst.. i tak jak sprawdziłem to nie działa z jquery..
kajtek603 [ International Level ]
hmm ja mam takie pytanie jak umieścić tekst na samym dole strony i na środku w html. Proszę o pomoc :)
yo dawg [ 1979 ]
Czy istnieje możliwość wyciągnięcia tagów <meta> i <title> z cudzej strony/podstrony i np. konkretnych treści?
maviozo [ man with a movie camera ]
cURLem. aczkolwiek musisz parsować całą stronę, aby wyciągnąć tylko te dane. No chyba, że są inne metody, ale do nich nie dotarłem.
Poohatch [ The Evil Candy ]
Wiecie co? Podziwiam ludzi, którzy potrafia połapać się w języku PHP. Uczę się teraz tej czarnej magii na informatyce i stwierdziłem, że nigdy nie pójdę klasy informatycznej w liceum jeśli miałbym to dalej szlifować. Szacun dla was.
[124]
Jesli będąc na danej stronie wciśniesz "Widok - Źródło" to ujrzysz całe to coś i tam jest m.in. title i meta. Nie wiem, czy dokładnie o to chodzi :P
Regis [ ]
[124] & [125] file_get_contents pozwala określać ilość danych do odczytania, więc jeśli rozmiar sekcji head na cudzej stronie jest stały, to można to zrobić bez pobierania wszystkiego. Ale z treściami nie ma już sensu się tak bawić - lepiej parsować całość.
[126] Akurat PHP to najprostszy i najbardziej "tolerancyjny" język spośród tych najpopularniejszych.
maviozo [ man with a movie camera ]
Regis->nie do końca tak pięknie, bo nie każdy serwer pozwoli na file_get.. Jeśli nie masz dostępu do plików ini apache'a to raczej pewne, że będzie to zablokowane.
yo dawg [ 1979 ]
Generalnie chodzi mi o to by skrypt bazując min. na keywordsach dobierał sam tagi do pobranych danych. Najprościej, najwydajniej.
btw. te jquery co mi tak reklamowaliście to zajefajna sprawa.
I jeszcze coś: Coś chrzani mi się mod_rewrite, nie moge przypisac linku viewprofile&id=1 na /profile/1/, wszelkie próby wywalają 404. Niech ktoś wklei swojego .httaces, korzystającego z tego, bardzo bym prosił.
Regis [ ]
[128] Jeśli serwer nie umożliwia "nadpisywania" plików ini w tak podstawowym zakresie, to jest do dupy, a takiego przypadku nie rozpatruję ;) Konto na przyzwoitym serwerze można mieć już za 30-40zł rocznie, więc problemów związanych z kontami na badziewnych, albo darmowych serwerach nie biorę nawet pod uwagę - jak ktoś z nich chce korzystać, to musi się liczyć z problemami ;)
[129] btw. te jquery co mi tak reklamowaliście to zajefajna sprawa.
Wiemy. Dlatego reklamowaliśmy ;)
maczu [ Generaďż˝ ]
mam na stronie kilka takich linków:
domain.com/folder/subfolder/
domain.com/folder/subfolder/?costam
teraz chciałbym zamienić to wszystko na to:
domain.com/nazwa/
jaką regułę modrewrita trzeba napisać? (nigdy nie byłem w tym dobry...) :)
yo dawg [ 1979 ]
Podłączam się pod [131].
I moje pytania: czy poza similar_text() istnieje jakiś inny sposób na porównywanie łańcuchów? I czy istnieje MySQLowski odpowiednik similar_text()?
Dalej: Różnica między crypt(), a md5()?
I zastosowanie w praktyce programowania obiektowego na stronach www. W zasadzie - czym różni się obiekt od wielowymiarowej tablicy?
maviozo, w jaki sposób parsujesz tematy z forum GOLa?
maviozo [ man with a movie camera ]
yo dawg->odpowiedź na to pytanie masz kilka postów wyżej:)
yo dawg [ 1979 ]
A co z resztą? ;)
<?php
$strona = 'https://www.gry-online.pl;
$plik = file ($strona, "r");
$rozdziel = implode('', $plik);
eregi("<title>(.*)</title>", $rozdziel, $_title);
$title = trim($_title[1]);
echo 'Strona <b>'.$strona.'</b> ma tytuł: <b>'.$title.'</b>';
?>
Czy to już jest parsowanie?
maviozo [ man with a movie camera ]
Osobiście skorzystałem z jednej z gotowych funkcji z php.net o nazwie "multi_between" - nie pamiętam pod którą z wbudowanych funkcji języka została napisana. Również pozwoliłem ją sobie przerobić, aby zwracała tylko pierwszy element zamiast tablicy i działa tak:
$tytul=one_between("<title>","</title>",$plik);
a tablica przydać sie może w przypadku powtarzalnych znaczków, jak wiersze tabeli
$w=multi_between("<tr>","</tr>",$plik);
i masz $w[0], $w[1] itd
yo dawg [ 1979 ]
A ta funkcja one_between() to działa na zasadzie zlepienia funkcji strpos() i strrchr()?
Nie ma jej w manualu, więc podejrzewam, że to funkcja autorska, możesz ją przekleić?
yo dawg [ 1979 ]
Wrrr, próbuję coś wyciągnąć z jakiejkolwiek strony file_get_contents() i wciąż wywala mi błąd ;/
Warning: file_get_contents() [function.file-get-contents]: stream does not support seeking in
$strona = '
$plik = file_get_contents($strona, NULL, NULL, 20, 14);
echo($plik);
nagytow [ Firestarter ]
Ciekawy problem, skopiowalem twoj kod do siebie, dodalem apostrofa i smiga ladnie. Jaka masz wersje php? Sprobuj jeszcze raz bez okreslania offsetu i rozmiaru, po prostu file_get_contents($strona).
maviozo [ man with a movie camera ]
jak wyżej pisałem, nie kazdy serwer akceptuje wykorzystanie file() czy file_get.., w przeciwieństwie do localhosta, który działa. Dlatego zasugerowałem użycie cURL. ;)
Multibetween: (oj, nie chciało się szukać:>)
yo dawg [ 1979 ]
Php w wersji 5.2.8.
Dałem jak mówił nagytow czyli:
$strona = '
$plik = file_get_contents($strona);
echo($plik);
no i wyświetla:
A ja poczebuję tytułu strony. Co dalej?
maviozo, dzięki!
cURL, cURL, kompletnie się na nim nie znam.
nagytow [ Firestarter ]
Tak jak maviozo mowi, po prostu masz zablokowany dostep do seeka przy file_get_contents. Jesli ci cURL nie odpowiada, zawsze mozesz sprobowac starym dobrym fopen i czytac po kawalku az znajdziesz tytul, wtedy zamknac polaczenie.
maviozo [ man with a movie camera ]
yo->na php net (ulubiona strona:) masz gotowy kod do wczytania strony (bodaj pod curl_init)
zmieniasz tylko adres. volia.
yo dawg [ 1979 ]
Oki, dzięki serdeczne. Poczytałem nieco o tym cURLu, skrobnąłem nawet jakiś kurs online i zastanawia mnie jedna rzecz - w związku z tym, że jest to dość potężne narzędzie, to jak rozumiem może to zostać użyte np. zaspamowania innych stron i wysyłania zapętlonych zapytań np. do cudzej wyszukiwarki, zgadza się? Do czego kluczowo miał służyć cURL?
Sparsowałem google.pl, wyświetliłem ich stronę, (oczywiście bez cssa) i ponawiam pytanie, jak teraz wyciągnąć te cholerne tagi <title>/<meta>? :)
No i jak sparsować podstronę w takiej formie, jaka jest np. na YT, gdzie link np. do ulubionych jest w formie
curl_setopt(), ta funkcja ma pierdyliard parametrów. Jest jakiś spis najczęściej używanych i najbardziej praktycznych?
yo dawg [ 1979 ]
up
yo dawg [ 1979 ]
Spotkał się ktoś z fenomenem, że prosty kod html + css, 3 divy na krzyż, wyświetla się w FF, a w IE 64 bit pokazuje się biała strona? ;D
Dym14 [ C L I N I C ]
Witam mam problem z odczytaniem danych z bazy mysql serwer zwraca taki kod błędu (dla kodu 1 bo dla kodu 2 zmieniają się numery linii):
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /virtual/d/y/dym71.ugu.pl/autoryzacja.php on line 21
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /virtual/d/y/dym71.ugu.pl/autoryzacja.php on line 28
Linie te tyczą się użycia mysql_fetch_array a ja nie wiem jak to odczytać. Mam dwie wersje i żadna nie działa jakby ktoś mógł mi zmodyfikować tylko te parę linijek skryptu to bym był wdzięczny :(
Kod 1:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1250">
</head>
<body>
<?php
@mysql_connect('mysql2.ugu.pl','db453346','mojehaslo')
or die('Nie mogę się połšczyć');
mysql_select_db('db453346')
or die('Błšd wyboru bazy danych');
$authors = @mysql_query('select id,nazwa from przedmioty');
$login=$_POST['login'];
$pid=$_POST['pid'];
$haslo=$_POST['haslo'];
$sql="SELECT ntab from przedmioty where id='$pid'";
$idz=@mysql_query($sql);
$rekord=mysql_fetch_array($idz);
$ntab=$rekord['ntab'];
$plogin='"'.$login.'"';
$sql2="SELECT haslo from '$ntab' where login='$plogin'";
$idy=@mysql_query($sql2);
$rekord2=mysql_fetch_array($idy);
$ohaslo=$rekord2['haslo'];
if ($haslo == $ohaslo) ‹
echo ('<a href="rozp.php?idp='.$pid.'&tabn='.$ntab.'">Kontynuuj</a>');
› else ‹
echo ('<a href="blad.php">Kontynuuj!</a>');
›
?>
</body>
</html>
Kod 2:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1250">
</head>
<body>
<?php
@mysql_connect('mysql2.ugu.pl','db453346','mojehaslo')
or die('Nie mogę się połšczyć');
mysql_select_db('db453346')
or die('Błšd wyboru bazy danych');
$authors = @mysql_query('select id,nazwa from przedmioty');
$login=$_POST['login'];
$pid=$_POST['pid'];
$haslo=$_POST['haslo'];
$result=mysql_query('SELECT ntab from przedmioty where id=$pid');
while($row=mysql_fetch_array($result))
‹
$ntab=$row['ntab'];
›
$plogin='"'.$login.'"';
$result2=mysql_query('SELECT haslo from $ntab where login=$plogin');
while($row2=mysql_fetch_array($result2))
‹
$ohaslo=$row2['haslo'];
›
if ($haslo == $ohaslo) ‹
echo ('<a href="rozp.php?idp='.$pid.'&tabn='.$ntab.'">Kontynuuj</a>');
› else ‹
echo ('<a href="blad.php">Kontynuuj!</a>');
›
?>
</body>
</html>
Dym14 [ C L I N I C ]
Nieaktualne już sobie poradziłem.
yo dawg [ 1979 ]
Pytanie z cssa, mam kilka zagnieżdżonych elementów <ul> i <li>, problem jednak w tym, że każdy następny odsuwa się o lewej krawędzi o kilkanaście pikseli. Próbowałem margin:0px; i dupa. Chciałbym aby każdy element był jeden pod drugim bez marginesu. Porada?
Zapruder [ Terran Hate Machine ]
pokaz ten css
yo dawg [ 1979 ]
Rzecz w tym, że póki co dałem tylko display:block; i float:left :P
A margin coś nie chce zaskoczyć.
Zapruder [ Terran Hate Machine ]
ale dałes float: left; dla ul, czy li? jak dla li to raz, że bez sensu, a dwa że właśnie stąd robią sie schody :)
edit:
chyba ze mowisz o tym ze masz np:
<ul>
<li></li>
<li>
<ul>
<li></li>
<li></li>
</ul>
</li>
<li></li>
<li></li>
</ul>
i liste drugiego poziomu ci przesuwa - wtedy padding-left: 0;
yo dawg [ 1979 ]
Dzięki!
ejpi [ Shit Happens ]
Hmm.. a jakby rozwiązać taki problem. Mam menubara zbudowanego tak: 5 obrazków, każdy jest linkiem, do tego po najechaniu myszą ładuje się inny obrazek(onmouseover) a chciałbym zrobić aby po kliknieciu załadował się trzeci obrazek w jego miejsce, i po kliknięciu w inną opzycję menu tamten poprzedni powracał do domyślnego a ten się zmieniał. Czy może skonstruować to jakoś inaczej niż na obrazkach?
Zapruder [ Terran Hate Machine ]
po pierwsze poskładaj sobie sprite'a 3 poziomowego (od góry normalny, hover, kliknięty).
po drugie robienie onmouseover jest bez sensu, lepiej ustawić w stylach a#jakis_id:hover
zmiana obrazku po kliknięcu może być np, przez jquery:
<script>
$("a#jakis_id").click(function () ‹
$(this).css(‹backgroundPosition: "x x"›);
›);
</script>
Gdzie za x wstawiasz odpowiednie wartości w px
I teraz, twoje obrazki, pozycje menu muszą mieć display: block; i ustawione konkretne wysokości i szerokości.
Dalej, w normalnym linku masz background-position: 0 0;
w hover (css) przesuwasz background positon o 1 wysokość "obrazka" w dół, czyli np "0 -20px"
po kliknięciu (czyli musisz te "x x" w skrypcie podmienić) przesuwasz o 2 wysokości, czyli np. "0 -40px"
A żeby po kliknięciu w inną pozycję menu poprzedni obrazek wracał do wyjściowego, powyższy skrypt można zmodyfikować tak:
<script>
$("a#jakis_id").click(function () ‹
$("#kontener_zawierający_poszczególne_pozycje_menu").children().css(‹backgroundPosition: "0 0"›);
$(this).css(‹backgroundPosition: "x x"›);
›);
</script>
Przy czym te znaczki ‹ › to nawiasy klamrowe.
Minusem tego wszystkiego jest to, że nie jest to specjalnie optymalne rozwiązanie bo dla każdej pozycji menu trzeba przekopiować skrypt i podmienić id. Da się to zrobić optymalniej, ale nie chce mi się teraz myśleć, może Regis albo maviozo przyjdą to pomogą : P
maczu [ Generaďż˝ ]
ja rozwiązanie Zaprudera lekko bym zmodyfikował: obrazek zostaje, ale nie używałbym jquery, tylko dodatkowej klasy:
/* normalny */
a
background: url(image) 0 0;
/* hover */
a:hover
background: url(image) 0 -20px;
/*kliknięty*/
.klik
background: url(image) 0 -40px;
po kliknięciu i tak musisz chyba przeładować stronę, więc z get-a sobie sprawdzisz który link (która pozycja menu) została wybrana i nadasz jej odpowiednią klasę przesuwającą obrazek.
Ale w sumie chyba powtórzyłem to co mówił Zapruder:)
Zapruder [ Terran Hate Machine ]
No ja w sumie nie pomyslalem ze chodzi po prostu o menu, myslalem ze wszystko ma sie dziac w obrebie jednej strony :) Jesli nie, to twoje rozwiązanie jest lepsiejsze =]
ejpi [ Shit Happens ]
hmm właśnie problem w tym, ze wszystko ma się dziać w obrębie jednej strony.. menu jest odnośnikiem do ładowania poszczegolnych ajaxtabow z jquery..
maviozo [ man with a movie camera ]
Czy są jakieś "ściskacze kodu"? Mam tu na myśli tak js, tak jquery i php.
Regis [ ]
Ściskacze? Masz na myśli tzw. "minifiery"? Pod tym słowem kluczowym (minifier) google powinny Ci wypluć jakieś sensowne wyniki. Nie rozumiem tylko - o ile pytasz o to, o co myślę, że pytasz - po co obrabiać w ten sposób pliki PHP?
maviozo [ man with a movie camera ]
Znów się do Was uśmiechnę:P
Wyżej podana fcja parse_ini_file jest bardzo fajna, bardzo. Iście mi się podoba.
Załóżmy, że mamy plik:
[test1]
wa="asda"
wb="yut"
[test2]
xa="bxbx"
xb="zxcv"
[test3]
za="asd"
itd.
Czy jest gotowa funkcja, która nadpisze tylko sekcję [test2]? W komentarzach pod funkcją co prawda opisano gotową funkcję, która odwraca parsowanie - ale zapewne działa tylko całościowo.
W sumie chodzi mi o to - że mam ileś takich plików i zarządzanie nimi przez podstrony. Na każdej podstronie formularze do modyfikowania właśnie tylko fragmentów plików.
Jakieś rady? Jeśli miałyby wam zająć dużo czasu to się nie trudźcie;) jakoś sobie poradzę. Lub chociaż jak przenieść na stronę pozostałe fragmenty pliku ini, by potem nadpisanie i dorzucenie zmodyfikowanej sekcji było prostsze. (może w sumie kopać kolejność sekcji, niespecjalnie mi akurat na tym zależy)
Regis [ ]
Jakieś rady?
Nie trzymaj w plikach .ini danych, które chcesz edytować przez formularze ;)
maviozo [ man with a movie camera ]
To w ramach prywatnej "bazy danych", na której zależy mi, yb była maksymalnie mobilna.
Na obecne potrzeby to wydaje mi się być wygodnym rozwiązaniem.
maviozo [ man with a movie camera ]
Już zrobiłem, gdyby ktoś pytał.
ejpi [ Shit Happens ]
Hmm.. poprzednie problemy rozwiązane. Ale mam jeszcze jedno pytanie. Używam skryptu ze slideshowem który ładuje kilkadziesiąt obrazków, łącznie prawie 2MB, i jak zmusić przeglądarkę, żeby ten skrypt ładowała dopiero po załadowaniu wszystkich innych obrazków, skryptów i elementów strony?
maviozo [ man with a movie camera ]
$(document).ready(function()
////////
);
to zdaje się uruchamiać skrypty dopiero po wczytaniu wszystkich elementów strony.
Tomal_P [ Legend ]
Chodzi mi o JQuery - czy da się zrobić tak żeby przy opuszczaniu strony skasować ciasteczko, które wcześniej stworzyłem??
maviozo [ man with a movie camera ]
Jest takie javascriptowe zdarzenie doczepiane do <body>: onunload.
Pokombinuj z tym;)
yo dawg [ 1979 ]
Czy Coy2k tu zagląda? Jeśli tak, to niech poda maila, sprawę mam (może nawet zlecenie) ;)
yo dawg [ 1979 ]
Czy Ajaxowe auto aktualizowanie zasobów strony (np. newsów) poprzez np. co 2-minutowe zapytania do bazy, mocno obciąża stronę i transfer miesięczny?
yo dawg [ 1979 ]
Juz kiedyś o coś podobnego pytałem, ale...
Chciałbym przechowywać datę dołączenia usera, jest jakieś pole automatycznie uzupełniające datę, ale bez możliwosci jej edycji po zmodyfikowaniu rekordu (czyli data dołączenia).
yo dawg [ 1979 ]
To jeszcze jedno: Szukam kodu js, który wrzuci kwadratowy obrazek 100x100 w szarą ramkę, a sam obrazek przyciemni, no chyba, że się na niego najedzie myszką. Googlowane kilkakrotnie, bez rezultatu.
Regis [ ]
[169] Raczej niewskazane. Znacznie lepiej jest zapuścić "wiszące" zapytanie AJAXowe, które zareaguje dopiero, jak coś się pojawi po drugiej stronie "rury". Zapuszczasz "nieskończone" (w sensie - bez timeoutu) zapytanie do skryptu, który jest "zapętlony" po stronie serwera, a kiedy już w tej pętli się jakieś dane znajdą, to skrypt wypluwa je co powoduje "odbiór" danych przez przeglądarkę. Wtedy skrypt JS obrabia dane, po czym wywołuje sam siebie - dzięki temu ciągłość działania zostaje zachowana. Poszukaj tutoriali w necie.
[170] Pytasz o SQL? To zależy od bazy danych (albo parametry kolumny, albo jakiś GRANT). Ale moim zdaniem robienie takich rzeczy na poziomie bazy nie jest wskazane. Zawsze możesz odczuć potrzebę, żeby jednak coś zmienić, a userowi możesz zablokować taką ewentualność z poziomu kodu strony.
[171] Jakiego typu jest problem? jQuery nie daje rady? Nie widzę problemu szczerze mówiąc.
yo dawg [ 1979 ]
Raczej niewskazane. Znacznie lepiej jest zapuścić "wiszące" zapytanie AJAXowe, które zareaguje dopiero, jak coś się pojawi po drugiej stronie "rury". Zapuszczasz "nieskończone" (w sensie - bez timeoutu) zapytanie do skryptu, który jest "zapętlony" po stronie serwera, a kiedy już w tej pętli się jakieś dane znajdą, to skrypt wypluwa je co powoduje "odbiór" danych przez przeglądarkę. Wtedy skrypt JS obrabia dane, po czym wywołuje sam siebie - dzięki temu ciągłość działania zostaje zachowana.
Choroba, można jaśniej? :P Może tak - ile by mnie, plus-minus, kosztowało przerobienie witryny web 2.0 (fajnie tak napisać o swoim dziele ;)) do środowiska ajaxowego - znaczy aby userzy mogli min. oddawać głosy bez przeładowania strony? Oczywiście mówię tutaj o profesjonalnych firmach, a nie o nastoletnich programistach robiących mody do phpBB.
Pytasz o SQL? To zależy od bazy danych (albo parametry kolumny, albo jakiś GRANT). Ale moim zdaniem robienie takich rzeczy na poziomie bazy nie jest wskazane. Zawsze możesz odczuć potrzebę, żeby jednak coś zmienić, a userowi możesz zablokować taką ewentualność z poziomu kodu strony.
Czyli lepiej wrzucić $_POST['data'] do pola w bazie typu VARCHAR? Tak po prostu?
Co do problemu z postu [171], poradziłem sobie z nim cssem (testowane tylko na FF, działa):
.borderit img
border: 3px solid #f3f3f3;
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);
-moz-opacity: 0.5;
opacity: 0.5;
.borderit:hover img
border: 3px solid #66a9ef;
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100);
-moz-opacity: 1;
opacity: 1;
I jeszcze coś, którą pętlą w php robiło się np. tabelkę w html 6x6, for() czy foreach()?
Wielkie dzięki Regis!
yo dawg [ 1979 ]
Pytanko odnośnie sesji, czy jeżeli ustalam sesję użytkownika $_SESSION['zalogowany'] = TRUE, to czy pozostałe elementy odnośnie sesji zalogowanego mogę przechowywać w formie
$_SESSION['zalogowany']['login'] = $login;
$_SESSION['zalogowany']['password'] = $pass;
etc.?
zamiast
$_SESSION['zalogowany'] = TRUE;
$_SESSION['login'] = $login;
$_SESSION['pass'] = $pass;
I jak zrobić automatyczne logowanie znaczy, aby sesja po wyłączeniu przeglądarki była wciąż aktywna? Domyslam się, ze trzeba kombinowac z ciastkami - na ile jest to bezpieczne i co mogę i powinienem spokojnie tam przechowywać?
Nie wiem jak się za to zabrać, bo nawet gdy się nie wyloguję ręcznie, to po resecie przeglądarki sesja znika.
Regis [ ]
Choroba, można jaśniej? :P
Chciałem Ci podrzucić przykład, ale nie mogę go znaleźć. A prościej niestety nie umiem ;)
ile by mnie, plus-minus, kosztowało przerobienie witryny (...)
Zależy jak jest napisana. Jak na przyzwoitym MVC, to nie jest to technicznie skomplikowane, tylko czasochłonne. Jeśli w kodzie jest burdel, to może być problem, żeby ktoś się tego w ogóle podjął. Bez kodu i listy funkcjonalności nie ocenię, ale mogę luźno szacować, że dla dobrze napisanej strony zrobionej w oparciu o jakiś framework MVC (np. Zend), może to wynieść ok. 500 zł na start + 50-100zł za pojedynczą funkcjonalność. Ale mówię - to takie strzelanie w ciemno.
Czyli lepiej wrzucić $_POST['data'] do pola w bazie typu VARCHAR? Tak po prostu?
Nie bardzo rozumiem jak się to ma do wcześniejszego pytania - pytałeś o to, jak zabezpieczyć się przed późniejszym modyfikowaniem tej wartości. Ja napisałem, że po prostu trzymasz ją normalnie w kolumnie i w Twoim interesie jest to, żeby tak napisać aplikację po stronie PHP, żeby uniemożliwić jej modyfikację. I w żadnym razie nie VARCHAR, tylko DATE lub coś analogicznego, zależnie od tego z jakiej bazy korzystasz.
I jeszcze coś, którą pętlą w php robiło się np. tabelkę w html 6x6, for() czy foreach()?
A masz dane, które chcesz wyświetlić, czy tabelka jest pusta? Pętla foreach służy do iterowania po elementach tablicy. Natomiast for pozwala Ci iterować po dowolnym zakresie. Jeśli masz dwuwymiarową tablicę o wymiarze 6x6, to prościej będzie użyć foreach. W innym wypadku for. Przy czym nie ma czegoś takiego jak "którą pętlą się robiło" - ten sam efekt osiągniesz i jedną, i drugą. Tylko że jedna z nich się do tego nadaje lepiej w pewnych sytuacjach, a druga w innych.
Pytanko odnośnie sesji
Sesja to zwykła tablica. Opcja numer jeden jest prawie OK - w sensie, że zadziała, ale jest nieelegancka. Zrób tak jak napisałeś, ale pomiń przypisywanie true do $_SESSION['zalogowany'] - po prostu zrób tak, że jeśli user nie jest zalogowany, to $_SESSION['zalogowany'] jest nullem. A jak się zaloguje, to wsadzasz tam potrzebne dane (lepiej było by obiekt klasy Uzytkownik, a nie luźne dane, ale to inna bajka). Nie potrzebna Ci jest dodatkowa, "sztuczna" flaga oznaczająca fakt zalogowania.
I jak zrobić automatyczne logowanie (...)
Najprościej? Zapisujesz userowi cookie z jakimś hashem i ten sam hash pakujesz do bazy danych przy danym userze. Przy wejściu na stronę sprawdzasz, czy nie ma ciasteczka, a jeśli jest, to logujesz usera, przy którym znajdziesz hash z tego ciasteczka. Oczywiście w razie "kradzieży" cookie masz włam, ale to samo tyczy się choćby sesji - one też są trzymane w cookie.
yo dawg [ 1979 ]
Wielgaśne dzięki. Tym hashem może być dowolnie zakodowany ciąg? SID tez może być?
Kolejne pytanie - mam 3 divy i choć są obok siebie to mają różne style.
I teraz zachciało mi się wyciągnąć 3 ostatnio dodane rekordy i umieścić je w tych 3 divach - o ile nie byłoby problemu gdyby miały ten sam styl - o tyle w przypadku gdy jeden ma klasę css x, a dwa pozostałe y, robi się problem. While() świetnie by się sprawdził, gdyby divy były tożsame, a niestety w tym przypadku nie są. Protipy?
Ah jeszcze cuś odnośnie rejestracji:
Wrzuciłem taki warun do rejestracji:
elseif (ctype_alnum($_POST['login'] == FALSE))
echo 'niepoprawny login';
Po 1) Jeden czy dwa znaki = ? :P
Po 2) Czy ctype_alnum() akceptuje znak spacji i _ ? W zasadzie zalezy mi tylko na _.
Regis [ ]
Tym hashem może być dowolnie zakodowany ciąg? SID tez może być?
SID jest identyfikatorem użytkownika? Jeśli jest on widoczny gdzieś na stronie, to nie - wtedy każdy by mógł sobie podrobić takie cookie. Ja zwykle w takich wypadkach używam czegoś w stylu" ID + jakaś niejawna i niezmienna informacja o userze (często wrzucam sobie takie coś do bazy przy dodawaniu usera - np. jakiś losowy string) + salt. Salt, to jakiś stały ciąg znaków, którego ew. "napastnik" nie odgadnie. Otrzymujesz np. coś takiego (podkreślenia zbędne): 1337_akjA4Ow_tegonieodgadniesz. ID zapewnia unikalność, nawet, gdyby ten drugi człon się powtórzył (jeśli zrobisz coś, co sprawi, że będzie unikalny, to masz problem z głowy - wystarczy jedna z tych dwóch rzeczy). Losowe, niejawne znaki stałe dla usera zapewniają, że znajomość ID nie wystarczy do włamania. Salt dodatkowo utrudnia ew. "sabotaż".
Protipy?
Przygotowujesz tablicę z trzema stringami, odpowiadającymi nazwom styli ('x', 'y', 'y') i w pętli while robisz sobie licznik (np. j), a przy generowaniu HTML w tejże pętli robisz: (...) style="<? echo $tablica[j] ?>"? Albo jak w przyszłości przewidujesz, że 'x' będzie zawsze tylko jeden, a 'y' może przybywać, to zrób to normalnie ifem (if j == 0 then styl X else styl Y) - nie ma co wyciągać armat na komara.
ctype_alnum($_POST['login'] == FALSE)
Jesteś pewien, że to chcesz zrobić? Warunek zwróci Ci stringa: "true" albo "false", a on zawsze będzie typu "alnum". Nie przypadkiem !ctype_alnum(pole)? Co do drugiego pytania - sprawdź w dokumentacji, ale podkreślenie to na 99,9% nie jest alnum.
yo dawg [ 1979 ]
Dziękować!
Co do ctype_alnum:
Returns TRUE if every character in text is either a letter or a digit, FALSE otherwise.
Czyli zwraca FALSE, gdy login zawiera znaki inne niż cyfry i liczby, czyli wg mojego rozumowania warunek
elseif (ctype_alnum($_POST['login'] == FALSE))
‹
echo 'niepoprawny login';
›
jest prawidłowy(?)
Z drugiej strony:
if (ctype_alnum($testcase))
echo "The string $testcase consists of all letters or digits.\n";
else
echo "The string $testcase does not consist of all letters or digits.\n";
Pogubiłem się.
Regis [ ]
Zwracam uwagę, że Twoje porównanie jest PARAMETREM funkcji ctype_alnum, a chciałeś chyba porównać to co ona zwraca ;)
yo dawg [ 1979 ]
Jo, teraz kapuję, dałem tak:
elseif (!ctype_alnum($_POST['login']))
‹
echo 'Nieprawidłowy format loginu. Login może się składać wyłącznie z liter i cyfr.';
›
Teraz robię własnie ten system autologowania, zrobiłem funkcję losującą 32-znakowy losowy ciąg, do tego zakodowałem to md5(), dodałem user_id + losowy ciąg - tylko mi znany - znaków. Teraz jednak kwestia wyciagania hashu rejestracyjnego - rozumiem, że jako osoba jedyna znająca ilość znaków w salcie w cookie moge zwyczajnie (i bezpiecznie) rozbic pobrane ciacho jedną z funkcji rozbijająca stringi?
setcookie("linki", $cookie_code, time()+2592000);
2592000 to czas w sekundach, zgadza się (30 dni)?
yo dawg [ 1979 ]
Wrr, tradycyjny problem...
Warning: Cannot modify header information - headers already sent by (output started at /new/index.php:10) in /new/logowanie.php on line 52
Error odsyła do linijki, w której ustawiane jest cookie:
setcookie("linki", $cookie_code, time()+2592000);
a dałem <?php session_start();?> na sam początek index.php...
Natrafiłem na rozwiązanie:
ob_start();
ob_end_flush();
Ale nijak nie wiem przed czym wstawić ob_start(), a za czym ob_end_flush(). Halp.
Marcio [ Legend ]
Strasznie dawno nie bawiłem się webmasterką ale z tego co pamiętam to wynika to z tego, że coś już wyświetlasz przed wysłaniem tych cookiesów.
yo dawg [ 1979 ]
No no, komunikat to ja rozumiem :D. I wcale nie jest dziwne, że wysyłam headery dużo wcześniej niż cookies.
yo dawg [ 1979 ]
Działa! :)
yo dawg [ 1979 ]
Ja Cię! 3 w nocy, ale było warto, autologowanie śmiga jak należy!
Regis [ ]
rozumiem, że jako osoba jedyna znająca ilość znaków w salcie w cookie moge zwyczajnie (i bezpiecznie) rozbic pobrane ciacho jedną z funkcji rozbijająca stringi?
Yyyy? Jak chcesz "rozbić" ciacho, skoro jest ono hashem? Albo nie rozumiem tego, co napisałeś, albo zrobiłeś coś nie do końca tak jak należy.
yo dawg [ 1979 ]
To może tak: Zawartością ciastka jest ciąg:
id_usera.ciąg_utworzony przy rejestracji.stały losowy ciąg znaków
I teraz żeby sprawdzić, który to user, jeśli ma ciastko, rozbijam tego stringa po to by otrzymać .ciąg_utworzony przy rejestracji.. Następnie jeśli znajdzie go w bazie, tworzy sesje na podstawie danych z bazy, ja tak to zrozumiałem.
Regis [ ]
To co zrobiłeś jest OK, ale jest taka zasada, że nie należy robić czegokolwiek w oparciu o dane znalezione wyłącznie u usera (np. w ciastku). Poza tym zapisując takie dane w ciastku ujawniasz dwia ciągi znaków, które powinny zostać niejawne. Ciąg o którym piszesz powinieneś zahashować (o czym wyraźnie pisałem) np. za pomocą sha1(). Następnie zapisujesz go w ciastku ORAZ zapisujesz w bazie przy danym userze (np. kolumna autologin_hash). Po wejściu usera na stronę pobierasz hash z ciastka i sprawdzasz, przy którym userze w bazie on się pojawia. Wtedy logujesz danego użytkownika.
Tak na marginesie - ponieważ trzymasz ten hash w bazie, to możesz zamiast zaproponowanego hasha użyć częściowo/zupełnie losowego, co jeszcze bardziej podniesie bezpieczeństwo, ale to rozwiązanie nie sprawdza się w niektórych zastosowaniach (komplikuje obsługę), więc podaję je jako "opcję", bez zagłębiania się w temat.
maczu [ Generaďż˝ ]
znudzony arialem i helvetica pytam: jaki jest najlepszy sposób na wyświetlenie innej niż standardowej czcionki na mojej stronie? czy w ogóle jest to możliwe?
Zapruder [ Terran Hate Machine ]
Do zwykłego tekstu to tylko fonty standardowe = arial, helva, tahoma, lucida, verdana itp.
Nagłówki itp. możesz podmieniać przez sifr lub jakas jego wariacje
Ewentualnie @font-face, ale nie każda przeglądarka go wspiera.
yo dawg [ 1979 ]
Regis, zrobiłem jak napisałeś, dzięki.
Kolejna kwestia: walidacja adresu url, chciałbym, aby user mógł wpisać url tylko w formacie https:// i ftp:// - oczywiście właczając to wersje z i bez www. Niby mozna uzyć eregi() ale wtedy user może np. wpisać cos takiego:
adreshttp://.pl
A tego bym nie chciał.
Druga sprawa to tagi, chciałbym aby user wpisywał je w formacie:
tag1, tag2, tag3, tag4
I teraz:
- Rozdzielenie je to jak podejrzewam trzeba użyć explode(). Problem jednak w tym, że trzeba zabezpieczyć się przed ew. błędem typu:
tag1,tag2,tag3,tag4
i nie wiem jak to zrobić.
Kolejna sprawa to określenie ram ilości tagów, powiedzmy minimum 3, ale maksymalnie 8.
Z góry dzięki za wskazówki!
Regis [ ]
Wszystkie Twoje problemy rozwiązują preg_match(), preg_split() i odpowiednie wyrażenia regularne. Z resztą funkcji z przedrostkiem "preg" też warto się zapoznać. Wyrażenia regularne kopią tyłek - zawsze będę to powtarzał.
yo dawg [ 1979 ]
Uzyłem preg_match() substr_count(). Przy walidacji url, sprawdziłem tez czy url ma kropkę :)
Aczkolwiek w manualu nie było napisane, aby szukaną frazę umieścić na zasadzie preg_match('#szukana#', $array);
yo dawg [ 1979 ]
Spróbowałem użyć for() do zrobienia tych 3 divów obok siebie i dupa, strona się wiesza i wyskakuje jakiś problem cgi. Szukałem w necie, znalazłem tylko jak zrobić dużą htmlową tabelkę, nijak mi to nie pomogło.
Inna sprawa, że za pomocą pętli while pobieram jednocześnie dane z bazy, a potem umieszczam je właśnie do tych trzech divów. Pozostaje więc kolejna sprawa, która pętla w której pętli?
yo dawg [ 1979 ]
bump
yo dawg [ 1979 ]
Zrobiłem takie coś korzystając z jquery.
$(document).ready(
function()
$('#cont2').show();
$("#lnk1").click(
function()
$("#cont2").slideUp("slow");
,
function()
$("#cont2").slideDown("normal");
);
);
No i niby działa :P Niby bo schować się schowa, ale pojawić się już - po ponownym kliknięciu - nie chce. Zna ktoś rozwiązanie?
Zapruder [ Terran Hate Machine ]
Takie szybkie pytanie - jest sobie strona w internecie, musze do niej dorobic print.css - jak w miare szybko i bezbolesnie podpiąć .css który mam na dysku, zeby mi nie ładowało tego z serwera? Oczywiście to ma być widoczne tylko dla mnie do testów, więc chodzi mi głównie o opcje którejkolwiek przeglądarki : P
Próbowałem w operze i safari używać tej opcji "użyj mojego pliku styli", ale średnio to działa :)
Tomal_P [ Legend ]
yo dawg --> A po co masz tę część kodu $('#cont2').show(); ?? Nie możesz tego zaznaczyć w stylach że na początku cont2 jest widoczne.
A co do reszty kodu wydaje się OK.
Edit: U siebie na stronce mam podobną rzecz ale z hover i działa. Zmieniłem na click i już nie działa. Później coś pokombinuje bo teraz musze iść.
Jak Ci się uda to ogarnąć to napisz.
yo dawg [ 1979 ]
Tomal, straciłem do tego cierpliwość, użyłem toggle(), dużo łatwiejsze w użyciu, tylko animacja imho gorsza ;)
Zapruder [ Terran Hate Machine ]
Toggle mozna ustawić tak, żeby korzystało z animate() :)
yo dawg [ 1979 ]
Jak? ;)
$(document).ready(
function()
$("#lnk1").click(
function()
$("#cont2").toggle("fast");
).toggle(function() $(this).text('Ukryj');,function() $(this).text('Pokaz'););
);
Zapruder [ Terran Hate Machine ]
$('#wywołanie').toggle(
function()
‹
$('#to_co_ma_sie_animowac').animate(‹width: "250"›, 1500);
›,
function()
‹
$('#to_co_ma_sie_animowac').animate(‹width: "0"›, 1500);
›);
przy czym tam gdzie jest width może być height, opacity, padding, margin, background, itd. w zasadzie cokolwiek, oddzielasz przecinkami =]
ed.
A i jak masz toggle to .click() ci nie potrzebne :)
yo dawg [ 1979 ]
Dzieki Zapruder!
Dziwna sprawa, mam taką oto funkcję:
function days_ago ($time)
‹
$day = (24 * 3600);
$difference = time() - $time;
if($difference <= $day)
‹
if ($difference < 60)
‹
echo "Dodano ".$difference." sekund temu.";
›
if ($difference >= 60 && $difference < 3600)
‹
echo "Dodano ". ceil($difference / 60)." minut temu.";
›
if ($difference >= 3600 && $difference < 86400)
‹
echo "Dodano ". ceil($difference / 3600)." godzin temu.";
›
›
if($difference > $day && $difference <= 2 * $day)
‹
echo "Dodano wczoraj";
›
if($difference > 2 * $day && $difference <= 3 * $day)
‹
echo "Dodano przedwczoraj";
›
if($difference > 3 * $day && $difference < 30 * $day)
‹
echo "Dodano ".ceil($difference / 86400 )." dni temu";
›
›
Funkcja działa, wszystko ładnie, ale gdy chce ją wyświetlić w tym miejscu (te 3 divy co pisałem o nich wyżej...) to wyswietla się w błędnym miejscu(załączam obrazek)
<?php
$j = 0;
$sql = sql("SELECT * FROM". LINK_TABLE." ORDER BY link_data LIMIT 3");
while ($row = mysql_fetch_array($sql))
‹
$tab[0] = "con1";
$tab[1] = "con2";
$tab[2] = "con3";
echo "<div id=\"".$tab[$j++]."\">
<h3><a href=\"\">".$row['link_tytul']."</a></h3>
".utnij($row['link_opis'], 120)." Dodał ".$row['link_wrzucil'].", ".days_ago($row['link_data'])."a</div>";
›
?>
Literka a umieszczona celowo by zwrócić uwagę, że wszystko inne wyświetla się popraswnie, tylko te daty :P
yo dawg [ 1979 ]
Podejrzewam, że problemem może byc to, że argumentem w tym przypadku jest tablica, a nie string. Porady?
Dell` s [ d-_-b ]
Cześć. Jestem dopiero początkującym webmasterem i mam dlatego pytanie. Chcę stworzyć własną stronkę na której bym codziennie wpisywał jakieś informacje. To nie ma być jakieś forum. Ale żeby z poziomu przeglądarki wpisywać coś tam.... Jak to zrobić? Obejdzie się bez php? Pewnie nie. Proszę o szybką odpowiedź.
pozdr.
yo dawg [ 1979 ]
Nie. Potrzebny pehap.
Dell` s [ d-_-b ]
No to jak to zrobić? Nie chce codziennie aktualizować strony na serwie. ;] Czy jak to tam się mówi.
yo dawg [ 1979 ]
No, poczytać o php, nauczyć się obslugi zmiennych globalnych $_GET, $_POST, $_SESSION, podstawowych operatorów logicznych i implementacji html w php i na odwrót :)
No i MYSQL.
yo dawg [ 1979 ]
Pomoże ktoś z tamtym?
Inna sprawa: wyciągnąłem wszystkie tagi z wpisów ostatniego tygodnia i teraz chciałbym wyswietlić te najczęściej uzywane. Jak?
Regis [ ]
[203] A wygenerowany HTML na pewno jest poprawny? Może gdzieś zamykasz przez pomyłkę jakiegoś taga? Może któraś z wcześniejszych funkcji zwraca coś źle?
[209] Robisz selecta z COUNT AS ilosc i potem GROUP BY tag, ORDER BY ilosc, np:
SELECT id_taga, COUNT(id_taga) AS ilosc FROM tagi GROUP BY id_taga ORDER BY ilosc
Dzięki temu masz tablicę id taga - ilość wystąpień
Oczywiscie przykład uproszczony - prawdopodobnie przyda się jakiś JOIN, albo i dwa, zależnie od tego jak trzymasz tagi w bazie. Do tego jakieś ograniczenia co do daty itp.
yo dawg [ 1979 ]
A wygenerowany HTML na pewno jest poprawny? Może gdzieś zamykasz przez pomyłkę jakiegoś taga? Może któraś z wcześniejszych funkcji zwraca coś źle?
Posprawdzałem, wszystko jest okej, podomykane itp. HTMLa generowałem tak jak napisałeś. Jak mówiłem, problem imho nie leży w strukturze htmla, bo jak pokazalem na obrazku, tytuł, treść, czy autor wyświetla się poprawnie. Jedynym problemem jest ta felerna data.
Z tagami jestem na tym etapie:
<?php
//tagger, najczęściej używane z X okresu
define ("ILE_TAG", 7);
define ("TAGI_Z_DATY", time() - (7 * 24 * 60 * 60));
$sql = sql("SELECT link_tagi FROM ".LINK_TABLE." WHERE link_data > \"".TAGI_Z_DATY."\" ");
while ($row=mysql_fetch_array($sql))
echo $row['link_tagi'];
?>
I wyświetla póki co tych kilka tagów z daty >= tydzień. Ale wyświetla wszystkie, bez wyjątku, powtarzające się itp. a mi zależy by pokazywało te najpopularniejsze z tygodnia - hot week tags można by rzec :P
yo dawg [ 1979 ]
Chyba wiem co było nie tak, funkcja days_ago zwracała tekst w formie echo(), a w pętli już jedno echo jest. Delikatna przeróbka i śmiga az miło! :)
echo "<div id=\"".$tab[$j++]."\">
<h3><a href=\"\">".$row['link_tytul']."</a></h3>
".utnij($row['link_opis'], 120)."<br><font size=\"1\" color=\"#bababa\">Dodał ".$row['link_wrzucil'].", ";
days_ago($row['link_data']);
echo "</font></div>";
Ale wciąż nie wiem jak rozwiązac kwestię tagów :)
Regis [ ]
Generalnie zasada jest taka, że funkcje nie powinny niczego wypisywać, tylko powinny zwracać - taki dobry zwyczaj programistyczny, ktory pozwala sobie oszczędzić problemów.
Co do tagów - w rozwiązaniu które Ci podałem takie ograniczenie sprowadza się do dodatnia w zapytaniu klauzuli LIMIT. W Twojej wersji - nie wiem. Nie mam niestety dość czasu, żeby to prześledzić, tym bardziej, że nie wiem jak wygląda baza danych. Na pewno jednak rozwiązanie, które próbujesz zastosować jest nieeleganckie i niewydajne. Znów odwołam się do dobrego zwyczaju programistycznego który mówi, że po stronie bazy danych należy robić tak dużo, jak to tylko możliwe. A w tym wypadku aż się prosi o pobranie tagów w taki sposób jak podałem - dostajesz je od razu pogrupowane, unikalne, zliczone, posortowane i w takiej ilości, w jakiej potrzebujesz. I dzieje się to nieporównywalnie szybciej, niż przy obróbce w PHP.
kajtek603 [ International Level ]
Witam :D
Może mi ktoś powiedzieć jak przesunąć ten tekst na samą górę ?
Oto kod
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
<meta name="Description" content="[ #DESCRIPTION# ]">
<meta name="Author" content="[ #AUTHOR# ]">
<meta name="Keywords" content="[ #KEYWORDS# ]">
<meta name="Generator" content="CoreEditor">
<title>[ #TITLE# ]</title>
</head>
<body BACKGROUND="tlo.gif">
<p align="center"><img src="
<table border="1" frame="" align="center" width=55% height=70% bgcolor=white cellpadding="10">
<tr>
<td width=25%></td>
<td><p align="left">Czy wiesz że?
Kupując dużą ciężką walizkę, będzie się ona ciągnąć za Tobą i przede wszystkim za środowiskiem setki lat:
wyprodukowanie wielkiej i ciężkiej walizki to więcej materiałów i półproduktów, które trzeba pozyskać
wielokrotne transportowanie dużego gabarytowo produktu wpływa na dużo większe koszty transportu
duża, ciężka i często wypakowana zbędnymi rzeczami walizka to większe zużycie paliwa w samochodzie, autobusie, samolocie czy pociągu.
to wreszcie dłuższy okres rozpadu, większe koszty utylizacji i składowania.</p></td>
<td width=25%>
</td>
</tr>
</table>
</body>
</html>
yo dawg [ 1979 ]
Miast
<p align="center"><img src="
Wklej
<p style="margin:0px;padding:0px;" align="center"><img src="
A zamiast
<td><p style="margin:0px;padding:0px;" align="left">Czy wiesz że?
Regis, dzięki. Dam znać jak cos się ruszy w tej materii :D
kajtek603 [ International Level ]
yo dawg zrobiłem tak ale nadal tekst mam na środku tabeli
yo dawg [ 1979 ]
wywal to: align="center"
kajtek603 [ International Level ]
Dałem tak i to samo jest :/
<td width=25%><p style="margin:0px;padding:0px;">Czy wiesz że?Kupując dużą ciężką walizkę, będzie się ona ciągnąć za Tobą i przede wszystkim za środowiskiem setki lat:
wyprodukowanie wielkiej i ciężkiej walizki to więcej materiałów i półproduktów, które trzeba pozyskać
wielokrotne transportowanie dużego gabarytowo produktu wpływa na dużo większe koszty transportu
duża, ciężka i często wypakowana zbędnymi rzeczami walizka to większe zużycie paliwa w samochodzie, autobusie, samolocie czy pociągu.
to wreszcie dłuższy okres rozpadu, większe koszty utylizacji i składowania.</p></td>
________________________________________________________________________________
Już mam valign="top" trzeba było wpisać :P
sinbad78 [ calm like a bomb ]
Mav - mam małe zlecenie o którym kiedyś wspominałem - klepnij do mnie na gg
yo dawg [ 1979 ]
Witam z rana. Tagger niemalże gotowy, niemalże, bo jedna rzecz nie chce zaskoczyć. Spieszę wyjaśniać:
Fragment pliku dodaj.php:
$tags = explode(" ,", $_POST['tagi']);
$n = count($tags);
for ($i=0;$i<$n; $i++)
$sql = sql ("SELECT tag_id, tag_counter FROM tags WHERE tag_name = \"".$tags[$i]."\" ");
if (mysql_num_rows($sql) > 0)
while ($row = mysql_fetch_array($sql))
$counter_new = $row['tag_counter'] + 1;
sql ("UPDATE tags SET tag_counter = \"".$counter_new."\" WHERE tag_name = \"".$tags[$i]."\" ");
echo "a";
else
$sql[$i] = sql ("INSERT INTO tags VALUES ( \"\", \"1\", \"".$tags[$i]."\", \"".time()."\" ) ");
echo "b";
echo "Znalezisko dodane do naszej bazy danych. Aktualnie znajduje się ono w poczekalni.";
Czyli ja to widzę tak:
- Pobierz zawartość $_POST['tagi'] w formie stringa [tag, tag2, tag3]
- Funkcją explode() rozbij stringa na tablicę z X elementami
- W zależności od ilości elementów X, wykonaj pętlę X razy, sprawdzającą czy poszczególny element tablicy znajduje się w bazie. Jeśli tak, zwiększamy licznik wystąpień, jeśli nie - dodajemy nowy rekord z danym tagiem. I tak z każdym tagiem.
- A wyświetlenie to już bułka z masłem
Niestety to bazy dodaje się - wbrew założeniom - cały string [tag, tag2, tag3], zamiast oddzielnie [tag] [tag2] [tag3]. gdzie tkwi błąd?
maczu [ Generaďż˝ ]
znacie jakiś prosty, darmowy i nielimitowany serwer smtp który mógłbym zainstalować pod Windows? używam free SMTP Server, ale jest limitowany do 10 maili dziennie, więc do większego testowania po prostu się nie nadaje.
Regis [ ]
A dlaczego chcesz go stawiać u siebie? Nie masz stałego dostępu do internetu podczas testowania?
Dell` s [ d-_-b ]
Ja mam takie głupie pytanie. ;] Warto uczyć się CSS czy od razu zacząć pracę z PHP? HTML już tako jako umiem. ;]
pozdr.
maczu [ Generaďż˝ ]
po prostu czasami na localhost muszę coś przetestować bez korzystania z zewnętrznych serwerów SMTP
Zapruder [ Terran Hate Machine ]
Dell` s
Bez css nie zrobisz nawet słabej strony, o porzadnej nie wspominając. I nieważne, czy chcesz być grafikiem, pracować nad frontendem, backendem, czy cokolwiek innego - html i css to podstawy, które musi znać każdy, kto ma cokolwiek do czynienia ze budową stron internetowych.
wi3dzmin [ Generaďż˝ ]
Dell -> tak jak ci powiedzieli. HTML i CSS w stopniu dobrym to jest minimum. Dopiero do tego uczysz się php. Oczywiście nie musisz być mistrzem CSS ale musisz go całkiem dobrze znać, żeby myśleć o karierze programisty php.
maczu [ Generaďż˝ ]
@Dell
Moim zdaniem na początek nie musisz znać dobrze CSS - wystarczy że wiesz że można pewne rzeczy zrobić tak a nie inaczej, że wiesz że coś takiego jest, ale niekoniecznie musisz się tym umieć posługiwać bez zaglądania do jakichś źródeł. Jeżeli chcesz się dopiero uczyć programować w PHP to, moim zdaniem, tyle wystarczy.
Nie ma się co zrażać tym, że nie umiesz CSS, JS czy potem jQuery - jeżeli ci się spodoba budowanie stron to sam będziesz dążył do tego żeby się tego wszystkiego dobrze nauczyć :)
yasiu [ Legend ]
i samo stopniowo wejdzie, to co ci bedzie potrzebne. dokumentacji w sieci sa tony, nic tylko korzystac.
z innej beczki. zaczalem sie ostatnio bawic javaFX-podoba mi sie struktura i sposob programowania. tyle tylko, ze mimo obecnosci najnowszych bibliotek, aplikacje javafx nie dzialaja mi pod przegladarkami w ubuntu. spotkal sie z tym ktos?
ejpi [ Shit Happens ]
Bawie się z php i mam taki problem:
...
<?
$i=0;
$lp=1;
while ($i < $num)
$nazwisko=mysql_result($result,$i,"imie");
$miejscowosc=mysql_result($result,$i,"adres");
$telefon=mysql_result($result,$i,"fax");
$email=mysql_result($result,$i,"malpa");
?>
<tr bgcolor="#00CC33">
<td><?php echo $lp; ?></td>
<td><a href="xxx.php?yoyo= CO TUTAJ "><?php echo $nazwisko; ?></a></td>
<td><?php echo $miejscowosc; ?></td>
<td><?php echo $telefon; ?></td>
<td><?php echo $email; ?></td>
</tr>
...
tworzy mi to listo-tabele pobieraną z mysql i chciałbym zrobić, żeby jedna kolumna w każdym wierszu była odnośnikiem po którego kliknięciu parametr z informacją o aktualnymn "i" został przesyłany do nastepnej strony...
yo dawg [ 1979 ]
Do pętli wrzuć
<td><a href="xxx.php?yoyo=<? echo $i++ ?>"><?php echo $nazwisko; ?></a></td>
Jeśli dobrze zrozumiałem.
ejpi [ Shit Happens ]
właśnie o taką prostą rzecz chodziło.. thnx:)
ejpi [ Shit Happens ]
Zna może ktoś "coś" darmowego, co by na stronie pozwalało stworzyć wykres i zachować go w jpgu/gifie/png itp. ?
maviozo [ man with a movie camera ]
super game fan [ Generaďż˝ ]
Załóżmy, że mam kilka divów ustawionych obok siebie zamkniętych w w jednym wielkim i chce, żeby ich szerokość automatycznie wypełniała cały ten duży (czyli jeśli ten wielki div ma 500px szerokości i w środku jest ich pięć, to każdy sie automatycznie ustawia na 100px). Jak to zrobić? Głowie sie i głowie, zazwyczaj używałem tabelek do takich celów...
yo dawg [ 1979 ]
W CSSie użyj parametrów width:auto; i max-width:500px;
yo dawg [ 1979 ]
Witam, mam problem: Mianowicie zauważyłem, że autologowanie działa na adresie bez www, a z www pojawia się możliwość zalogowania. WTF?
Regis [ ]
zła domena cookie?
yo dawg [ 1979 ]
Hm domena?
mam w logowaniu takie cudo
setcookie("auto", $cookie_code, time()+2592000);
natomiast ciacho sprawdzam tak:
if (isset($_COOKIE['auto']))
Więc co jest nie tak?
Zna się tu ktoś na mod_rewrite? Miałbym pewne zlecenie.
Regis [ ]
Piąty parametr.
gromusek [ keep Your secrets ]
Witam,
Jakie znacie dobre strony z szablonami www ? potrzebuje czegos prostego na allegro, cos typu : , niestety link nie dziala :(
yo dawg [ 1979 ]
[239] Co jako czwarty wstawić zatem? Mogę dać ,""?
[260] słyszałem, że monstertemple ma ciekawe szablony, ale właśnie - słyszałem :)
yo dawg [ 1979 ]
Kolejna sprawa - muszę zabezpieczyć się przed trollami - i tu moje pytanie, czy userów ze zmiennym IP lub korzystających z proxy da się definitywnie zbanować?
Wyrodnik [ Chor��y ]
Dzień dobry.
Czy możecie mi podrzucić jakiś kurs do JavaScript? Książka też może być ;)
Zaznaczam, że jestem początkujący, a chcę zrobić kilka wtyczek do FF. Chodzi mi głownie o wyciąganie ze strony pewnych wartości liczbowych. Odpowiednie ich przeliczenie. I wstawienie na stronę w dodatkowej tabeli.
Chyba dobrze to wytłumaczyłem ;)
Zapruder [ Terran Hate Machine ]
Tak żeby zacząć z suchym javascript to polecam serię jeffrey'a way'a, który bardzo łopatologicznie tłumaczy o co tam z grubsza chodzi - w linku masz 5 odcinek + podane odnosniki do poprzednich
jak już to ogarniesz, co nie powinno zająć dużo czasu, to najlepsza strona w sieci - w3schools : P
polecam się przez to przekopać, wtedy już na pewno zrobisz to co sobie tam wymyśliłeś
ale ostatecznie i tak lepiej ogarnąć jquery / mootools / prototype, które da się pojąć bez znajomości js (która jednak z pewnością pomaga)
super game fan [ Generaďż˝ ]
Mam biblioteki PHP w pliku .gz - mógłby mi ktoś powiedzieć, jak to zainstalować na zewnętrznym serwerze?
gromusek [ keep Your secrets ]
[240] Ponawiam prosbe :)
yo dawg [ 1979 ]
Bry.
Mam problem z aktualizowanie danych sql - otóż o ile problemem nie jest sama aktualiazcja, ale wybranie odpowiednich danych. Bo to jest tak:
Mam w edycji profilu powiedzmy 25 pól typu <input> I teraz chciałbym zaktualizować tylko te, które są wypełnione w profilu bo np. mam 3 pola, które odpowiadają tylko i wyłącznie za zmianę hasła, ale właśnie - chce je zaktualizować tylko wtedy gdy user te pola (stare hasło + 2x nowe hasło) wypełni.
Jak?
Valem [ Makaron Shakaron ]
Prosba do osbo ktore znaja sie na html-u
Chodzi o to ze ja sie w ogole na tym nie znam a pewnie dla informatyka to pikus. Przejde do rzeczy.
Potrzebuje zeby mi ktos zrobil tabelke jak na rysunku ---------->>>>>>
w srokowej komorce ma byc napis wyjasniajacy tematyke zdjec a w pozostalych zdjecie na ten temat. Moze byc np. o zwierzetach. Potrzebuje deklaracji ze ktos to zrobi w ciagu dwoch godzin. Mam nadzieje ze ktos pomoze. Z gory dziekuje.
EDIT
musi byc to zrobione w notatniku
yo dawg [ 1979 ]
A musi być w tabelkach? Nie lepiej oprzec to o divy?
//////////////////////////
Inna sprawa, tym razem dotycząca js:
Mam taką funkcyję:
<script language="javascript" type="text/javascript">
function podp()
pod = document.getElementById("podp");
if (pod.style.visibility == "hidden") pod.style.visibility="visible";
else pod.style.visibility="hidden";
</script>
I działa dobrze (za zadanie ma pokazywać podpowiedzi dotyczące wybranych pól w formularzu) ale niekoniecznie tak jak chcę ponieważ:
a) trzeba na nią kliknąć, nie wystarczy przejeżdżanie klawiszem tab
b) nie chowa się, gdy user odkliknie gdziekolwiek - a na tym mi zależy.
Help
/////////////////////////
Tomal_P [ Legend ]
yo dawg --> A nie można zrobić tak: użyć zdarzeń onfocus i onblur. Jak pole jest w użyciu to wyświetl podpowiedź, jak je opuszczasz to ukryj.
yo dawg [ 1979 ]
Mały problem z funkcjami zliczającymi głosy:
function zlicz_glosy_dodatnie($link_id)
‹
$sql = sql ("SELECT vote_id FROM lubb_linki_votes WHERE link_id = ".$link_id." AND vote_value = 1" );
return mysql_num_rows($sql);
›
function zlicz_glosy_ujemne($link_id)
‹
$sql = sql ("SELECT vote_id FROM lubb_linki_votes WHERE link_id = ".$link_id." AND vote_value = 2" );
return mysql_num_rows($sql);
›
function zlicz_glosy($link_id)
‹
$zlicz = (zlicz_glosy_dodatnie($link_id) - zlicz_glosy_ujemnie($link_id));
return $zlicz;
›
gdy zwracam wartość funkcji
zlicz_glosy($link_id)
wywala mi błąd:
Fatal error: Call to undefined function zlicz_glosy_ujemnie() in /functions.php on line 17
wtf?
edit/
Rozwiązane - literówka sie wkradła w zlicz_glosy_ujemnie
Regis [ ]
yo dawg --> Taka moja mała uwaga od serca, przed snem: to co robisz działa, ale polecam Ci BARDZO gorąco przejrzenie jakiejś porządnej książki nt. SQL, bo Twoje zapytania są koszmarne, jeśli chodzi o budowę, efektywność i bezpieczeństwo ;) Widać, że kombinujesz, że radzisz sobie z problemami, ale warto czasem też zasięgnąć wiedzy specjalistów i nauczyć się pewnych "dobrych praktyk" programistycznych. Im mniej robisz w PHP, tym lepiej. A u Ciebie MySQL służy do wyjęcia całej masy danych (dobrze chociaż, że nie SELECT *, tylko konkretne pole, ale to "zlicz_glosy" to jakiś programistyczny koszmarek ;) ), a potem "obrabiasz" to w PHP. A przecież SQL jest tak potężny, ma taką masę różnych funkcji, że aż żal tego nie wykorzystać, tym bardziej, że działa to nieporównywalnie szybciej niż PHP. Jasne - przy małych serwisikach to nie ma znaczenia, ale jeśli kiedyś przyjdzie Ci zrobić coś większego, to polegniesz przy kilkudziesięciu, max. kilkuset userach jednocześnie on-line. No i to wstawianie wartości do zapytań... Jeśli link_id jest pobierane z adresu, to aż prosi się o SQL injection ;)
Tomal_P [ Legend ]
Mam problem z PHP.
Sprawdzam formularz w innym pliku niż on się znajduje i chciałem zrobić, że jak coś jest źle wypełnione to cofnąć do formularza i tylko poprawić te miejsca w których jest błąd, a reszta żeby była tak jak zostało wpisane wcześniej.
Jak to zrobić w PHP?
Mam nadzieję że jasno opisałem problem.
maviozo [ man with a movie camera ]
Może po prostu formularz sprawdzający poprawność danych zawiera:
if ($zle)‹
/* opcjonalne zapisanie ciastek/sesji */
header("Location: /formularz");
exit;
›
który przekierowuje stronę na /formularz i zatrzymuje wykonywanie skryptu? Do tego można błędne dane zapisać np. w SESSION, albo COOKIE i na stronie /formularz (jeśli istnieją, bo zostały zainicjowane w sprawdzaniu) je wyświetlić?
Hakim [ Generaďż˝ ]
Witam.
Mam takie pytanko. Mam domenę XXXX.pl i mam jej literówkę XXXZ.pl.
Co umieścić w pliku index pod literówką, by przekierowała ona na XXXX.pl i zostawał w logach odwiedzin ślad, że to przekierowanie jest z domeny literówki?
Innymi słowy: ktoś wpisuje z ręki XXXZ.pl (popełnia błąd pisząc adres z klawiatury) -> wchodzi na stronę literówkę, która natychmiast przenosi go na poprawną stronę -> w logach odwiedzin strony XXXX.pl mam informację, że ten user przyszedł z błędnie wpisanego adresu mojej domeny (czyli literówka jako referrer).
Idzie tak?
yo dawg [ 1979 ]
Regis dzięki za radę, użyłem count i dodałem intval, już jest lepiej ;)
maviozo [ man with a movie camera ]
Mam być może dziwne pytanie i jeśli poruszam kwestię zamkniętą, odpowiedź proszę na maila:P
Załóżmy, że zakładam serwis, którego zadaniem jest trzymanie jakichś poufnych informacji użytkowników. Wiadomo, że hasła dostępu są jakoś tam szyfrowane (choćby md5,sha1). Czy pozostałe informacje powinny również być szyfrowane? Powinenem blokować dostęp do nich każdemu poza danym użytkownikiem? Chodzi mi o techniczną stronę projektu, bo wiadomo, że usera to nie obchodzi, poza tym, że jego informacje muszą pozostać dla innych niedostępne. Ale co z adminem itp? W sumie pytanie dotyczy też netykiety, przepisów..
Pojęcia nie mam, pytam tak o, poniekąd choćby z ciekawości;)
yo dawg [ 1979 ]
Imho szyfrowanie jest zbędne, przecież Ty te dane tylko gromadzisz.
Ja z kolei gdzieś czytałem, że np. czytanie przez phpmyadmina prywatnych wiadomości userów jest niezgodne z prawem. Prawda toto?
BossManPL [ Generaďż˝ ]
Nie wiem czy dobrze pamiętam, ale algorytmy szyfrujące działają tylko w jedną stronę, więc jeśli zakodujesz np. treść artykułu o samochodach skryptem md5, sha1, czy którymkolwiek innym to nie będzie możliwości odwrócenia operacji.
maviozo [ man with a movie camera ]
no shit sherlock!:P
sha czy md5 przecież służą do haseł, a nie "całej reszty". Przeczytaj uważnie co napisałem.
To pytanie nie jest czysto techniczne, a raczej teoretyczne, choć każda sensowna odpowiedź mile widziana;)
Regis [ ]
algorytmy szyfrujące działają tylko w jedną stronę
Bullshit. Algorytmy szyfrujące są z definicji dwukierunkowe, chyba, że zaznaczysz wyraźnie, że chodzi o szyfr jednokierunkowy. Algorytmy hashujące (tj. szyfry jednokierunkowe) nie są.
[257] Szeroki temat - zależy jak bardzo są poufne te dane. Ale generalnie nie spotkałem się z szyfrowaniem takich "typowych" danych. Jak ktoś Ci się włamie na serwer, to i tak weźmie co będzie chciał, bo skoro coś szyfrujesz, to musisz wiedzieć jak to zdeszyfrować, a to znaczy, że gdzieś trzymasz jakiś klucz. Jeśli włamie się do samej bazy, to też może sobie poradzić. Chyba, że np. mówimy o serwisie, który trzyma hasła userów do innych serwisów - wtedy ich szyfrowanie jest oczywiście wskazane, chociaż nie daje gwarancji bezpieczeństwa - w takich sytuacjach warto pomyśleć o zabezpieczeniach na poziomie infrastruktury - tj. np. wydzielenie tych danych na osobnym serwerze i odpowiednie zabezpieczenie dostępu do niego.
maviozo [ man with a movie camera ]
Regis->udzielasz jakichś "korepetycji"? Mam kilka pytań "teoretyczno-praktycznych" odnośnie bardziej filozofii niż zagadnień czysto technicznych. Czy masz na siebie jakiś namiar czy coś takiego - chciałbym te sprawy omówić płynniej i poza forum.
Jak możesz i masz ochotę, napisz na maviozo at poczta onet pl
Regis [ ]
maviozo --> W chwili obecnej jestem zarobiony po uszy, bo w robocie zostałem przerzucony do nowych projektów, prócz tego kończy mi się czas na pisanie magisterki, mam parę zobowiązań związanych z moją działalnością w pewnej OPP, a do kompletu w międzyczasie startuję w pewnych zawodach programistycznych, więc niestety nie mogę pomóc.
Ale jeśli będziesz zainteresowany, to liczę, że w okolicach połowy czerwca wrócę do "normalnego" życia - przypomnij się, postaram się pomóc ;)
Joshua1990 [ BettingExpert ]
Hej,
Mam pytanie czy da się jakoś sczytać dane ze strony jak np. ta:
Z prawej strony są tabelki z różnymi informacjami, które potrzebuje zapisywać, ale w samym źródle strony są niewidoczne...
Dzięki :)
yo dawg [ 1979 ]
cURLem :P
maviozo [ man with a movie camera ]
Ostatnio szukałem pewnego skryptu php do prostej sprawy. Podaję jeden argument a ona zwraca obliczoną wartość (konkretnie jeden string). Jednak szkopuł tkwi w tym, że ktoś w tym celu napisał klasę.
Pytanie brzmi: w czym przeważa stosowanie klas od funkcji w takich 'banalnych' sprawach? Bez powodu gość nie zadawałby sobie trudu:) Szczerze się przyznam, że klas nigdy w php nie stosowałem, bo nie czułem takiej potrzeby.
legrooch [ MPO Squad Member ]
1) Macie do polecenia jakieś tutoriale HTMLowe na tworzenie stron? Najchętniej dla wersji 5? :)
Ostatni raz, jak robiłem czystego HTMLa rządziły jeszcze ramki itd.
Teraz się działa na divach, prawda?
2) Dobry tutorial dla zerowej osoby w Photoshopie na robienie template'ów witryn poproszę :) Powód i cel jak powyżej :)
yo dawg [ 1979 ]
1) htpp://kurshtml.boo.pl . Tak, teraz strony robi się w oparciu o <div>.
2) Ale co Ci z tutoriali? Niewiele z nich wyciągniesz - niewiele się nauczysz. Ważna moim zdaniem jest obserwacja i analiza dzieł profesjonalistów, tak aby załapac elementy charakterystyczne, aktualne trendy w projektowaniu itp. i umieć zastosować je w praktyce. Video-tuty to tylko strata czasu.
maczu [ Generaďż˝ ]
@legrooch
w temacie "obserwacja i analiza dzieł profesjonalistów" polecam gazetkę ComputerArts
maviozo [ man with a movie camera ]
Hej:)
Mam sobie stronkę, która łączy się z bazą mysql. Jak wiadomo, w źródle php jest wszystko czego potrzeba. Jest tam nazwa i hasło takie samo, jak dostępu do phpmyadmina. Ponieważ korzystam z tego nie na własnej instalacji, tylko na serwerach, nazwijmy to, preinstalowanych;p
Moje pytanie brzmi: czy powinienem próbować utworzyć użytkownika z ograniczonymi prawami?
Chciałem zrobić jakiegoś web_user, który mógłby tylko select,insert,update. Wtedy, nawet jeśli ktoś 'wejdzie', nie zrobi aż takiego burdelu, jaki może zrobić z rootem. Nie mogę tego zrobić zapytaniem create user (bo tak), ale można próbować cisnąć usługodawcę, o ile to ma sens;)
A może to taka moja paranoja? W sumie jeszcze nie miałem takiej sytuacji, aczkolwiek chcę, na ile się da, ograniczyć ryzyko (o ile to go w ogóle ograniczy;) imo tak, bo hasła roota nigdzie wtedy na www nie ma)
COBRA-COBRETTI [ Generaďż˝ ]
Mam takie proste pytania chyba :) Jak zrobić żeby po wpisaniu adresu wyświetlała się strona? Teraz trzeba wpisać
Właśnie przerobiłem ja conieco dodając skrypty php bo wcześniej była bez php i z index.html działała po wpisaniu samego adresu.
Drugi problem to jak zrobić żeby po przejściu na jakąś podstronę, przycisk pozostawał podświetlony na czerwono? W htmlu to nie był problem ale z php jestem zielony :)
maczu [ Generaďż˝ ]
@maviozo
to o czym piszesz (żeby user miał tylko select, instert, update) to bardzo dobre założenie projektowe, nie żadna paranoja. Niestety jeżeli korzystasz z darmowych serwerów SQL prawdopodobnie masz tylko jednego użytkownika na bazę. Jeżeli nie - tworzysz nowego użytkownika (polecenie CREATE USER) i nadawanie mu odpowiednich uprawnień (polecenie GRANT)
polecam manuala
@COBRA-COBRETTI
mi się wyświetla, więc chyba już działa. Domyślnie serwer www powinien czytać pliki zamieszczone w katalogu głównym w kolejności w jakiej to zdefiniował admin, np:
index.php
index.html
index.asp
itd.
a co do podświetlania przycisków - to sprawdzasz na jakiej aktualnie jesteś stronie i dodajesz do odpowiedniego linka odpowiednią klasę wyróżniającą dany przycisk, czyli w twoim przypadku będzie to jakoś tak:
<?php
$aktualna_strona = $_GET['id'];
if ($aktualna_strona == 'o-nas')
?>
<a class="selected" href="#">O nas</a>
<?php
else
?>
<a href="#">O nas</a>
<?php ?>
tomazzi [ Flash YD ]
Tak sobie postanowiłem że zacznę się uczyć PHP. Od czego zacząć?
Ogólne pojęcie o programowaniu mam, o działaniu stron również.
maviozo [ man with a movie camera ]
Najskuteczniej, to chyba po prostu dążyć do jakiegoś wybranego celu i rozwiązywać napotkane problemy.. a jak nie to książka do ręki i kolejne przykłady. Generalnie php wchodzi szybko, tym szybciej, jeśli masz jakieś pojęcie. Składnia niemal standardowa, parę kruczków plus nauka podstawowych przydatnych funkcji, do tego skrót do który warto zawsze mieć, i jedziesz:)
Można jeszcze próbować szukać gotowych skryptów i wgryzać się "co z czego i dlaczego".
pao13(grecja) [ Silkroad Fan ]
Rok temu napisałem skrypt do typowania zakładów bukmacherskich. Wtedy użyłeyłm pare gotowych funkcji do łączenia się z bazą danych. Teraz postanowiłem, że opanuję funkcje, klasy. Zacząłem tworzyc proste funkcje typu:
function calculation ($num1, $num2, $op)
switch($op)
case "+";
$total = $num1 + $num2;
return $total;
break;
itd.
Teraz pare słów jak działa ten skrypt. Pan Kowalski podaje swój zakład na spotkanie Polska - Brazylia 1 (wygrana gospodarzy) po kursie 1.20 . Spotkanie zakończyło się wygraną Polski, więc loguję się do panelu administracyjnego i podaję wynik 1-0 i klikam np. rozlicz zakład.
Następnie jest wykonywany kod:
$query = $db->fetch_array("SELECT * FROM spotkanie WHERE spr=0 AND game_id='$game_id'");
$query2 = $db->fetch_array("SELECT * FROM konto WHERE user_id='$user_id'");
następnie sprawdza w bazie danych:
if ($query['zakład'] == '1')
if ($home_score > $away_score)
$profit_2 = $stake * $odd;
$games2 = $query2['m'] + '1';
$won2 = $query2['w'] + '1';
$lost2 = $query2['p'];
else
$profit_2 -= $stake;
$games2 = $query2['m'] + '1';
$won2 = $query2['w'];
$lost2 = $query2['p'] + '1';
elseif itd itd. w zależności co zagrał Pan kowalski (1,x,2 i inne rodzaje zakładów).
Ten przykład pokazuje w przypadku gdy pan Kowalski zagrał na wygraną gospodarzy co ma nastąpic. Problem polega na tym, że chcę to wszystko wrzucic do funkcji. Od czego zacząc?
TyTuSPL [ No-one ever really dies ]
Witajcie moi drodzy. Mam nadzieję, że mi pomożecie, bo jak sądzę będzie to dla Was "pikuś" a dla mnie php póki co jest po za możliwości, a mam pewnego rodzaju zadanie na informatyce.
Chodzi o stworzenie skryptu który dla podanych wartości obliczy i wyświetli pole powierzchni i objętość graniastosłupa prawidłowego sześciokątnego.
Napisałem formularz no i możecie pomóc mi w stworzeniu pliku php w którym obliczone zostanie np. pole?
Z góry dzięki. Zadanie muszę wykonać na jutro...
maviozo [ man with a movie camera ]
Nie wiem z czym możesz mieć problem.
Wystarczy przeczytać o $_POST oraz...echo.
Naprawdę nic więcej nie potrzeba.
Przykładowo
<?php
if ($_POST['a']!=null)
$a=$_POST['a'];
echo 'Pole kwadratu wynosi:'.($a*$a)
?>
<form action="?" method=post>
<input type=text name=a>
<input type=submit>
</form>
Teraz rozkmiń o co lata i pisz resztę:)
COBRA-COBRETTI [ Generaďż˝ ]
maczu ---> Pierwszy problem miał związek z plikiem .htaccess bo coś tam było powpisywane i po usunięciu danych zaczęlo działać :)
Co do drugiego problemu to nie za bardzo kumam co i gdzie mam wpisać. Według tego co napisałeś to wyjdą mi 2 przyciski do każdego linka jeden z klasą selected a drugi bez, albo po prostu ja źle rozumiem jak to zrobić:)
Jakbyś mógł ty lub ktoś inny łopatologicznie wytłumaczyć, który fragment kodu gdzie wstawić w pliku index.php i co do czego służy.
Mam tym razem takie pytania czy ten skrypt:
łatwo przerobić żeby wyszukiwał również cyfry i liczby bo na razie wyszukuje tylko słowa o minimalnej długości 3 liter?
Następne pytanie jakie mnie nurtuje to jak sprawa wygląda w przypadku gdy jest bardzo dużo podstron, które wczytujemy na stronę główną w pliku index.php do jakiegoś diva lub komórki tabeli itp. Teraz mam w jednym miejscu w kodzie html wszystkie skypty inkludujące poszczególne podstrony, których jest niewiele a gdyby ich było dużo więcej to wpisywanie wszystkich w jednym pliku index.php spowodowało by że miałby on duży rozmiar. Przypuszczam że nie jest to zbyt dobre rozwiązanie chyba i lepiej by było wykorzystać jakąś bazę danych czy coś, aczkolwiek mogę się mylić:) Jak rozwiązać najlepiej ten problem?
Jeszcze jedna sprawa dotycząca słów kluczowych poszczególnych podstron wczytywanych do głównego pliku index.php, które zawierają tylko sam czysty kod html i nie ma w nich sekcji meta. Jak wstawiać słowa kluczowe na takie podstrony?
yo dawg [ 1979 ]
Znaczniki meta dotyczą wszystkich podstron strony.
Co do includowania masz tu skrypt, z którego sam korzystam:
$get = $_GET['action'];
if (!$get)
include 'main.php';
else
file_exists($get.".php") ? include $get.".php" : include "404.php";
jeśli nie ma zmiennej $_GET['action'] wtedy podlacza main.php, jesli np ustawimy ?action=faq podlaczy się plik faq.php etc.
COBRA-COBRETTI [ Generaďż˝ ]
Domyślam się że słowa kluczowe zawarte w sekcji meta pliku index.php dotyczą całego serwisu ale jeśli podstron są dziesiątki albo setki o różnej tematyce to wydaje mi się że chyba nie bardzo można umieścić parę tysięcy słów kluczowych w jednym pliku index.php :)
A z tym kodem to coś jarzę ale nie wiem czy dobrze :)
Rozumiem że wstawiam ten kod w pliku index.php w miejscu gdzie mają być wczytywane dane z innych plików np:
<div id="DANE">
$get = $_GET['action'];
if (!$get)
‹
include 'strona-glowna.php';
›
else
‹
file_exists($get.".php") ? include $get.".php" : include "404.php";
›
</div>
i kod ten automatycznie wczyta plik strona-glowna.php a gdy chcemy wczytać inny plik w to miejsce np. o-nas.php to wstawiamy np taki kod:
<a href="index.php?action=o-nas"><img src="images/o-nas.png" /></a>
W dalszym ciągu poszukuję rozwiązań na pytania z postów 271 i 278
maviozo [ man with a movie camera ]
Tworzysz sobie tablicę strony w mysql z kolumnami
keywords, opis, tresc, alias, include
i potem pobierasz alias z get, porownujesz z wynikami
"
select * from strony where alias=`".$get."`"
i generujesz. Można też dać że jeśli nie ma wyniku, inkludowana jest pusta strona (404). Resztę wierszy "keywords, opis" wklejasz w znaczniki meta
<meta name="description" content="<?=$wiesz['opis']?>">
itd.
wiresz include zawiera nazwy plików php (html, cokolwiek) ktora wstawiana jest w content.
legrooch [ MPO Squad Member ]
COBRA-COBRETTI ==> Nie do końca, bo Getem musisz wskazać, który parametr chcesz wybrać.
Po to masz w 279 pokazówkę z $_GET['action']
?action=faq
yo dawg [ 1979 ]
COBRA-COBRETTI, maviozo wytłumaczył Ci jak zrobić myk z linkami, jeśli chodzi o nieszczęsny adres z index.php i bez na końcu to odsyłam do kursów mod_rewrite :).
maviozo, pierwszy raz spotykam się z takim systemem keywordsów. Poprawia to w jakiś sposób wydajność indeksowania, pozycjonowania takie kluczowanie każdej strony z osobna? Jakiś lincz do artykułu lub coś?
yo dawg [ 1979 ]
I w ramach załącznika wklejam swój skrypt, z którym nieco się swojego czasu męczyłem, prosiłem nawet o pomoc w tym wątku, ale mało tu speców od przypisywania adresów :P. Może komus się przyda :P.
Plik usuwa zbędny IMHO 'www' z adresu, automatycznie przekierowywuje z /index.php /index.htm /index.html na / oraz konwertuje linki na przyjazną formę (ze sleszami i bez).
Plik .htaccess:
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %HTTP_HOST ^example.com [NC]
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_URI !(.*)/$
RewriteRule ^([a-z0-9-_]+)$ [R=301]
RewriteRule ^index.(php|html|htm)$ / [R=301,L]
RewriteRule ^([a-z0-9-_]+)/index.(php|html|htm)$ /$1/ [R=301,L]
RewriteCond %HTTP_HOST ^www.example.com(.*) [NC]
RewriteRule ^(.*)$ [R=301,L]
RewriteRule ^przykladowa/?$ /?action=przykladowa [QSA,L]
Uwaga, skrypt wymaga ustawienia w sekcji <body> znacznika <base> w formie
<base href=" />
Oprócz tego odnośniki do obrazków w CSS powinny być w formie bezwzględnej:
background-image:url('../images/obrazek1.png');
maviozo [ man with a movie camera ]
Oprócz tego odnośniki do obrazków w CSS powinny być w formie bezwzględnej:
background-image:url('../images/obrazek1.png');
To jest właśnie forma względna :)
yo dawg [ 1979 ]
No cuda kerwa, cuda na kiju.
Mam sprawdzanie na wejściu na stronę czy jest ciastko z hashem. jak jest, to autologujemy, tworzymy sesję itp.
No to loguję się, zaznaczam auto logowanie, po czym bez wylogowywania wyłączam przeglądarkę. Ponownie ją otwieram, wchodzę na stronę i jestem wylogowany. Wchodzę do działu, do którego trzeba byc zalogowanym, nie działa. Wchodzę więc w dzział logowania i sru - nagle tworzy się cała sesja (bez wpisywania loginu i hasła) i JESTEM zalogowany!
Co jest do cholery?
Regis [ ]
[286] Zapewne błąd programistyczny - robisz w sekcji odpowiedzialnej za logowanie coś, czego nie robisz gdzie indziej - np. session_start() albo coś w tym typie ;)
yo dawg [ 1979 ]
Mozna jaśniej? Bo kurwicy dostaje...
maviozo [ man with a movie camera ]
Na podsttawie dostarczonych materiałów mogę wywnioskować: Zjebałeś gdzieś coś.
Prześledź kod na stronie, na której autologowanie nie działa i porównaj z tą, na której działa. Zapewne czegoś brakuje. Tak po prostu.
yo dawg [ 1979 ]
Fajno, problemem były zle ustawione pathy. Tylko teraz nie moge się, kurwancka wylogować, ba, nic, że usuwam ciastko i sesję na pierdyliard różnych sposobów, po kliknięciu wyloguj i powrotu na index.php skrypt wciąż wykrywa ciastko lub sesję, heh. I tak w koło kurwa macieju.
unset($_COOKIE['lubbipl']);
session_destroy();
echo 'Zostałeś pomyślnie wylogowany';
header("Location: ".PAGE_URL); /* Redirect browser */
exit;
yo dawg [ 1979 ]
Dobra, bangla, jak się okazało mod_rewrite i COOKIES to mieszanka nieco wybuchowa. Każdy set czy unset cookie wymaga podania patha z uwagi na przepisywanie adresów.
yo dawg [ 1979 ]
Czy da się i opłaca blokować stronę dla konkretnej przeglądarki?
Tomal_P [ Legend ]
Mam problem ze skryptem do tworzenia miniatur.
Tu jest jego kod -->
Wszystko działa dobrze, ale tylko z małymi rozmiarami zdjęć około 500 kB, a już z powyżej 1MB nie działa.
Edit: Może coś muszę zmienić w pliku php.ini , ale ja na tym aż tak dobrze się nie znam.
grompablo [ Ocaleniec ]
jakie książki polecacie na tematy:
- c# i .net
- e-commerce i inne internetowe biznesy
- tworzenie sklepów internetowych ( btw. tworzyć od podstaw w php czy sprzedawać w pół gotowe ?)
oraz jakie macie linki na temat najnowszych trendów projektowania www.
www.e-grafka.pl <-- coś tam się staram powoli
yo dawg [ 1979 ]
Sprawe już poruszałem w grudniu 09, ale zgubiłem gdzies działający skrypt :P
Wywalam userów offline, przy każdorazowym refreshu strony.
sql("DELETE FROM online WHERE online_time < (NOW() - INTERVAL 5 MINUTE)");
Niestety kasuje wszystkich bez wyjątku, a ja chce żeby tylko tych, którzy są niekatywni przez 5 minut i więcej :/
halp
maviozo [ man with a movie camera ]
A nie znak > ?
Regis [ ]
[294] "Pro C# 2008 and the .NET 3.5 Platform", A. Troelsen.
maviozo [ man with a movie camera ]
Czy coś takiego: substr(md5(time()),0,10) zapewnia absolutną unikalność? Chcę w ten sposób generować "token" - swoiste ID, które będzie potem odwołaniem do obiektów. Przykładowy efekt: 6e023c8b89
Regis [ ]
Żadne wykorzystanie md5 nie gwarantuje Ci unikalności, a już na pewno nie obcięcie go do 10 znaków. O ile jeszcze przy 32 znakowym md5 można uznać, że 16^32 możliwych kombinacji zapewnia unikalność na potrzeby 99% zastosowań (szansa kolizji jest minimalna, ale fakt, że opierają się na nich pewne techniki ataków łamiących hasła wyraźnie mówi o tym, że nie aż tak rzadkie, by móc je kompletnie zignorować), o tyle wycięcie pierwszych 10 znaków pozostawia raptem 16^10 kombinacji, a to już wcale nie tak dużo. Przy okazji - w ogóle proponuję zrezygnować z md5 na rzecz sha1.
maviozo [ man with a movie camera ]
Do takiego zastosowania wydawało mi się niepotrzebne stosowanie sha1, zapewne niczego nie zmieni. Chodzi w zasadzie o pseudolosowy zestaw znaków i żeby się nie powtarzało bez sprawdzania, czy taki ciąg już istnieje. Ale skoro może się zdarzyć, to pewnie jednak przed dodaniem tokena sprawdzę selectem czy taki już jest..
Tomal_P [ Legend ]
[293] ???
Regis [ ]
[300] Miałem raczej na myśli ogólną sugestię zastąpienia md5 za pomocą sha1 - niezależnie od tego w jakim celu hashowanie jest potrzebne ;) A do generowania "unikalnych" ID ja zwykle używałem sha1 z odpowiednio dużych (lub kilku "sklejonych ze sobą"), ew. timestampa sklejonego z liczbą losową) liczb losowych ;)
pao13(grecja) [ Silkroad Fan ]
Nie rozumiem gdzie mam blad?
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
a kod wyglada tak :
<?
ob_start();
include('db.php');
include('classes/db_class.php');
$DB = new mysql();
$connection = $DB->Connect($dbhost, $dbuser, $dbpass, $dbname);
//Check to see if the admin is logged in or not.
$sql = "SELECT * from `".$dbpre."admin` WHERE `id`=".$_COOKIE[id];
$logged = $DB->Query($sql);
$logged = $DB->Fetch($logged);
?>
.$dbpre. to jest prefix tabel.
Regis [ ]
Id z cookie jest liczbowe? Zrob sobie var_dump tego zapytania i jak juz bedzie 'w calosci', to zobacz co z nim nie tak - to ułatwia sprawę.
grompablo [ Ocaleniec ]
294 nikt z was nie uczył się z książek ?
to podajcie dobre linki
pao13(grecja) [ Silkroad Fan ]
Regis --- > Miałem śmieszny błąd. Dzięki za zainteresowanie się moim problemem.
Poprawne:
$sql = "SELECT * from `".$dbpre."admin` WHERE `id`='.$_COOKIE[id]'";
grompablo -> ja nie, wszystko z inetu.
maviozo [ man with a movie camera ]
Pytanie z mysql-a. na pewno proste, ale chwilowo nie mam czasu na szukanie rozwiązania. Jesli ktoś zechce poświęcić chwilę, będę bardzo wdzięczny.
Są dwie tabele. Na przykład lista i adres.
Na liście mamy:
id|imie
1|Karol
2|Marek
w adresach:
id|ulica
1|Błotna
2|Ziemniaczana
1|Zielona
chcę wybierać z adresów kolumny ale wg zapytań po imionach. Gdyby to były dwa zapytania, sprawa byłaby prosta
select id from lista where imie='Karol';
potem mam $id i
select ulica from adres where id=$id;
w tym wypadku mają być dwa wyniki (błotna i zielona)
jak zrobić to samo jednym zapytaniem?
[ed]
yasiu->
rozumiem, że to uproszczenie :)
tak, chciałem tylko pokazać o co mi chodzi, docelowe tabele w ogóle mają wszystko inaczej, ale sam sposób działania ten skrót prezentuje.
Pozostałym już dziękuję - to zawęża bardzo obszar poszukiwań, jeśli już wiem czego się 'przyczepić' :)
yasiu [ Legend ]
zmień w ogóle opis tego, bo jakoś gryzie mnie w oczy tabela z powtarzającymi się id... ale rozumiem, że to uproszczenie :)
nie mam tu sqla... znaczy mam, ale nie mam żadnych tabel które mógłbym sprawdzić a cały kod który tworzyłem musiałem zostawić u poprzedniego pracodawcy :/... poczytaj sobie o JOIN i jego odmianach, bo to tym się robi bardzo prosto. szczegółów nie pamiętam, a zanim ktoś kto się zna odpowie, zapewne sam znajdziesz rozwiązanie :)
legrooch [ MPO Squad Member ]
grompablo ==> Książka podana przez Regisa jest ok. Ja od siebie mogę polecić produkcje Wroxa i MS Press.
A uczyłem się NETu pogłębiając wiedzę książkami. Czasem ciekawe przypadki użycia się trafiają.
pao13(grecja) [ Silkroad Fan ]
maviozo-->
Nie sprawdzalem ale poczytaj o LEFT JOIN
$zapytanie = "SELECT a.imie, b.id FROM lista AS a LEFT JOIN adres AS b ON a.imie=b.ulica";
legrooch [ MPO Squad Member ]
maviozo ==> w skrócie:
I trzy działy poniżej :)
maviozo [ man with a movie camera ]
Korzystając z obecności speców:>
1) nie ma w mysql odpowiednika bool. phpmyadmin sugeruje stosować tinyint. ale tak mi teraz przyszło do głowy - nie prościej stosować char(1) ? Planuję tabele, które mogą zawierać co najmniej po 3 kolumny takiego typu, a wierszy może być bardzo dużo. Nie wiem jak bardzo to wszystko wpłynie na wydajność..
2) stosowanie auto_increment. Teoretycznie dodając wiersz, mam jedno z autoincrement. Jak zczytać tę wartość bezpośrednio po dodaniu? Trzeba po prostu walnąć zapytanie, czy jest jakiś sprytniejszy sposób? I druga sprawa - resetowanie licznika, da się jakoś zresetować licznik dla każdego pola? (albo przestawić do tyłu)
wi3dzmin [ Generaďż˝ ]
maviozo -> lepiej stosować tinyint(1). Co dane liczbowe to dane liczbowe, ewentualne obliczenia są pewniejsze i chyba działa to szybciej.
wartość dodanego rekordu można odczytać albo za pomocą SQL (oczywiście nie mówię tu o innym zapytaniu, oddzielne zapytanie może się spóźnić i zwrócić ci inne ID). PHP ma funkcję, która zwraca ostatnio wstawione ID.
Co rozumiesz przez restartowanie pola?
autoincrementa nie restartuj bo to ryzyko niespójności danych, jeżeli chcesz wyczyścić tabelę użyj truncate. Jeżeli chcesz ustawić wartość jakiegoś pola to
UPDATE tabela SET pole = 0 WHERE id = 1
maviozo [ man with a movie camera ]
Hyh, nie wiem dlaczego ubzdurałem sobie, że phpmyadmin zmienia tinyint zawsze na tinyint(3), dlatego w ogóle to pytanie. Dzięki za zmuszenie mnie do ponowienia próby - przecież to oczywiste że to lepsze
yasiu [ Legend ]
są jakieś darmowe rozwiązania chatów, z moderacją i logowaniem? poszukać będę miał czas dopiero w poniedziałek, a fajnie byłoby już wiedzieć =]
yo dawg [ 1979 ]
Wpisz w googlach Ajax Chat albo Advanced Ajax Chat etc.
maviozo [ man with a movie camera ]
Znowu mysql. Czy możliwe jest utworzenie zapytania UPDATE, dla kilku wierszy? Chcę zmodyfikować trzy kolumny w trzech wierszach. Czy musi to być po prostu pętla for i 3x wywołanie zapytania update, czy można to zrobić jednym, dłuższym zapytaniem? Z przykładu, który znalazłem w necie wynika, że jednak pętla, ale zapytać nie zaszkodzi.
legrooch [ MPO Squad Member ]
A czemu nie możesz wy-WHERE-ować odpowiednio zapytania? Te trzy wiersze muszą dla Ciebie coś mieć istotnego.
maviozo [ man with a movie camera ]
Chyba nie rozumiem, czy Ty mi odpowiedziałeś ale nie skumałem, czy Ty nie zrozumiałeś:P
Tam i tak będzie warunek where.
Inny przykład.
Mamy "macierz" 3x3. Chcę w jednym zapytaniu zmodyfikować [1][1], [1][3] i [3][2].
No i w dwóch zapytaniach byłoby to
UPDATE macierz SET x1 = 'A',x3='B' WHERE y=1;
UPDATE macierz SET x2='C' WHERE y=3;
Oczywiście docelowa tabela jest bardziej złożona, jednak wydaje mi się, że ten przykład jako-tako oddaje jej sens. Aczkolwiek ciągle głęboko myślę, jak temat ugryźć.
Regis [ ]
Jeśli mówimy dosłownie o macierzy, to ja bym ją trzymał "płasko" - znacznie ułatwi to operowanie na niej i ew. rozbudowę. Co więcej - nie musimy trzymać pustych elementów. Tzn.:
Majac np. macierz:
0 1
3 0
Trzymam w bazie:
x y value
0 1 1
1 0 3
maviozo [ man with a movie camera ]
Regis->tak zamierzałem, ale główny problem zostaje ten sam: jak jednocześnie zmienić więcej niż jeden wiersz za pomocą jednego zapytania sql..
wi3dzmin [ Generaďż˝ ]
maviozo -> to bardzo proste.
UPDATE tabela SET pole = wartosc WHERE id = 1 OR id = 2 OR id =3 OR type = 'cos'
ale jeżeli chcesz każdemu nadać inną wartość to raczej musisz zrobić oddzielnymi zapytaniami
maviozo [ man with a movie camera ]
Właśnie muszą być różne..tak się obawiałem, że trzeba oddzielne zapytania.. a to może stanowić pewien problem..
Regis [ ]
Twój przykład nie wskazywał na taki zamiar, stąd moja sugestia ;) A jeśli chcesz tam wpisywać różne wartości, to jednym zapytaniem tego nie zrobisz.
Czemu oddzielne zapytania to problem?
ejpi [ Shit Happens ]
hmm małe pytanie z css.. mam dwa DIVy poziomo obok siebie. width na 50%. z tego co widze height na 100% nie działa, ale chciałbym chociaż zrobić coś, aby po zwiększaniu zawartości DIVa prawego lub lewego jego sąsiad również zwiększał wysokość, jak by można do tego podejść?
Asmodeusz [ Legend ]
O well widze ze bede musial sie tutaj zapytac :)
Mniej-wiecej budowa mojej strony:
index.php w ktorym mam include: login_menu.php (gdyz login_menu pojawia sie na kolejnych podstronach, wiec moge wklejac go includem).
W login mam:
if(isset($_SESSION['zalogowany'])) ‹ ?>
<form method="POST" action="connection.php">
<input type="submit" value="Wyloguj" name="wyloguj" />
</form> (przesyla $_POST['wyloguj'] do connection php.
<?php
›
else
‹?>
<form method="POST" action="connection.php">
<input type="text" name="login"/>
<input type="password" name="haslo"/>
<input type="submit" value="Wyslij" name="wyslij" />
</form> (przesyla $_POST['wyslij'] oraz login i pass)
connection.php (czyli plik logowania):
uzywam isset aby sprawdzic co zostalo przyslane :
if (isset($_POST['wyloguj'])) ‹
$user1->wylogujUzytkownika();›
else ‹
if(isset($_SESSION['zalogowany'])) ‹
$user1->zalogujUzytkownika();›
›
I teraz pytanie. Gdzie prawidlowo powinienem utworzyc obiekt $user1 = new Uzytkownik (klasa Uzytkownik zawiera funkcje logowania/wylogowania i kilka innych)?
Jak na razie mam to w connect.php na poczatku, ale z tego co widze jak tylko wychodze z connect.php obiekt znika. Czy powinienem wtedy utworzyc obiekt user1 w menu_logowania.php? czy moze bezposrednio w index.php? Tylko jak wtedy utrzymac obiekt jak np, przeskocze z index.php na strona1.php?
Aha powinienem dodac ze connect.php zaraz po wykonaniu instrukcji zaloguj/wyloguj od razu robi redirecta do poprzedniej strony (czyli index.php czy strona1.php itd).
Regis [ ]
Trzymaj go w sesji.
Asmodeusz [ Legend ]
Ahhh nie wiedzialem ze mozna uchwyt do obiektu trzymac w sesji. Juz znalazlem, dzieki.
yo dawg [ 1979 ]
ejpi, umieść te dwa w jednym divie.
ejpi [ Shit Happens ]
yo dawg --> ale do tego dochodzi problem taki, że jeden div jest lewa strona a drugi prawa, zaladowanie ich w jednego diva nie pozwoli np. na to zeby lewa strona byla czerwona a prawa niebieska.. pojawia sie rowniez problem w IE gdyz tego prawego diva wrzuca pod spod lewego a nie obok..
maviozo [ man with a movie camera ]
kocham IE! (akurat tutaj 7)
"wyjątek przerzucony i nie wyłapany"
W T F.
mam sobie skrypt do przesuwania wierszy w tabelach. Na "gołej stronie" testowej działa dobrze, na stronie ubranej w pozostałe funkcjonalności i style wysypuje się błąd.
Jak dość do tego, gdzie leży przyczyna, skoro informacje NIJAK nie mówią, gdzie go szukać. Podaje mi wiersz i znak błędu z czapy, jako adres podaje nie plik js tylko dokumentu, w którym skryptu nie ma. Patrzyłem i na tę linijkę w skrypcie i nie wskazuje nic podejrzanego, to samo w dokumencie (że jest to akurat ciało strony to już w ogóle insza inszość)
yasiu [ Legend ]
mam sobie do zrobienia dwie stronki.jedna, jednostronnicowa, druga, z kilkoma podstronami,nawigacja jednopoziomowa. . rzecz tak prosta, ze chyba nie bede zadnego frameworka zapedzal do pracy (a moze warto, co myslicie?). i pytanie moje - jakim narzedziem pociac sobie layout na divy?
yasiu [ Legend ]
i jeszcze jedno - to wstepny projekt... jak go najlepiej pociac? nigdy tego nie robilem :)
Zapruder [ Terran Hate Machine ]
Hm, ale to jest makieta użyteczności czy już gotowy szablon? Bo wygląda to nieszczególnie i elementów graficznych praktycznie nie ma, w zasadzie wszystko da się zrobić przez divy z background-color: #xxxxxx;
Ogólnie to lista z menu wyrównana do prawej kontenera, pod nią content z nagłówkiem blokowym z background-color różowym. W contencie jeszcze można wrzucić img (kółko bez tła jako .png czy .gif) cofnięte przez position: absolute w lewo, żeby wychodziło poza ten obszar tak jak na obrazku.
Jak chcesz mieć cienie to dorzuć tylko jeszcze box-shadow z odpowiednimi prefixami do każdej przeglądarki i będzie ok.
W sumie jesli będziesz chciał to mogę ci jutro zrobić taki szablon i gdzieś podesłać bo to chwila jest =]
yasiu [ Legend ]
heh, zapruder, w sumie czemu nie, zobaczylbym jak to ma wygladac, a na takim przykladzie bedzie mi latwiej w przyszlosci to opanowac... reszte spokojnie zrobie sobie sam.
a - i cienie maja byc, i ma byc tez lekki gradient w tle, ale z tym sobie sam poradze.
moj mail to yasiu071 na gmailu
yasiu [ Legend ]
chciałbym, żeby wysokość contentu była zależna od wielkości okna przeglądarki (z jakimś minimum ustalonym) i bloki ze zdjęciami były wyśrodkowane a blok po prawej był rozciągnięty na całą wysokość.
i druga rzecz - czym zrobić taki myk, co by po najechaniu na któryś z bloków ze zdjęciami pozostałe dwa np. stawały się czarno-białe?
yasiu [ Legend ]
małe poprawki wprowadziłem... na razie nie stają się czarno-białe, ale lekko znikają... co do zmiany rozmiaru - da radę to zrobić przez jquery? dziś już nie sprawdzę, a wielce docenię wszelkie wskazówki =]
maviozo [ man with a movie camera ]
Migają panie jak szalone!
Ofak! Ale kod to kuleje trochę, tzn nie spodziewałem się ujrzeć coś takiego;p
Ja bym to bardziej automatyzował, nawet jeśli. W stylu:
$(".hover").hover(function()‹
var aktywny=$(this).index();
$(".hover").each(function(i,e)‹
if (i!=aktywny) $(this).animate(‹opacity:0.3›);
›);
›,function()‹
$(".hover").each(function(i,e)‹$(this).animate(‹opacity:1›);›
›);
Pisane w okienku pisania posta bez sprawdzenia, ale zamysł raczej dobry:P
yasiu [ Legend ]
ze kod tragiczny to wiem :) na szybko jeno pisany, jutro bym go poprawil, moze nie tak jak ty, ale zapewne jakos w tym stylu =]
a w kwestii ustawienia tych divow tak jak pisalem? :)
Zapruder [ Terran Hate Machine ]
A mozesz napisać dokładniej, czy rozrysować co dokładnie i w którym wymiarze (pion, poziom, skos? : P ) rozciągać / centrować? Nie wiem jak inni, ale ja nieszczególnie rozumiem o co dokładnie chodzi :)
btw, wysłałem ci dzisiaj ten szablon na maila, którego podałeś
yasiu [ Legend ]
zapruder - dzieki, dopiero teraz zobaczylem maila, zerkne do tego rano :)
a o co mi chodzi? mam kontener. w nim 3 divy zawierajace zdjecia + tekst i 1 div z tekstem. chcialebym zeby to sie do wysokosci okna dopasowywalo tzn. divy ze zdjeciamy wysrodkowane w pionie (wysokosc diva z tekstem bedzie stala) a wysokosc diva z samym tekstem co byy sie do wysokosci okna dopasowywala.
jak niejasne, to jutro narysuje, bo teraz w robocie siedze i nie mam jak :D
Zapruder [ Terran Hate Machine ]
Z tego co mi wiadomo, czystym html i css się wysokości na zasadzie tabelkowego 100% ustawic nie da.
To upierdliwe jest ogólnie, jest miliard metod żeby to obejść i w sumie żadna nie jest dobra :)
Ale zakładając, że się uporasz z odpowiednim ustawieniem wysokości całej strony itd. i chcesz wyśrodkować te 3 divy z obrazkami i tekstem w pionie, to mozna to zrobić tak:
Wyciągasz wysokość diva #content, wyciągasz wysokośc #content_left, który zawiera divy z obrazkami, które mają być wyśrodkowane. Odejmujesz jedno od drugiego, dzielisz na 2 i dla #content_left ustawiasz otrzymaną wartość jako margin-top.
np.
$(document).ready(function() ‹
var containerHeight = $('#content').height();
var containerLeftHeight = $('#content_left').height();
$('#content_left').css('marginTop', ((containerHeight - containerLeftHeight)/2);
›);
I dostaniesz coś takiego jak na obrazku.
I w sumie analogicznie można ustawić dopasowywanie się wysokości do wysokości okna ( $(window).height(); ), wyciągając po kolei różne wartości i ustawiając je po małych modyfikacjach jako wysokości coraz głębiej zagnieżdżonych divów + kombinowanie z czasem działającym, a czasem nie działajacym height: inherit; - ale to syzyfowa robota i koło optymalizacji kodu to nawet nie stała.
Nie wiem czy o to chodziło, jesli tak to nie wiem czy dobrze to wyjasniłem - w każdym razie ten kod, który podałem działa u mnie elegancko.
A jeśli chodziło o cos całkiem innego to sorry za zawracanie dupy, późno jest i się nudze : P
ed:
A i taki detal - w kodzie masz:
<div id="block" class="blok1" [...] ></div>
<div id="block" class="blok2" [...] ></div>
<div id="block" class="blok3" [...] ></div>
Każdy id moze mieć tylko jedno wystąpienie na jednej stronie, klasy moga się powtarzać - a tutaj jest całkiem odwrotnie : P Zamień to na
<div class="block" id="blok1" [...] ></div>
<div class="block" id="blok2" [...] ></div>
<div class="block" id="blok3" [...] ></div>
I będzie ok =]
yo dawg [ 1979 ]
yasiu, nie wiem czy to jeszcze aktualny problem, ale ja tego laya widzę tak:
we wrapperze (position:relative;):
- jeden div, a w nim 4 kontenery z float:left;
- drugi to ten duży (content)
Z kolei logo u góry wrzucasz we wrappera i dajesz mu position;relative;
Ponawiam pytanie: Jak uniemożliwić wejście na stronę przez IE?
yasiu [ Legend ]
yo dawg - poszlo, jest ok, jutro jeszcze powalcze, bo teraz siedze przy takim sprzecie, ze szkoda sie meczyc :)
z innej beczki - skoro mam juz layout, to polećcie jakiś prosty framework, na początek zrobię sobie stronę statyczną, bez interakcji z bazą, jedynie podstrony i formularz kontaktowy. potem ew. dodam jakieś dodatkowe bajery.
maviozo [ man with a movie camera ]
yo dawg->i w php i w javascripcie możesz sprawdzać przeglądarkę, przy czym php dużo solidniejsze (JS można wyłączyć).
yo dawg [ 1979 ]
maviozo, a wiesz jak aktualnie stoją statystyki korzystania z przeglądarek? Jakiś czas temu IE miało jakieś 50%, co w sumie jest dziwne, bo kogo nie spotkam to ma FF, Operę czy coś innego. Dziwne jest to tym bardziej, że nawet jeśli ktoś nie posiada wiedzy nt. instalowania oprogramowania na hdd, to na 99% informatycy, serwisanci ze sklepów z komputerami są zgodni i w pakiecie powitalno-programowym zawsze zainstalują nawet 60-letniemu Kowalskiemu chociażby Firefoxa. Skąd zatem te 50% ja się pytam?
Swoją droga sprawdziłem -moz-border-radius i -webkit-border-radius na IE, FF, Opera, Safari i Chrome - działają poprawnie na wszystkich poza IE i Opera. Mam sporo zaokrąglonych kontenerów, a dla IE i Opery muszę stosować obrazki rogów... Inna sprawa, że dla IE to muszę napisać zupełnie nowego cssa, ale pierdolę to - wyłączę stronę dla IE ;o
yo dawg [ 1979 ]
da nju part https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=10374114&N=1
legrooch [ MPO Squad Member ]
Skąd zatem te 50% ja się pytam?
Z polityk wewnętrznych firm. Do użytku z intranetem, helpdeskiem itp w 99% wymagany jest IE, mimo że na reszcie działa sprawnie. Zmiana hasła na ISA Server czy w MOSS jest możliwa z automatu na IE. Pod innymi przeglądarkami występują problemy autoryzacji kont, przez co założona jest taka właśnie polityka.
yasiu [ Legend ]
no właśnie, apropos IE - da radę coś łatwo zrobić (bez tworzenia grafiki) zeby narożniki tu wyglądały chociaż jako tako, kiedy w tle jest gradient a nie jeden kolor?
Zapruder [ Terran Hate Machine ]
u ciebie background w style.css wygląda tak:
background: url(../gfx/bkg1.jpg) repeat-x;
dodaj tam jeszcze na początku kolor, np:
background: #7c98c0 url(../gfx/bkg1.jpg) repeat-x;
poniższa część pliku jquery.corner.js, jeśli nie ma zdefiniowanego kodu koloru to zwraca #ffffff jak widać (linie 46-61):
function gpc(node)
while(node)
var v = $.css(node,'backgroundColor');
if (v && v != 'transparent' && v != 'rgba(0, 0, 0, 0)')
if (v.indexOf('rgb') >= 0)
var rgb = v.match(/\d+/g);
return '#'+ hex2(rgb[0]) + hex2(rgb[1]) + hex2(rgb[2]);
return v;
if (node.nodeName.toLowerCase() == 'html')
break;
node = node.parentNode; // keep walking if transparent
return '#ffffff';
;
I yo dawg wyżej dał linka już do nowej części : P
maczu [ Generaďż˝ ]
@yasiu
może pomoże, chociaż nie pamiętam czy w ie za pomocą css można spowodować okrągłe rogi
yasiu [ Legend ]
jak zrobić, żeby to: nie sypało błędami JS i żeby jako tako wyglądało na IE6 i IE7?
maczu [ Generaďż˝ ]
spójrz na nagłówek tego dokumentu:
tutaj dołączasz biblioteki jquery tylko, jeżeli przeglądarka to ie7
<!--[if IE 7]>
<script src="scripts/jquery-1.4.2.js" type="text/javascript"></script>
<script src="scripts/jquery.hoverIntent.minified.js" type="text/javascript"></script>
<script src="scripts/jquery-fonteffect-1.0.0.js" type="text/javascript"></script>
<script src="scripts/skryptIE.js" type="text/javascript"></script>
<link href="styleIE7.css" rel="stylesheet" type="text/css" />
<![endif]-->
tutaj dołączasz style tylko dla ie6
<!--[if IE 6]>
<link href="styleIE6.css" rel="stylesheet" type="text/css" />
<![endif]-->
a tu dołączasz style jeżeli przeglądarka nie jest ie.
<![if !IE]>
<script src="scripts/jquery-1.4.2.js" type="text/javascript"></script>
<script src="scripts/jquery.hoverIntent.minified.js" type="text/javascript"></script>
<script src="scripts/jquery-fonteffect-1.0.0.js" type="text/javascript"></script>
<script src="scripts/skrypt.js" type="text/javascript"></script>
<link href="style.css" rel="stylesheet" type="text/css" />
<![endif]>
nie dołączasz bibliotek jquery w każdym możilwym przypadku. W ogóle biblioteki js powinieneś dołączać niezależnie od przeglądarki, a tylko style dołączać w zależności od wersji IE
maczu [ Generaďż˝ ]
mam coś takiego:
<div class="pagination">
<a href="#" style="display: block; float: left; padding: 3px;">1</a>
<a href="#" style="display: block; float: left; padding: 3px;">2</a>
<a href="#" style="display: block; float: left; padding: 3px;">3</a>
<p id="description">Strona 1 z 3</p>
</div>
I chciałbym teraz, aby ten div zawsze wyświetlał elementy paginacji na środku. Gdy do klasy .pagination dodam text-align: center, wyśrodkuje się tylko napis (#description). Macie pomysł jak to wyśrodkować?
edit: HA!
już wiem: display: inline-block i bez floata.
dzięki maczu ;)
gromusek [ keep Your secrets ]
NOWA CZĘŚĆ
https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=10374114&N=1
maviozo [ man with a movie camera ]
LUDZIE! NOWA CZĘŚĆ DAWNO BYŁA!!
[347]
yo dawg [ gry online level: 10 - 1979 ]
da nju part https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=10374114&N=1