logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak dodać test z pytaniami i wysyłką odpowiedzi na e-mail w HTML/PHP?

Pawel1924 01 Mar 2011 14:13 6191 17
REKLAMA
  • #1 9220425
    Pawel1924
    Poziom 20  
    Posty: 1137
    Ocena: 128
    Witam, posiadam stronę html.

    Chciałbym na niej zamieścić test około 20 pytań z odpowiedziami a ,b ,c.

    Ma to wyglądać tak np:

    Czy ta strona ma kolor :
    a-zielony
    b-niebieski
    c-nie da się określić

    I w ten sposób 20 pytań.

    Problem w tym że chciałbym aby odpowiedzi były zapisane i wysłane do mnie na e-mail.

    Taki test mógłby być w php.


    Drugi problem to :

    Chciałbym aby tekst w jednym miejscu strony był wczytywany z pliku txt.

    Gdybym edytował ten plik, na stronie zmieniała by się treść której on dotyczył.
  • REKLAMA
  • #2 9220596
    blade-mrn
    Poziom 22  
    Posty: 320
    Pomógł: 64
    Ocena: 18
    Po pierwsze jak jest zapisany test i jak będzie wyświetlany? Bo jeśli chcesz zrobić po jednym pytaniu na raz to lepiej test zapisać w bazie danych i za pomocą stronicowania sczytywać po jednym pytaniu. W tedy prościej i efektywniej było by odpowiedzi zapisywać od bazy. Jeśli cały test będzie wyświetlany od razu to wystarczy zwykły formularz.
    Po drugie wczytać treść pliku w danym miejscu strony możesz za pomocą include() z PHP.
    Po trzecie napisałeś już coś sam? Jeśli tak to pokaż co, to będzie można ci coś podpowiedzieć, poprawić a tak to możemy wróżyć z fusów.
  • #3 9221103
    Pawel1924
    Poziom 20  
    Posty: 1137
    Ocena: 128
    Hm... o ile stronę w html-u zrobiłem to php nie znam...

    Jedyną rzeczą jaką zrobiłem to zapisanie testu na kartce... Ponieważ nie znam php.

    Test może być wyświetlony cały od razu, czyli formularz wystarczy.

    Ja ze względu na nie znajomość php proszę bardziej o podanie mi gotowego przykładu abym mógł go sobie przerobić (wpisać swoje pytania, i odpowiedzi).

    A co do wysyłania na email, to myślałem że to było by najprostsze rozwiązanie.

    Dodano po 1 [godziny] 3 [minuty]:

    Poszukałem trochę i nawet znalazłem coś takiego jak szukam.

    Lecz nie działa mi w pełni.

    Nie zlicza poprawnych odpowiedzi, a zaletą jest to że pytania wyświetlają się po kolei.

    kod php :
    Kod: PHP
    Zaloguj się, aby zobaczyć kod


    i wyniki.php

    Kod: PHP
    Zaloguj się, aby zobaczyć kod




    po dodaniu go na stronie mam takie błędy :

    
    Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\usr\krasnal\www\lepsze grafiki\test.php:7) in c:\usr\krasnal\www\lepsze grafiki\test.php on line 99
    
    Pytanie: stos protokolow sieciowych firmy Novell, użytkowany w rożnorodnych sieciach lokalnych, od PC LAN do sieci branżowych, dostepny w srodowiskach i systemach: NetWare, Ms-DOs, Windows, Windows NT i Windows 95, Os/2, Unixware i NLM to: (1/10)
    IPX/sPX 	
    TCP/IP 	
    NetBIOs 	
    NetBEUI 	
    
    i wyniki.php
  • REKLAMA
  • #4 9221461
    krru
    Poziom 33  
    Posty: 1819
    Pomógł: 230
    Ocena: 214
    Pawel1924 napisał:
    Witam, posiadam stronę html.

    Chciałbym na niej zamieścić test około 20 pytań z odpowiedziami a ,b ,c.

    Ma to wyglądać tak np:

    Czy ta strona ma kolor :
    a-zielony
    b-niebieski
    c-nie da się określić

    I w ten sposób 20 pytań.

    Problem w tym że chciałbym aby odpowiedzi były zapisane i wysłane do mnie na e-mail.



    Nie wiem na ile to jeszcze jest aktualne, ale jest/było coś takiego jak <FORM METHOD="POST" ACTION="mailto:user@host">
  • #5 9222273
    blade-mrn
    Poziom 22  
    Posty: 320
    Pomógł: 64
    Ocena: 18
    Tak na szybko zrobiłem przykładowy skrypt bo ten twój to tak sieczka że przeglądać mi się tego nie chciało.
    Kod: PHP
    Zaloguj się, aby zobaczyć kod

    Błąd
    Warning: session_start(): Cannot send session cache limiter - headers already sent...
    masz dlatego że strona wysłała coś do przeglądarki przed session_start() a to musi być pierwsze.

    krru: mailto jest aktualne ale do działania wymaga aby na komputerze był zainstalowany jakiś klient pocztowy.
  • #6 9222568
    Pawel1924
    Poziom 20  
    Posty: 1137
    Ocena: 128
    Hej :)

    Bardzo Ci dziękuję za odpowiedz :) Zaraz sprawdzę twój kod.

    Ja żeby nie było że jestem leń to zrobiłem coś :) (przy pomocy google)

    Kod wygląda tak :

    Kod: PHP
    Zaloguj się, aby zobaczyć kod



    Kod ten, umożliwia mi dodanie pytań i odpowiedzi w formie rozwijanej.

    Po udzieleniu odpowiedzi, przesyła na mój email (bez użycia programu pocztowego)
    wyniki w postaci:

    imie nazwisko
    adres email
    1:dobra
    2:zła.....

    itd

    Czyli tak jak chciałem.

    Teraz, czy było by możliwe żeby zliczyć poprawne odpowiedzi i po zakończeniu testu wyświetlić wynik osobie która wypełniała test?

    Dodano po 21 [minuty]:

    hm...

    jest coś takiego w php???

    if (input type=="poprawna")
    then "poprawne odpowiedzi"+1;

    Tak to rozumiem:)
  • Pomocny post
    #7 9223686
    blade-mrn
    Poziom 22  
    Posty: 320
    Pomógł: 64
    Ocena: 18
    Da się zliczać punkty, musisz tylko napisać instrukcję sprawdzającą poprawną odpowiedź i zliczającą punkty.
    Jeśli będziesz wyświetlać cały test na stronie to nie ma problemu, możesz to zrobić tak jak w moim skrypcie ale jeśli chcesz wyświetlać pojedyncze pytania to musisz ilość punktów przechowywać w sesji albo przesyłać w polu formularza aby tego nie zgubić przy przeładowywaniu strony.

    Jest coś takie w PHP ale przydało by się abyś wiedział w jaki sposób, poszczególne pola formularza zwracają swoją wartość. W przypadku tych pól listy z twojego skryptu będzie to np.
    Kod: PHP
    Zaloguj się, aby zobaczyć kod

    Tyle, że przynajmniej według mnie robienie tego formularza w ten sposób jest bez sensu bo podejrzenie która odpowiedź jest prawidłowa nie będzie stanowiło najmniejszego problemu, wystarczy spojrzeć na źródło strony.

    A tak swoją drogą to jeśli masz w planach tylko jeden taki test z ograniczoną liczbą rozwiązujących to może i się nie opłaca ale jeśli planujesz więcej takich testów plus dużą liczbę rozwiązujących to radziłbym użyć do tego bazy danych bo zasypią ci skrzynkę tymi wynikami.
  • #8 9223964
    Pawel1924
    Poziom 20  
    Posty: 1137
    Ocena: 128
    Zrobiłem tak jak napisałeś, i zliczanie poprawnych odpowiedzi działa.

    Masz rację nie jest to zbyt dobre rozwiązanie, ale tak jak pisałem nie znam php i nie jestem w sanie ogarnąć niczego bardziej skomplikowanego.

    Chyba że nie jest to aż tak bardzo skomplikowane jak się wydaje :)

    Ogólnie test ma sprawdzać poziom wiedzy z j.angielskiego.

    Dostępny będzie dla wszystkich.

    Chciałem znaleźć na google gotowy skrypt i zmienić w nim tylko pytania ale nie udało mi się.

    Trudno było by zrobić tak aby wyświetlać pojedyncze pytanie?

    A może da się jakoś zabezpieczyć prosto stronę przed przeglądaniem źródła strony?
  • REKLAMA
  • #9 9224243
    Youmound
    Warunkowo odblokowany
    Posty: 1137
    Pomógł: 33
    Ocena: 43
    źródło strony na początku wstaw <?php
    i na końcu

    ?>

    Było coś jeszcze chyba tak (nie jestem pewny)
    <?*

    treść

    *>

    Wówczas nikt nie zobaczy kodu ale pewny warunek ! PLIK MUSI MIEĆ ROSZERZENIE *PHP . To najbezpieczniejszy sposób zabezpieczenia strony przed przeglądaniem jego zawartości.
    Inne sposoby to np zablokowanie menu kontekstowego (ale działa tylko na nie których przeglądarkach na których nie można ręcznie uruchomić źródła strony ctrl+u).W ogóle to jak ktoś chce podejrzeć kod strony to i tak to zrobi dlatego polecam użyć tagów PHP do ukracia całej treści.
    A jak najlepiej? Wczytaj stronę z szablonu (czyli tak skrypt generujacy) wówczas wszyskto co będzie w nim, nie będzie widoczne dla nikogo gdyż jako i oprawka a cały tekst będzie traktowany jako kod PHP a takowy nie jest pokazywany przez przeglądarkę (tylko to musisz uruchamiać na serwerze) dostęp fizyczny do plików z FTP daje pełne możliwości podejrzenia kodu.

    +

    co za sens jest ukrywać kod skoro tutaj on widnieje ? i każdy widzi jak to działa więc jak ktoś chciałby Ci na złość zrobić to i tak zrobi ;]

    Edit://

    Co do szablonu to sprawdź to :
    http://webmaster.helion.pl/index.php/php-szablony-stron-www
  • #10 9224598
    Pawel1924
    Poziom 20  
    Posty: 1137
    Ocena: 128
    Hej :) Dzień dobry.

    Ja od rana próbuje coś z tym zrobić :)

    Więc tak, gdy wstawiłem <?php (na poczatku strony) i na końcu ?>. Rozszerzenie .php

    To miałem jakiś błąd parse error czy jakoś tak.

    Później użyłem tego szablonu, ale nie wiem czy dobrze??

    Zrobiłem tak :

    Kod: PHP
    Zaloguj się, aby zobaczyć kod



    Po wejściu na stronę co.php wyświetla się zawartość pliku index.html ale nadal mogę podejrzeć źródło strony a co najlepsze to wyświetla wtedy źródło strony oraz źródło pliku stylu css.

    Czyli nic to nie dało.


    Jeżeli mógłbym mieć jeszcze jedną prośbę :)

    Co zrobić aby te zliczanie odpowiedzi, zostało wysłane również do mnie na email?

    Kod: PHP
    Zaloguj się, aby zobaczyć kod



    A do tego ostatnia modyfikacja :)

    W teście mam taki przycisk jak resetuj dane.

    Czy mógłbym zrobić tak żeby po określonym czasie samo resetowało?
    np. jeżeli ktoś nie zdąży wysłać testu w 10min to odpowiedzi przepadną.

    I oczywiście jeżeli uda się to żeby na emaila przychodziło ile mu to zajęło.

    Dodano po 1 [minuty]:

    Przypomnę że kod wygląda tak :

    Kod: PHP
    Zaloguj się, aby zobaczyć kod
  • #11 9225410
    blade-mrn
    Poziom 22  
    Posty: 320
    Pomógł: 64
    Ocena: 18
    Youmound: Sorry ale twój pomysł z tymi znacznikami php jest bez najmniejszego sensu z bardzo prostej przyczyny. PHP jest interpretowane po stronie serwera który do przeglądarki zwraca gotowy kod HTML.

    Pawel1924:
    Po dodaniu znaczników <?php ?> dostałeś błąd Parse Error bo składnia się nie zgadzał. Znaczników HTML nie można bezpośrednio w PHP zamieszczać.

    Dostępu do źródła strony nie da się skutecznie zablokować, przynajmniej ja o czymś taki nie słyszałem ale jeśli chodzi o ukrycie poprawnych odpowiedzi to w twoim przypadku nie jest to szczególnie trudne bo wystarczy pozmieniać wartości przypisane odpowiedziom np tak:
    Obecnie masz tak:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Wystarczy że zmienisz na coś takiego:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    W ten sposób nawet jak ktoś sprawdzi źródło to nie uzyska podpowiedzi. A to która odpowiedź jest prawidłowa ustalisz w skrypcie php:
    Kod: PHP
    Zaloguj się, aby zobaczyć kod

    Tego "podglądacz" nie zobaczy chyba, że pobierze pliki strony do siebie na komputer.

    Z tego co widzę w kodzie to powinieneś ilość punktów dostawać na e-mail bo jest to dopisywane do treści wiadomość. Nie działa ci to??

    Pytałeś czy zrobienie aby pytania były wyświetlane pojedynczo jest trudne. To zależy od umiejętność programisty, jak zawsze zresztą. Gdybyś umieścił pytania w bazie danych to można to zrobić za pomocą stronicowania/paginacji to kwestia może 10 linijek kodu. Natomiast w tym wypadku trzeba by ten test umieści w tablicy i przy przeładowaniu strony powiększać indeks aby wyświetliło się kolejne pytanie. Co za tym idzie aktualny indeks trzeba by przechowywać w sesji, w cookie albo ukrytym polu w formularzu żeby go nie zgubić. Ale jak by się to zachowało przy np. odświeżeniu strony czy kliknięciu wstecz trudno powiedzieć bo nigdy czegoś takiego nie próbowałem.

    Odliczanie czasu też da się zrobić, za pomocą JavaScript i być może AJAX-a ale tego drugiego nie znam w ogóle więc nie wiem dokładnie. Tyle że przynajmniej jeśli chodzi o JavaScript trzeba wziąć pod uwagę, że odświeżenie strony będzie powodować rozpoczęcie odliczania od początku więc trzeba się przed tym zabezpieczyć np. przez zapisywanie czasu w cookie. Skryptów odliczających czas jest sporo w sieci więc możesz sobie o tym poczytać, obsługa cookie w JavaScript też nie jest bardzo skomplikowana. A cały mechanizm polegałby na tym, że skrypt odlicza czas od zadanej ilość i gdy osiągnie zero wysyła czy też resetuje formularz automatycznie.

    Tak z ciekawości jeśli można wiedzieć to po co ci coś takiego? Bo jeśli dostęp do tego mają mieć wszyscy to do głowy przychodzą mi tylko jakieś badania statystyczne.W takim wypadku zastosowanie bazy danych bardzo ułatwiło by ci życie bo robienie jakiś podliczeń i statystyk można by zrobić automatycznie.
    Jeśli to nie jest bardzo pilne to może mógłbym ci w wolnej chwili napisać taki mały system, przynajmniej z grubsza ale najwcześniej to może w weekend wyrwał bym trochę czasu na to.

    Tak na przyszłość jak piszesz jakiś kod to stosuj wcięcia, bo wówczas jest dużo czytelniejszy. A po drugie nie zostawiaj takich pustych przestrzeni bo przynajmniej na forum niepotrzebnie rozciągasz wiadomość.
  • REKLAMA
  • #12 9225479
    Youmound
    Warunkowo odblokowany
    Posty: 1137
    Pomógł: 33
    Ocena: 43
    blade-mrn okey interpretuje go serwer kod PHP który jest ukryty nie widzisz go nawet jak pobierzesz plik ręcznie (nie z FTP) to nie będziesz widział kodu skryptów PHP jak byś miał je zoaczyć to było by trochę bez sensu nie uważasz ? Można to sprawdzić na każdej stronie z użytym PHP iż nie widać jego kodu.
  • #13 9225484
    Pawel1924
    Poziom 20  
    Posty: 1137
    Ocena: 128
    Do czego jest to potrzebne ...

    Zrobiłem dziewczynie taką stronkę informacyjną na temat korepetycji których udziela.

    No i Ona chciała mieć taki test żeby ludzie którzy są zainteresowani mogli sprawdzić na jakim są poziomie itd. No i na podstawie tego jakiś teścik online dla aktualnych uczniów.

    No to zrobiłem stronkę (jeszcze w budowie) w html na div-ach z użyciem css.

    W sumie to został mi tylko ten test i będzie zadowolona :)

    Niby już to spełnia swoje zadanie bo wątpię żeby jej uczniowie wpadli na to żeby ściągnąć stronę aby podejrzeć pytania. (ps. Twój sposób faktycznie odbiera możliwość sprawdzenia która odpowiedź jest dobra - Dzięki :)

    Także można było by tak zostawić. (z czasem wyjdzie czy podglądają)

    Co do przesyłania ilości poprawnych odp na email.
    Po wykonaniu testu i kliknięciu na wyślij, pojawia się informacja o poprawnym wysłaniu i ilości poprawnych pkt.

    Natomiast ta informacja do mnie na email nie przychodzi.

    Dodano po 2 [minuty]:

    hm... Youmound
    Pewnie masz rację, ale ja nie umiem tego użyć.
  • #14 9225903
    Youmound
    Warunkowo odblokowany
    Posty: 1137
    Pomógł: 33
    Ocena: 43
    Na stronie poradnika który dałem wyżej wszystko dokładnie jest opisane.
    Napisz czego dokładnie nie rozumiesz i czego dokładnie nie potrafisz użyć to postaram Ci się pomóc.
  • #15 9226227
    Pawel1924
    Poziom 20  
    Posty: 1137
    Ocena: 128
    No zrobiłem taką stronę :

    Kod: PHP
    Zaloguj się, aby zobaczyć kod


    nazwałem ją co.php

    po wywołaniu strony wczytuje ona , stronę index.html lecz i tak mogę podejrzeć źródło strony
  • #16 9226371
    blade-mrn
    Poziom 22  
    Posty: 320
    Pomógł: 64
    Ocena: 18
    Youmound: Owszem samego kodu php nie zobaczysz ale widoczny jest generowany przez niego kod HTML wiec wyjaśnij mi co by dało gdybym coś takiego wygenerował przez PHP?
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Bo chyba nie powiesz mi że wartości Value nie było by widać w źródle strony. Ale tak na dobrą sprawę to jest to nie istotne. A samo ukrywanie źródła strony radzę sobie odpuścić bo to jest bez sensu. Przecież weryfikacja odpowiedzi jest w PHP a tego zobaczyć się w ten sposób nie da.

    Pawel1924: e-mail-a z wynikami testu nie dostajesz bo masz złą składnię funkcji mail. Powinno być tak:
    Kod: PHP
    Zaloguj się, aby zobaczyć kod

    A teraz zobacz jak to wygląda u ciebie. Po więcej informacji odsyłam do manuala Link
  • #17 9226766
    Youmound
    Warunkowo odblokowany
    Posty: 1137
    Pomógł: 33
    Ocena: 43
    A jak by ukrył odpowiedzi PHP wstawiając @ ? Nikt by nie zobaczył tych informacji które są przekazywane przez serwer.Jeżeli i to zawodzi to podpieram do autora ; najlepiej dać sobie z tym spokój jak ktoś będzie chciał to i tak znajdzie sposób nawet jeżeli miał by być to ew. włam do bazy.
  • #18 9473742
    Pawel1924
    Poziom 20  
    Posty: 1137
    Ocena: 128
    Już wszystko zrobione :) I działa a to najważniejsze :)

    Dziękuję wszystkim za pomoc

Podsumowanie tematu

✨ Użytkownik poszukuje sposobu na stworzenie testu w HTML/PHP, który zawiera 20 pytań z odpowiedziami a, b, c, oraz na zapisanie i wysłanie odpowiedzi na e-mail. W odpowiedziach zasugerowano użycie bazy danych do przechowywania pytań oraz funkcji PHP do wysyłania e-maili. Użytkownik nie zna PHP, więc prosi o gotowe przykłady kodu. Wskazano również, jak wczytać treść z pliku tekstowego za pomocą funkcji include(). Użytkownik napotkał problemy z wysyłaniem e-maili oraz zliczaniem poprawnych odpowiedzi, co udało się rozwiązać dzięki wskazówkom innych uczestników dyskusji. Na koniec użytkownik potwierdził, że udało mu się zrealizować projekt.
Wygenerowane przez model językowy.
REKLAMA