[php] w czym napisac aplikacje?

0

Witam!

Mam napisac aplikacje internetowa. W sumie dosc prosta: strona powinna umozliwiac rejestracje nowych uzytkownikow, poza tym bylyby 3 rozne rodzaje uzytkownikow: admin, moderator i zwykly uzytkownik. W zaleznosci od tego jakim sie jest uzytkownikiem wyswietlalby sie odpowiedni panel z dostepnymi akcjami. Na stronie ponadto zamieszczane bylyby zadania, ktore uzytkownicy rozwiazywaliby dostajac jakies punkty, w zaleznosci od liczby podejsc, czasu straconego nad rozwiazaniem itp. Moderatorzy mieli by mozliwosc dodawania nowych zadan, a takze pisanie komentarzy do okreslonych zadan.

Moje pytania:
1) Czy jest moze gotowy skrypt, ktory po lekkich modyfikacjach moglbym zaadoptowac do moich celow?
2) Czy jest jakis (w miare prosty) framework ulatwiajacy prace? (tzn. czy mozecie cos mi polecic)
3) Jakie narzedzia polecicie do: pisania kodu w PHP, html, tworzenia baz danych itp., itd.?

Inny problem stanowi obsluga sesji, z ktora mam problemy opisane w innym poscie. Czy sa inne mechanizmy pozwalajace na przekazywanie informacji o zalogowanym uzytkowniku pomiedzy kolejnymi stronami? Przychodzi mi do glowy rozwiazanie, zeby to wszystko w plikach tekstowych zapisywac? moze ciasteckach? albo przekazywac poprzez pole ukryte formularzy... wszystkie rozwiazania wydaja mi sie dosc toporne...

0

widzę, że nie masz zbyt wielkiej wiedzy, na te tematy..
Więc proponuje joomle.

0
azonips napisał(a)

1) Czy jest moze gotowy skrypt, ktory po lekkich modyfikacjach moglbym zaadoptowac do moich celow?

Pewnie chodzi ci o systemy CMS. Joomla, Drupal, WordPress i wiele wiele innych.

2) Czy jest jakis (w miare prosty) framework ulatwiajacy prace? (tzn. czy mozecie cos mi polecic)

CodeIgniter, Kohana albo framework mojego autorstwa - Coyote :P

3) Jakie narzedzia polecicie do: pisania kodu w PHP, html, tworzenia baz danych itp., itd.?

Osobiscie uzywam Eclipse. Do projektowania bazy danych istnieje wiele narzedzi, zalezy jaka baza danych.

Inny problem stanowi obsluga sesji, z ktora mam problemy opisane w innym poscie. Czy sa inne mechanizmy pozwalajace na przekazywanie informacji o zalogowanym uzytkowniku pomiedzy kolejnymi stronami? Przychodzi mi do glowy rozwiazanie, zeby to wszystko w plikach tekstowych zapisywac? moze ciasteckach? albo przekazywac poprzez pole ukryte formularzy... wszystkie rozwiazania wydaja mi sie dosc toporne...

PHP umozliwia obsluge sesji. Ma wbudowany mechanizm.

0

prosty skrypt rejestracji php i html ponizej

Jesli nie znasz php to tak jak chciec latac odrzutowcem nie majac doswiadczenia na symulatorze i mniejszych samolotach
musisz najpierw podlapac lepiej php a potem przesiasc sie na zautomatyzowane rozwiazania

Co do rozwiazan o Eclipse wsparcie dla wielu jezykow, Dreamwer firmy Adobe, i lekki pomocny przy pisaniu kodu Notepad++ bo pisanie w samym notatniku to straszna sprawa ;)

Musisz zainicjowac sesje przy kazdym przeladowywaniu strony i jesli juz istnieje identyfikator a ten tworzy sie zazwyczaj z loginu uzytkownka to wtedy zawsze kiedy przeladujesz strone to kiedy bedzie potrzeba wystarczy pobrac identyfikator sesji uzytkownka i zawsze bedziesz mogl pomiedzy stronami miec to co jest Ci potrzebne

W plikach nie ma sensu bo jak tworzysz sejse ona jest tworzona automatycznie ty ja tylko musisz zainicjowac, czyli tworzy sie to w ciasteczkach.

Ukryte pola to chyba zly pomysl

 <?php

#załadowanie pliku z funkcjami
require_once("includes/functions.php");

#załadowanie pliku z danymi dostępowymi do bazy
require_once("includes/db.inc.php");

#nawiązanie połączenia z bazą danych
$db = mysql_connect($dbHost, $dbUser, $dbPass) or die ("Nie można połączyć z bazą danych: " . mysql_error());
mysql_select_db($dbName) or die ("Nie można wybrać bazy danych");

#ustawienie kodowania bazy danych
mysql_query("SET NAMES utf8");

if(isset($_POST['save']))
{
    #wykonanie zapytań sprawdzających, czy nazwa użytkownika i adres email są zajete
   $loginAble = mysql_query("SELECT user_id FROM ".$dbPrefix."users WHERE user_login='".addslashes($_POST['userLogin'])."' LIMIT 1");
   $emailAble = mysql_query("SELECT user_id FROM ".$dbPrefix."users WHERE user_email='".addslashes($_POST['userEmail'])."' LIMIT 1");

   if(empty($_POST["userName"]) || empty($_POST["userSurname"]) || empty($_POST["userLogin"]) || empty($_POST["userPassword1"]) || empty($_POST["userPassword2"]) || empty($_POST["userEmail"]))
   {
       $errorMessage = "Wypełnij wszystkie pola.";
   }
   elseif($_POST["userPassword1"]!=$_POST["userPassword2"])
   {
       $errorMessage = "Podane hasła różnią się od siebie.";
   }
   elseif(strlen(trim($_POST["userLogin"])) < 2 || strlen(trim($_POST["userPassword1"])) <5 )
   {
       $errorMessage = "Nazwa użytkownika musi mieć przynajmniej 2 znaki, a hasło 4 znaki.";
   }
   elseif(mysql_num_rows($loginAble)==1)
   {
       $errorMessage = "Podana nazwa uzytkownika jest juz zajęta. Wybierz inną.";
   }
   elseif(mysql_num_rows($emailAble)==1)
   {
       $errorMessage = "Podany adres e-mail już istnieje w serwisie. Podaj inny.";
   }
#elseif(!eregi('|^[_a-z0-9.-]*[a-z0-9]@[_a-z0-9.-]*[a-z0-9].[a-z]{2,3}$|e', $userEmail))

#{
#$errorMessage = "Zły adres e-mail";
#}

   else
   {

       $actCode = md5(str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890"));

        $emailTitle = "E-mail aktywacyjny";
        $emailBody = '<h4>Aktywacja Konta</title</h4>
                       <b>
                       Aby aktywować konto na stronie musisz kliknąć poniższy link aktywujący:<br>
                       <a href="http://localhost/go/strona/index.php?site=register&amp;email='.$_POST['userEmail'].'&amp;active='.$actCode.'">
                       http://localhost/go/strona/index.php?site=register&amp;email='.$_POST['userEmail'].'&amp;active='.$actCode.'
                       </a><br>
                        Dziękuje admin strony</b>';

        if(mysql_query("INSERT INTO ".$dbPrefix."users VALUES(NULL, 
        '".addslashes($_POST['userName'])."', '".addslashes($_POST['userSurname'])."', 
        '".addslashes($_POST['userLogin'])."', '".addslashes(md5($_POST['userPassword1']))."', 
        '".addslashes($_POST['userEmail'])."', '$actCode', 'no', CURDATE(), '0', NULL)") && send_email($emailTitle, $emailBody)){

            $message = '<fieldset class="info"><legend></legend><p class="ms2">"Zostałeś zarejestrowany pomyślnie, jednak ta strona wymaga aktywacji konta przez e-mail. Na podany adres e-mail został wysłany klucz aktywacyjny. E-mail powinien zostać wysłany w ciagu kilku minut, jeśli tak sie nie stanie skontaktuj sie z administratorem strony."</p></fieldset>';

        }
        else $errorMessage = "Wystąpił błąd! Proszę powtórzyć operację.";
    }

    if($errorMessage){
        require_once("register.html");
    }

    if($message) echo $message;

}
elseif(isset($_GET["active"]) && isset($_GET['email']))
{
   mysql_query("UPDATE ".$dbPrefix."users SET user_active = 'yes' WHERE user_key = '".addslashes($_GET['active'])."' AND user_email = '".addslashes($_GET['email'])."' LIMIT 1");

   if(mysql_affected_rows() == 1)
    {
        $message = '<fieldset class="activation"><legend></legend><p class="mso">Aktywacja ukończona pomyślnie. Możesz już korzystać z naszego serwisu.</p></fieldset>';
    }
    else
    {
        $message = '<fieldset class="mso"><legend></legend><p class="mso">Podano nieistniejący kod aktywacyjny, lub adres e-mail!</p></fieldset>';
    }

    if($message) echo $message;
}
else
{
    require_once("register.html");
}
?>

<?php echo "<strong id='errorregister'>".$errorMessage."</strong>"; ?>
<div id="my">

<fieldset id="el03"><legend id="el03legend"></legend>

<form id="signupform" autocomplete="off" action="index.php?site=registration" method="post">

 <table class="tablregedit">
            <tr>
                <td><p class="labelname">Imię</p></td>
                <td><input type="text" id="userName" class="ms" name="userName" value="<?php echo $_POST["userName"]; ?>" maxlength="15"></td>
                <td></td>
            </tr>
            <tr>
                <td><p class="labelname">Nazwisko</p></td>
                <td><input type="text" id="userSurname" class="ms" name="userSurname" value="<?php echo $_POST["userSurname"]; ?>" maxlength="15"></td>
                <td></td>
            </tr>
            <tr>
                <td><p class="labelname">Login</p></td>
                <td><input type="text" id="userLogin" class="ms" name="userLogin" value="<?php echo $_POST["userLogin"]; ?>" maxlength="15"></td>
                <td></td>
            </tr>
            <tr>
                <td><p class="labelname">Hasło</p></td>
                <td><input type="password" id="userPassword1" class="ms" name="userPassword1" maxlength="8" /></td>
                <td></td>
            </tr>
            <tr>
                <td><p class="labelname">Powtórz hasło</p></td>
                <td><input type="password" id="userPassword2" class="ms" name="userPassword2" maxlength="8" /></td>
                <td></td>
            </tr>
            <tr>
                <td><p class="labelname">Adres e-mail </p></td>
                <td><input type="text" id="userEmail" class="ms" name="userEmail" value="<?php echo $_POST["userEmail"]; ?>" maxlength="35"></td>
                <td></td>
            </tr>
            <tr><td></td></tr>
             <tr>
                <td class="label">&nbsp;</td>
                <td class="field" colspan="2">
                    <div id="termswrap">
                        <input id="terms" type="checkbox" name="terms" />
                        <label id="lterms" for="terms">Akceptuję regulamin</label>
                    </div> <!-- /termswrap -->              </td>
              </tr>
            <tr><td></td>
                <td colspan="3"><input type="submit" name="save" value="Rejestruj"></td>
            </tr>

    </table>
   </fieldset>

</form>

</div>
0

dziekuje wszystkim za odpowiedzi...

co do pierwszej: zawsze dziwilo mnie to, ze ktos kto nie ma nic do powiedzenia, odpowiada...

co do drugiej:
1) tak chodzilo mi o cos w stylu CMS, jednak moja strona bedzie dosc specyficzna: niepotrzebne beda te wszystkie bajery dostapne w cms-ach typu joomla, a i bede potrzebowal kilku innych dosc specyficznych rzeczy (dodawanie zadan=tresc zadania+formularz odpowiedzi ze zmienna iloscia pol, sprawdzanie czasu rozwiazania zadania, ilosci podejsc itd.)
2) dzieki, sprawdze proponowane frameworki...
3) znam eclipse... uzywalem kiedys takze phpdesigner-a... baza danych mysql, co polecisz?

co do trzeciej odpowiedzi: wiem jak dzialaja sesje, swoj problem opisalem tutaj:
http://4programmers.net/Forum/Webmastering/171300-php_niepoprawnie_dzialajace_sesje_pod_ie

komentarz do linku powuzej: jak pisalem, na localhoscie dziala wszystko OK... na innych serwerach takze, jedynie na tym nie dziala gdzie mam umiescic strone. Jesli moglby ktos madrzejszy jeszcze raz zerknac i podpowiedziec przynajmniej o co pytac administratorow tamtego serwera... to bylbym wdzieczny.

0

do projektowania baz jesli uzywasz DBMS MySQL to polecilbym Ci MySQL Workbench, graficzne srodowisko i w nim mozesz sobie wizualnie zaprojektowac baze tzn zrobic wszystko to co musialbys recznie robic poprzez phpmyadmin a do tego bedziesz mial obraz widoku fizycznej bazy i wiele innych opcji co ulatwi zaprojektowac i wygenerowac baze.

Sa3tez i inne programy do graficznego projektowania, ale z racji ze to rozwiazanie MySQL polecam ten program jest dobry i ulatwi Ci robote.

Gotowe CMS sa dobre ale jak wykorzystujesz konkretne rozwiazanie pod konkretny cel, jak wezmiesz joomle i bedziesz chcial zrobic w niej jakies nowatorskie rozwiazanie to bedziesz mial wiecej roboty niz gdybys pisal wszystko od 0. Chodzi o to ze aby cos podczepic musisz wiedziec jak to zrobic i jak sie wgryzc w ten system aby to dzialalo, takze jak masz zrobic cos swojego to lepiej sobie napisz to po swojemu bo przerabianie skryptow CMSa bedzie trudniejsze niz gdybys to od 0 napisal.

Co do dzialania na serwerze jak dziala u Ciebie i na innych a na tym jednym nie to zapewne cos nie tak jest z tym jednym

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0