Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Seriale turcesti/coreene online H...

Merita un Termostat Smart pentru ...

Sfat achizitie MTB Devron Riddle

Problema mare cu parintii= nervi ...
 switch microtik

Permis categoria B la 17 ani

Sfaturi pentru pregatirea de eval...

Crapaturi placa
 cum imi accesez dosarul electroni...

Momentul Aprilie 1964

Sursa noua - zgomot ?

A fost lansat Ubuntu 24.04 LTS
 Pareri apartament in zona Berceni?

Free streaming SkyShowtime de la ...

Skoda Fabia 1.0 TSI (110 CP)- 19 ...

Mezina familiei, Merida BigNine
 

site web in php

- - - - -
  • Please log in to reply
18 replies to this topic

#1
spe_ripper

spe_ripper

    Senior Member

  • Grup: Senior Members
  • Posts: 3,519
  • Înscris: 04.03.2009
salut.

vreau sa fac un site web prin care se acceseaza o baza de date de pe un server.
vreau sa folosesc php, html, jquery si javascript.

vreau sa fie multi-user, in sensul ca mai multi useri se pot loga in acelasi timp la site si accesa baza de date de pe diferite calculatoare.

ce am descris mai sus este pur si simplu cam definitia oricarui site web :).  

nu stiu cum/de unde sa ma apuc. am facut pagina principala ca design si tot, vreau ca atunci cand te conectezi sa fie vizible anumite functionalitati in functie de tipul userului. si mai vreau ca atunci cand accesezi baza de data (search, add, diverse rapoarte) sa fie afisat intr-o zona a siteului, "show zone".
astfel meniul de sus si sidebarul sa ramana la fel toata sesiunea de lucru, tot ce accesez din ele sa fie afisat in "show zone".

nu as vrea sa folosec frameworks, desi nici nu stiu care ar fi cel mai potrivit, deci as sa fie php pur.

am tot felul de necunoscute privind asigurarea securitatii, cum pot sa se logheze mai multi in acelasi timp iar eu sa pastrez datele fiecaruia, cum sa pasez anumite variabile intre diferite pagini de php.... tot citesc, tot citesc...si nu ma dumiresc :)

#2
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 20,032
  • Înscris: 24.02.2006
indubitabil.

#3
florinbad

florinbad

    Senior Member

  • Grup: Senior Members
  • Posts: 4,272
  • Înscris: 14.11.2006
Indubitabil si de la mine. Posted Image

#4
Flat

Flat

    Bugetar Esențial

  • Grup: Senior Members
  • Posts: 32,875
  • Înscris: 23.06.2006
ordinea pe care o folosesc eu (foloseam, ca nu prea mai lucrez site-uri) si iti recomand

1 cel mai bine incepi de la structura bazei de date. tabele, relatii intre ele, mecanisme de insert/update. faci intai scheletul, nu pielea. instaleaza-ti si foloseste phpMyAdmin
2 dupa ce ai structurat asta te gandesti cum manipulezi datele prin interfata si scrii flow-ul, algoritmii, deci functiile php necesare. le bagi in pagini, le testezi
3 abia ultimul pas este designul, cand ai totul (sau aprox. 90%) functional in format vizual chior poti incepe sa aplici stiluri si sa-l infrumusetezi

ar fi bine sa ai idee in pasul 2 cam cum va fi structurata interfata, macar la nivel de blocuri (header, content, menu, footer)
cu pasul 3 poti sa rezolvi cu un designer, sau sa folosesti librarii de elemente grafice/css, programatorii nu sunt intotdeauna buni la design desi ne incapatanam sa facem si asta


despre logare, nu e nici o problema sa fie mai multi logati odata, orice baza de date suporta conexiuni multiple. mysql de ex.
datele astea le tii in SESSION.
var intre pagini le transporti cu GET sau POST

#5
spe_ripper

spe_ripper

    Senior Member

  • Grup: Senior Members
  • Posts: 3,519
  • Înscris: 04.03.2009

 _Smiley_, on 13 octombrie 2016 - 13:47, said:

indubitabil.

 florinbad, on 13 octombrie 2016 - 13:58, said:

Indubitabil si de la mine. Posted Image

Va multumesc! Respect!


@Flat:

Am inceput cu desginul pentru ca era partea mai usoara, sa-mi amintesc un pic de html, sa invat css etc. Am nevoie si de "design" pentru ca am meniuri in care afisez diferite lucruri pe care le incarc din baza de date. Plus lucrez la fiecare functionalitate in parte.
Baza de date o fac in Mysql. Am inceput conceperea ei, initial 1 tabel, cel de useri, deorece vreau sa invat pe el, gen sa adaug, sa sterg, sa caut, sa modific. Cand pot sa zic ca o sa inteleg binisor chestiile astea, pot sa fac si restul tabelelor si sa creez relatiile dintre ele, oricum nu e ceva complicat ca structura baza mea de date.

Stiu sa transfer cu Get si Post, problema e ca nu stiu sa returnez mai multe variabile in pagina principala, in afara de a le memora in variabile SESSION.
Caz concret, am pagina principala cu un formular de logare, apelez o pagina php care verifica in baza de data daca userul exista si ce drepturi are si vreau sa returnez catre pagina principala (memorandu-le in anumite variabile) numele userului si clasa de care apartine.... asta nu reusesc sa fac in afara de a folosi SESSION.
Stiu ca sunt chestii de baza....

Edited by spe_ripper, 13 October 2016 - 15:26.


#6
Flat

Flat

    Bugetar Esențial

  • Grup: Senior Members
  • Posts: 32,875
  • Înscris: 23.06.2006
nu trebuie sa returnezi mare lucru, iti trebuie doar un id
sa zicem in tabela users ai campurile id username password group
sa zicem ca ai in tabela 1 gigel 2 spe_ripper 3 flat
eu daca m-am logat pe pagina de login tu tii in sesiune doar id=3
p-ala il trimiti tot timpul
pe baza lui in pagina ta principala sau oriunde vrei faci un query in db si afli ce user are id 3, ce drepturi are etc.
in functie de asta ii afisezi sau nu lucruri
sigur poti trimite mai multe variabile odata, nu numai id, dar asta e esential
deci nu cari dupa tine decat minimul necesar, restul afli citind din db

#7
spe_ripper

spe_ripper

    Senior Member

  • Grup: Senior Members
  • Posts: 3,519
  • Înscris: 04.03.2009
pai fac o singura data verificarea clasei, odata cu verificarea daca exista userul in baza de date.
adica bag user&parola, verific daca e in baza de date, returnez in pagina principala numele si clasa....numele imi trebuie sa il afisez in header(adica sa ii modific continutul) si clasa ca sa activez/dezactivez anumite meniuri la inceput, pt atat imi trebuie, deci nu ar avea rost sa mai interoghez de fiecare data dupa nume si clasa...asta se face o singura data la conectare, dupa nu mai imi trebuie sa activez/dezactivez meniuri, pentru ca cele la care sa zicem ca o anumita clasa de user nu ar avea acces, le grupez intr-o singura parte si gata.
cel mai simplu ar fi sa retin tot in session daca gasesc userul. dar eram curios cum pot sa fac altfel. pentru php-ul pe care il apelez sa returneze mai multe variabile....
citisem si inputuri hidden....

singura idee e sa apelez de mai multe ori dupa fiecare varibiala care imi trebuie in parte..dar asta inseamna sa fac mai multe php.uri...ca daca scriu o functie php intr-o pagina nu stie de ea in cealalta...

Edited by spe_ripper, 13 October 2016 - 16:45.


#8
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,238
  • Înscris: 24.02.2007
  • Pui pe hartie tot ce vrei sa obtii
  • Extragi substantivele si verbele din ce ai pus pe hartie
  • Creezi clase in php pentru fiecare substantiv identificat si avand drept metode fiecare verb identificat. Obtii asa niste domain classes, gen: $auth->getLoggedInUser(), $user->getAvailableLinks
  • Scrii tot codul necesar din acele clase pentru a implementa logica dorita
  • Definesti niste puncte de intrare pe unde primesti cereri din afara, le dai modelului spre procesare si apoi returnezi raspunsuri ca json sau xml
  • Abia acum iti pui problema de ce fel de baza de date ai nevoie si scrii cod care sa persiste datele
  • In javascript scrii clienti ajax ce intreaba serverul diverse, si pe baza raspunsurilor, modifica ce e afisat utilizatorului

Edited by dani.user, 13 October 2016 - 17:07.


#9
red46

red46

    Senior Member

  • Grup: Senior Members
  • Posts: 4,557
  • Înscris: 06.03.2016
Si dupa vezi ca face topic ca i-au spart "hackerii" site-ul web.

#10
spe_ripper

spe_ripper

    Senior Member

  • Grup: Senior Members
  • Posts: 3,519
  • Înscris: 04.03.2009
:)

cred ca m-am prins ce ce ziceam mai devreme, returnez input-uri hidden.
mersi pentru sfaturi. pana sa ajung la impartit in clase si securitate mai am de mancat niste paine

#11
Flat

Flat

    Bugetar Esențial

  • Grup: Senior Members
  • Posts: 32,875
  • Înscris: 23.06.2006

 spe_ripper, on 13 octombrie 2016 - 16:38, said:

daca scriu o functie php intr-o pagina nu stie de ea in cealalta...

ba stie, daca o incluzi una intr-alta
http://www.w3schools...hp_includes.asp

#12
spe_ripper

spe_ripper

    Senior Member

  • Grup: Senior Members
  • Posts: 3,519
  • Înscris: 04.03.2009
si pe acelasi sistem, daca vreau sa includ un fisier cu clase in JS, ca sa le recunoasca in pagina principala, trebuie sa bag <script language="javascript" src="../blabla.js" type="text/javascript"></script>
in <head> nu?

#13
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,238
  • Înscris: 24.02.2007

 red46, on 13 octombrie 2016 - 17:28, said:

Si dupa vezi ca face topic ca i-au spart "hackerii" site-ul web.

Sansele sa se intample asta sunt chiar mai mari daca amesteca php si html la tot pasul, "ca in reteta traditionala", decat daca organizeaza codul mai bine.

#14
maxtron_69

maxtron_69

    Senior Member

  • Grup: Senior Members
  • Posts: 2,534
  • Înscris: 18.08.2010

 spe_ripper, on 13 octombrie 2016 - 19:15, said:

Posted Image

cred ca m-am prins ce ce ziceam mai devreme, returnez input-uri hidden.
mersi pentru sfaturi. pana sa ajung la impartit in clase si securitate mai am de mancat niste paine
Incepe prin a spune ce folosesti pt dezvoltare, LAMP, WAMP, XAMP etc

Si eventual imparte totul in bucatele mici la care ti se poate raspunde... de ex, login, pui aici codul care l-ai scris si ceri ajutor...
Avantajul e ca vei gasi tone de exemple si tutoriale pe net

 spe_ripper, on 14 octombrie 2016 - 10:21, said:

si pe acelasi sistem, daca vreau sa includ un fisier cu clase in JS, ca sa le recunoasca in pagina principala, trebuie sa bag <script language="javascript" src="../blabla.js" type="text/javascript"></script>
in <head> nu?
Clase? Faci si oop?

Javascriptul il incluzi in html.
PHP este un pre-procesor, e pe alt nivel.

Dar in principiu, da, merge cum ai zis tu, cu script in head (sau footer uneori)

#15
spe_ripper

spe_ripper

    Senior Member

  • Grup: Senior Members
  • Posts: 3,519
  • Înscris: 04.03.2009
folosesc Wamp.

problema loginului am rezolvat-o intr-un mod sau altul, tot cu ceva luat de pe net pentru validare. sa zicem ca securitatea nu e ceva foarte important acum,
problema mea e ca codul arata foarte urat si d-abia am inceput sa scriu.....stiu asta :(

aici e php unde se verifica daca userul e in baza de date
<?php

$user = trim($_POST["user"]);;
$pass = trim($_POST["pass"]);;

if ($user == "") {   // asta nu cred ca se va intampla vreodata
echo "yuhuu";
}
else {
$conn = new mysqli("localhost", "florin", "florin", "myapril");
if ($conn->connect_error) {
	 die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM users WHERE user_name= '" . $user."'";
$result = $conn->query($sql);
$row=$result->fetch_assoc();
 
if ($result->num_rows == 0) {
  echo "User not found!";
}
else {
  if ($row["user_name"] == $user and $row["user_pass"] == $pass) {
	  $nume = $row["user_firstname"]. " " . $row["user_lastname"];
   $class = $row["user_class"];
   echo "User connected!"; 
   $conn->close();
  }
  else {
	  echo "Password wrong!";
   $conn->close();
  }
}
}
?>


metoda de verificare in BD a userului este ciudata si cred ca se putea face mult mai simplu. aici daca gasesc userul vreau sa returnez niste inputuri cu numele lui si clasa, inca nu am apucat sa le scriu.

iar aici e pagina principala
am pus in scripturi diferite ca sa delimitez eu functia de verificare a datelor din formular inainte de transmitere de pasul urmator.
<script>
$(document).ready(function(){

$("#form1").submit(function(){
  //event.preventDefault();
  txt1 = $("#i1").val();
  txt2 = $("#i2").val();
  if (txt1 != "" && txt2 != "") {
   $.post("login_db.php", {user: txt1, pass: txt2}, function(data, status){
	alert(status);
	alert(data);
		   
	if (data == "User connected!") {
	 // aici daca gasesc userul, in zona de afisaj a paginii dau acces la anumite meniuri, ascund formularul de logare etc. aici voi schimba si in loc de user connected, voi returna clasa si numele,
	 // si in functie de clasa voi afisa anumite meniuri
	 $("#form1").hide();
	 $("h4").hide();
	 $("#liSearch").attr("class","");
	 $("#liAdmin").attr("class", "dropdown");
	 $("#liFiles").attr("class", "dropdown");
	 $("#liReports").attr("class", "dropdown");
	 $("#liTools").attr("class", "dropdown");
	 $("#login1").html("<span id='span1' class='glyphicon glyphicon-log-out'></span> Logout");
	 $("#aUser").text("");
	}
	else {
	 $("#i1").val("");
	 $("#i2").val("");
	}
   
   });
   event.preventDefault(); 
  }
});

 
});

</script>
<script type="text/javascript">
var ck_username = /^[A-Za-z0-9]{3,20}$/;
var ck_password =  /^[A-Za-z0-9!@#$%^&*()]{4,20}$/;
function checkForm(form) {
  var user = form.user.value;
  var pass = form.pass.value;
  var errors = [];

  if (!ck_username.test(user)) {
	 errors[errors.length] = "UserName must have at least 3 letters and no spaces.";
   }
   if (!ck_password.test(pass)) {
	 errors[errors.length] = "Password must have at least 4 letters and no spaces. ";
   }
   if (errors.length > 0) {
	  reportErrors(errors);
	 return false;
	 }
	 return true;
}
function reportErrors(errors){
   var msg = "Please Enter Valide Data...\n";
   for (var i = 0; i<errors.length; i++) {
	var numError = i + 1;
	 msg += "\n" + numError + ". " + errors[i];
  }
   alert(msg);
}

</script>


deci idei? :)

#16
Flat

Flat

    Bugetar Esențial

  • Grup: Senior Members
  • Posts: 32,875
  • Înscris: 23.06.2006
si daca eu dau disable la javascript din browser ce verificari mai face. din parti. mai afiseaza menu sau o pagina alba?
cel mai sigur verifici pe POST toate acele conditii

#17
spe_ripper

spe_ripper

    Senior Member

  • Grup: Senior Members
  • Posts: 3,519
  • Înscris: 04.03.2009
de afisat afiseaza meniul disabled si formularul de logare...iar daca dai disable la js probabil nu mai face nimic cu datele pe care le bagi in formular Posted Image
pai si atunci ce fac? nu mai folosesc javascript deloc?

Edited by spe_ripper, 14 October 2016 - 14:55.


#18
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,238
  • Înscris: 24.02.2007
Si cod urat si praf la securitate; cei mai rau din fiecare.

Nu te baza ca j&#097;v&#097;scriptu opreste pe cineva sa aleaga un user mai lung/scurt de o anumite lungime
Invata sa folosesti interogari parametrizate (acum iti poate sterge oricine baza de date)
Reciteste ce-am scris mai sus

Edited by dani.user, 14 October 2016 - 16:07.


Anunturi

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate