Advertisement
Guest User

Untitled

a guest
May 25th, 2015
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.41 KB | None | 0 0
  1. <?php
  2. // error_reporting(E_ALL | E_DEPRECATED | E_STRICT);
  3.  
  4. Class Users{
  5. /********************************
  6. SETTING
  7. *********************************/
  8. // le credenziali di accesso al database
  9. private $host_db = 'localhost';
  10. private $user_db = 'root';
  11. private $pass_db = '';
  12. private $name_db = 'login_utenti';
  13. // gli url che gestinranno le operazioni di login
  14. public $Urls = array(
  15. 'login_page' => 'http://localhost/login0/login.php',
  16. 'register_page' => 'http://localhost/login0/registrazione.php',
  17. 'logout_page' => 'http://localhost/login0/logout.php',
  18. 'index_page' => 'http://localhost/index.php',
  19. );
  20.  
  21. /*******************************************
  22. se non sai ciò che fai non toccare più nulla
  23. *******************************************/
  24. /*risorse di connessione*/
  25. protected $conn;
  26. protected $selezione_db;
  27.  
  28. /*variabili di registrazione*/
  29. protected $reg_username;
  30. protected $reg_email;
  31. protected $reg_pass;
  32. protected $reg_confirm_pass;
  33. protected $reg_crypt_pass;
  34.  
  35. /*variabili di login*/
  36. protected $login_username;
  37. protected $login_password;
  38. protected $login_cryptpass;
  39. protected $login_iduser;
  40.  
  41. /*variabili per gestire gli errori*/
  42. public $messages = array(
  43. 1 => 'Il campo username è obbligatorio.',
  44. 2 => 'Il campo email è obbligatorio.',
  45. 3 => 'Il campo password è obbligatorio.',
  46. 4 => 'Le due password non coincidono.',
  47. 5 => 'Il campo username contiene caratteri non validi. Sono consentiti solo lettere, numeri il i seguenti simboli . _ -.',
  48. 6 => 'Inserisci una email con sitassi corretta.',
  49. 7 => 'La password scelta è eccessivamente breve. Scegli una password di almeno 8 caratteri.',
  50. 8 => 'Esiste già un utente registrato con questo username.',
  51. 9 => 'Esiste già un utente registrato con questa email.',
  52. 10 => 'Registrazione effettuata con successo.',
  53. 11 => 'Login errato',
  54. 12 => 'Login eseguito con successo.',
  55. 13 => 'Logout eseguito con successo.',
  56. 14 => 'Per accedere a questa pagina occorre essere loggati.',
  57. );
  58.  
  59. public $message_script;
  60.  
  61. // il costruttore attiva la connessione a mysql
  62. public function __construct(){
  63. $this->connessione();
  64. }
  65. /******************
  66. CONNESSIONE A MYSQL
  67. ******************/
  68. protected function connessione(){
  69. $this->conn = @mysql_connect($this->host_db, $this->user_db, $this->pass_db) or die(mysql_error());
  70. $this->selezione_db = mysql_select_db($this->name_db, $this->conn) or die(mysql_error());
  71. return TRUE;
  72. }
  73.  
  74. /*************************************
  75. ALCUNI METODI PER ESEGUIRE VALIDAZIONI
  76. *************************************/
  77.  
  78. // verifica campo generico non vuoto (TRUE se non vuoto)
  79. public function empty_string($string){
  80. $string = trim($string);
  81. if($string==''){
  82. return TRUE;
  83. }
  84. else{
  85. return FALSE;
  86. }
  87. }
  88.  
  89. // verifica sintassi username
  90. public function is_username($username){
  91. $regex = '/^[a-z0-9\.\-_]{3,30}$/i';
  92. return preg_match($regex, $username);
  93. }
  94.  
  95. // verifica sintassi email (TRUE se ok)
  96. public function is_email($email){
  97. $regex = '/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/';
  98. return preg_match($regex, $email);
  99. }
  100.  
  101. // verifica sintassi password (per semplicità solo lunghezza) (TRUE se ok)
  102. public function is_secure_password($password){
  103. if(strlen($password)>=8){
  104. return TRUE;
  105. }
  106. else{
  107. return FALSE;
  108. }
  109. }
  110.  
  111. /*****************************************************
  112. METODI PER VERIFICARE ESISTENZA DI USERNAME E PASSWORD
  113. ******************************************************/
  114.  
  115. // verifica esistenza username (TRUE se esiste)
  116. public function isset_username($username){
  117. $query = "SELECT COUNT(username) AS count
  118. FROM users
  119. WHERE username='".mysql_real_escape_string($username)."'
  120. LIMIT 1";
  121. $result = mysql_query($query) or die(mysql_error());
  122. $row = mysql_fetch_array($result);
  123. if($row['count']==1){
  124. return TRUE;
  125. }
  126. else{
  127. return FALSE;
  128. }
  129. }
  130.  
  131. // verifica esistenza email (TRUE se esiste)
  132. public function isset_email($email){
  133. $query = "SELECT COUNT(email) AS count
  134. FROM users
  135. WHERE email='".mysql_real_escape_string($email)."'
  136. LIMIT 1";
  137. $result = mysql_query($query) or die(mysql_error());
  138. $row = mysql_fetch_array($result);
  139. if($row['count']==1){
  140. return TRUE;
  141. }
  142. else{
  143. return FALSE;
  144. }
  145. }
  146.  
  147. /******************************
  148. I FORM DI LOGIN E REGISTRAZIONE
  149. ******************************/
  150. public function get_login_form(){
  151. $html = '
  152. <form action="' .$this->Urls['login_page']. '" method="post" id="form_login">
  153. <fieldset>
  154. <legend>Login<legend>
  155. <label for="login_user">Username</label>
  156. <input type="text" name="username" id="login_user" />
  157. <label for="login_pass">Password</label>
  158. <input type="password" name="pass" id="login_pass" />
  159. <input type="submit" name="login" value="login" id="login_submit"/>
  160. </fieldset>
  161. </form>';
  162. return $html;
  163. }
  164.  
  165. public function get_register_form(){
  166. $html = '
  167. <form action="' .$this->Urls['register_page']. '" method="post" id="form_register" onsubmit="return checkForm(this);">
  168. <fieldset>
  169. <legend>Registrazione<legend>
  170. <label for="reg_user">Username*</label>
  171. <input type="text" name="username" id="reg_user" />
  172. <label for="reg_email">Email*</label>
  173. <input type="text" name="email" id="reg_email" />
  174. <label for="reg_pass1">Password*</label>
  175. <input type="password" name="pass1" id="reg_pass1" />
  176. <label for="reg_pass2">Confirm Password*</label>
  177. <input type="password" name="pass2" id="reg_pass2" />
  178.  
  179. <div class="normativa">
  180. <h4>Condizioni generali del Servizio:</h4>
  181. softwareone.it si riserva il diritto di modificare, sospendere o limitare il servizio in ogni momento e senza preavviso alcuno.
  182. Con l iscrizione l utilizzatore dichiara espressamente di utilizzare softwareone.it in conformità alle condizioni del presente contratto, nonchè ogni altra regola di utilizzo eventualmnte prevista da softwareone.it (anche successivamente al presente accordo) e agli altri diritti applicabili.
  183. Tutti i servizi potranno essere utilizzati soltanto in seguito all iscrizione.
  184. Si può iscrivere chiunque compili il modulo di iscrizione in modo completo e veritiero, sempre che il richiedente sia in possesso dei requisiti richiesti per l iscrizione.
  185. In particolar modo:
  186. <li> Non sono ammessi al servizio siti concernenti o promuoventi attività Illegali</li>
  187. <li> Non sono ammessi al servizio siti istiganti alla violenza e/o all odio raziale</li>
  188. <li> Non sono ammessi al servizio siti pornografici o a sfondo erotico, osceni, blasfemi e/o comunque di cattivo gusto
  189. </li>
  190.  
  191. E" facolta di softwareone.it cancellare in qualsiasi momento, senza preavviso e senza indicare le cause, gli utenti che non rispettino il presente accordo o che risultino comunque sgraditi per qualsiasi motivo.
  192. Gli utenti esclusi e/o cancellati dal servizio sono tenuti a rimuovere dalle loro pagine ogni codice HTML fornito da softwareone.it
  193. <br/>
  194. L"utente si impegna ad utilizzare il presente servizio in modo conforme alla legge ed alla netiquette. L"utente verrà ritenuto il solo responsabile delle violazioni eventualmente compiute per il tramite del presente servizio.
  195. In caso di violazioni alla legge softwareone.it sospenderà immediatamente l"accesso ai servizi e fornirà alle autorita competenti tutte le informazioni in proprio possesso per risalire all"identità dell"utente.
  196. <br/>
  197. Se i tutori o i genitori permettono ai minori di anni 18 l"utilizzo di softwareone.it, essi assumono tutte le responsabilita per il comportamento del minore relativamente all"accesso, al controllo e agli eventuali abusi compiuti.
  198. <br/>
  199. L"utente s"impegna a proteggere l"accesso al servizio da terzi non autorizzati ed a custodire in luogo sicuro i dati di accesso al servizio.
  200. <br/>
  201. L"utente accetta l"inserimento di pubblicità commerciale all"interno dei servizi, riconoscendo a softwareone.it la possibilità di vendere spazi pubblicitari a pagamento su tutte le pagine del servizio.
  202. <br/>
  203. softwareone.it si impegna a fornire il miglior servizio possibile, tuttavia questo viene fornito così com"è, senza garanzia alcuna circa il suo corretto e continuativo funzionamento.
  204. L"utente rinuncia pertanto ad avanzare pretese risarcitorie di alcun tipo a seguito di danni eventualmente subiti o arecati a terzi durante la fruizione del servizio o a seguito di malfunzionamenti dello stesso.
  205. <br/>
  206. softwareone.it si riserva il diritto di modificare, sospendere o limitare il servizio in ogni momento e senza preavviso alcuno.
  207. <br/>
  208. L"utilizzo dei servizi di softwareone.it è condizionato alla totale accettazione del presente contratto in ogni suo punto.
  209. </div>
  210.  
  211. <div class="normativa">
  212. <h4>Privacy e Trattamento dei dati personali:</h4>
  213. In ottemperanza al dlgs 196/2003 ("Codice in materia di protezione dei dati personali") si forniscono alcune informazioni circa l"utilizzo da parte di softwareone.it
  214. <br/>
  215. Il trattamento sarà realizzato mediante strumenti informatici e telematici.
  216. Tali dati non saranno comunicati o accessibili a terzi salvo i casi previsti dalla legge e salvo le necessità eventualmente imposte da una corretta erogazione del serizio.
  217. <br/>
  218. All"utente sono riconosciuti i diritti di cui all"articolo 7 del dlgs L. 196/2003 alcuni dei quali sotto brevemente sintetizzati.
  219. Si invita gli utenti a NON procedere in alcun modo all"inserimento nella rubrica di dati sensibili, ossia di dati idonei a rilevare l"origine razziale ed etnica, le convinzioni religiose, filosofiche o di altro genere, le opinioni politiche, l"adesione a partiti, sindacati, associazioni o organizzazioni a carattere religioso, filosofico, politico o sindacale, nonchè idonei a rilevare lo stato di salute e le abitudini sessuali sessuale, in quanto softwareone.it non li richiede essendo priva dell"autorizzazione necessaria ai sensi dell"articolo 26 del dlgs 196/2003.
  220. <br/>
  221. Il decreto legislativo 196/2003 (di seguito "Decreto legislativo") disciplina il trattamento dei dati personali.
  222. Per dato personale si intende qualunque informazione relativa a persona fisica, persona giuridica, ente od associazione (di seguito l"interssato"), identificati o identificabili, anche indirettamente, mediante riferimento a qualsiasi altra informazione, ivi compreso un numero di identificazione personale.
  223. Per trattamento dei dati si intende qualunque operazione o complesso di operazioni, effettuati anche senza l "ausilio di strumenti elettronici, concernenti la raccolta, la registrazione, l organizzazione, la conservazione, la consultazione, l"elaborazione, la modificazione, la selezione, l"estrazione, il raffronto, l"utilizzo, l"interconnessione, il blocco, la comunicazione, la diffusione, la cancellazione e la distruzione di dati, anche se non registrati in una banca di dati;
  224. Il suddetto decreto legislativo prevede per questi trattamenti, in via di principio e con qualche specifica eccezione, il consenso dell"interessato.
  225.  
  226. E" istituita per legge la figura del garante, un organo collegiale preposto alla tutela dei soggetti per quanto riguarda il trattamento dei dati personali.
  227. E" previsto altresì che al soggetto interessato vengano fornite le opportune informazioni relative ai contenuti del decreto legislativo con particolare riferimento ai propri diritti; tali informazioni sono state appositamente riassunte nella presente nota informativa.
  228.  
  229. L"art. 7 del Decreto Legislativo attribuisce all"interessato specifici diritti.
  230.  
  231. L"interessato ha diritto di ottenere l"indicazione:
  232.  
  233. a) dell"origine dei dati personali;
  234.  
  235. b) delle finalità e modalità del trattamento;
  236.  
  237. c) della logica applicata in caso di trattamento effettuato con l"ausilio di strumenti elettronici;
  238.  
  239. d) degli estremi identificativi del titolare, dei responsabili e del rappresentante designato ai sensi dell"articolo 5, comma 2;
  240.  
  241. e) dei soggetti o delle categorie di soggetti ai quali i dati personali possono essere comunicati o che possono venirne a conoscenza in qualità di rappresentante designato nel territorio dello Stato, di responsabili o incaricati.
  242.  
  243. L"interessato ha diritto di ottenere:
  244.  
  245. a) l"aggiornamento, la rettificazione ovvero, quando vi ha interesse, l"integrazione dei dati;
  246.  
  247. b) la cancellazione, la trasformazione in forma anonima o il blocco dei dati trattati in violazione di legge, compresi quelli di cui non è necessaria la conservazione in relazione agli scopi per i quali i dati sono stati raccolti o successivamente trattati;
  248.  
  249. c) l"attestazione che le operazioni di cui alle lettere a) e b) sono state portate a conoscenza, anche per quanto riguarda il loro contenuto, di coloro ai quali i dati sono stati comunicati o diffusi, eccettuato il caso in cui tale adempimento si rivela impossibile o comporta un impiego di mezzi manifestamente sproporzionato rispetto al diritto tutelato.
  250.  
  251. L"interessato ha diritto di opporsi, in tutto o in parte:
  252.  
  253. a) per motivi legittimi al trattamento dei dati personali che lo riguardano, ancorchè pertinenti allo scopo della raccolta;
  254.  
  255. b) al trattamento di dati personali che lo riguardano a fini di invio di materiale pubblicitario o di vendita diretta o per il compimento di ricerche di mercato o di comunicazione commerciale.
  256.  
  257. In merito a quanto sopra esposto si avvisa che l"unico "dato personale" archiviato sarà il vostro indirizzo email il quale verrà usato esclusivamente per fini commerciali, promozionali ed informativi.
  258.  
  259. Con l"iscrizione al servizio l"utente dichiara di accettare il trattamento dei dati personali rilasciati in conformità alle finalità ivi indicate.
  260. </div>
  261. <input type="checkbox" name="terms"/>
  262. <span style="font-size:14px;">Accetto le condizioni generali del Servizio</span>
  263. <input type="submit" name="register" value="registra" id="reg_submit" />
  264. <input type="reset" name="reset" value="cancella" id="reg_reset" />
  265. </fieldset>
  266. </form>';
  267. return $html;
  268. }
  269.  
  270. /*****************************
  271. LINK LOGOUT
  272. *****************************/
  273. public function get_link_logout(){
  274. if($this->is_logged()){
  275. return '<a href="'.$this->Urls['logout_page'].'" class="logout"><u style="font-size:12px;">Logout</u></a>';
  276. }
  277. return '';
  278. }
  279.  
  280. /*******************************
  281. METODO PER CRIPTARE LE PASSWORD
  282. *******************************/
  283. public function crypt_pass($pass){
  284. return sha1($pass);
  285. }
  286.  
  287. /*****************************
  288. ESECUZIONE DELLA REGISTRAZIONE
  289. ******************************/
  290. public function esegui_registrazione(){
  291. // se il form e i suoi input sono stati inviati
  292. if(isset($_POST['register']) AND
  293. isset($_POST['username']) AND
  294. isset($_POST['email']) AND
  295. isset($_POST['pass1']) AND
  296. isset($_POST['pass2'])){
  297. //valorizziamo alcune variabili
  298. $this->reg_username = trim($_POST['username']);
  299. $this->reg_email = trim($_POST['email']);
  300. $this->reg_pass = trim($_POST['pass1']);
  301. $this->reg_confirm_pass = trim($_POST['pass2']);
  302. // criptiamo la password
  303. $this->reg_crypt_pass = $this->crypt_pass($this->reg_pass);
  304. // eseguiamo la validazione degli input
  305. $valid_input = $this->check_input_registrazione();
  306. // se sono validi
  307. if($valid_input===TRUE){
  308. // inseriemo all'interno del database i dati
  309. $this->query_insert_registrazione();
  310. // settiamo il messaggio di successo della registrazione
  311. $this->message_script = 10;
  312. return TRUE;
  313. }
  314. }
  315. return FALSE;
  316. }
  317.  
  318. // verifica che gli input siano corretti
  319. protected function check_input_registrazione(){
  320. if($this->empty_string($this->reg_username)){
  321. $this->message_script = 1;
  322. return FALSE;
  323. }
  324. else if($this->empty_string($this->reg_email)){
  325. $this->message_script = 2;
  326. return FALSE;
  327. }
  328. else if($this->empty_string($this->reg_pass)){
  329. $this->message_script = 3;
  330. return FALSE;
  331. }
  332. else if($this->reg_pass != $this->reg_confirm_pass){
  333. $this->message_script = 4;
  334. return FALSE;
  335. }
  336. else if(!$this->is_username($this->reg_username)){
  337. $this->message_script = 5;
  338. return FALSE;
  339. }
  340. else if(!$this->is_email($this->reg_email)){
  341. $this->message_script = 6;
  342. return FALSE;
  343. }
  344. else if(!$this->is_secure_password($this->reg_pass)){
  345. $this->message_script = 7;
  346. return FALSE;
  347. }
  348. else if($this->isset_username($this->reg_username)==TRUE){
  349. $this->message_script = 8;
  350. return FALSE;
  351. }
  352. else if($this->isset_email($this->reg_email)==TRUE){
  353. $this->message_script = 9;
  354. return FALSE;
  355. }
  356.  
  357. return TRUE;
  358. }
  359.  
  360. // esecuzione della query insert di registrazione
  361. protected function query_insert_registrazione(){
  362. $query = "
  363. INSERT INTO users
  364. SET
  365. username='".mysql_real_escape_string($this->reg_username)."',
  366. pass='".mysql_real_escape_string($this->reg_crypt_pass)."',
  367. email='".mysql_real_escape_string($this->reg_email)."',
  368. data_reg= NOW()";
  369. $result = mysql_query($query) or die(mysql_error());
  370. return mysql_insert_id();
  371. }
  372.  
  373. /*******************
  374. ESECUZIONE DEL LOGIN
  375. ********************/
  376. public function esegui_login(){
  377. // se il form di login e i sui tutti input sono stati inviati
  378. if(isset($_POST['login']) AND isset($_POST['username']) AND isset($_POST['pass'])){
  379. // valorizziamo delle variabili
  380. $this->login_username = trim($_POST['username']);
  381. $this->login_password = trim($_POST['pass']);
  382. // criptiamo la password
  383. $this->login_cryptpass = $this->crypt_pass($this->login_password);
  384. // validiamo i dati (non devono essere vuoti)
  385. $not_empty_input = $this->check_input_login();
  386. // se la validazione è andata a buon fine
  387. if($not_empty_input===TRUE){
  388. // eseguiamo la query e verifichiamo se individua le credenziali
  389. if($this->query_select_login()==TRUE){
  390. // settiamo lo status di utente loggato
  391. $this->set_logged($this->login_iduser);
  392. // settiamo l'username
  393. $this->set_username($this->login_username);
  394. // settiamo il messaggio di successo del login
  395. $this->message_script = 12;
  396. return TRUE;
  397. }
  398. // se la query non ha trovat utenti con quelle credenziali
  399. else{
  400. // settiamo un messaggio di insuccesso dell'operazone
  401. $this->message_script = 11;
  402. }
  403. }
  404. }
  405. return FALSE;
  406. }
  407.  
  408. // verifica che gli input del login non siano vuoti
  409. protected function check_input_login(){
  410. if($this->empty_string($this->login_username)){
  411. $this->message_script = 1;
  412. return FALSE;
  413. }
  414. else if($this->empty_string($this->login_password)){
  415. $this->message_script = 3;
  416. return FALSE;
  417. }
  418. return TRUE;
  419. }
  420.  
  421. // esecuzione della qeury per verificare il login
  422. protected function query_select_login(){
  423. $query = "
  424. SELECT id FROM users
  425. WHERE
  426. username='".mysql_real_escape_string($this->login_username)."' AND
  427. pass='".mysql_real_escape_string($this->login_cryptpass)."'";
  428. $result = mysql_query($query) or die(mysql_error());
  429. // se individua l'utente
  430. if(mysql_num_rows($result)==1){
  431. $row = mysql_fetch_array($result);
  432. $this->login_iduser = $row['id'];
  433. return TRUE;
  434. }
  435. return FALSE;
  436. }
  437.  
  438. /***********************************
  439. VERIFICA DELLO STATO DI LOGIN UTENTE
  440. ***********************************/
  441.  
  442. // verifica login
  443. public function is_logged(){
  444. return isset($_SESSION['auth']);
  445. }
  446.  
  447. // set login
  448. protected function set_logged($id_user){
  449. $_SESSION['auth'] = $id_user;
  450. $_SESSION ['referrer'] = $_SERVER ['HTTP_REFERER'] ;
  451.  
  452. return;
  453. }
  454.  
  455. // access denied
  456. public function access_denied(){
  457. if(!$this->is_logged()){
  458. header("location: ".$this->Urls['login_page']."?message=14");
  459. exit;
  460. }
  461. return;
  462. }
  463.  
  464. protected function set_username($username){
  465. $_SESSION['username_logged'] = $username;
  466. return;
  467. }
  468.  
  469. public function get_username(){
  470. return isset($_SESSION['username_logged']) ? $_SESSION['username_logged'] : '';
  471. }
  472.  
  473. // logout
  474. public function logout(){
  475. session_unset();
  476. session_destroy();
  477. setcookie(session_name(), '', time()-42000, '/');
  478. header("location, Refresh:2; ".$this->Urls['index_page']."?message=13");
  479.  
  480. return;
  481. }
  482.  
  483. /*****************************
  484. METODO PER OTTENERE I MESSAGGI
  485. ******************************/
  486. public function get_message(){
  487. if(isset($_GET['message'])){
  488. $this->message_script = $_GET['message'];
  489. }
  490. $key = intval($this->message_script);
  491. if(array_key_exists($key, $this->messages)){
  492. return $this->messages[$key];
  493. }
  494. return FALSE;
  495. }
  496. }
  497.  
  498.  
  499. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement