Jump to content
    • Interazione con Database
      Andiamo ad introdurre il terzo elemento nelle nostre applicazioni web, abbiamo visto il web client, che faceva delle richieste e riceveva delle risposte, poi sul web server (apache+php) che via script possiamo generare pagine dinamiche. Ci manca il database server dove possiamo registrare tutti i dati che ci interessano salvare in un database.
       
      Abbiamo Mysql, che è stato acquistato da Oracle, la nuova versione opensource è nota come Mariadb, che si è fatto conoscere ultimamente ed è uguale a Mysql.
      Quindi ricapitolando abbiamo il web server con apache e php e ora anche mysql per formare un server completo, sia offline con XAMPP e sia online attraverso i server dedicati, condivi o vps.
       
      Mysl command line client
      Tramite la shell (terminale) possiamo interagire con il server mysql:
      mysql -h localhost -u username -p localhost è il server, in questo caso siamo in locale
      username è il nome dell'utente e -p è la password premiamo invio e ci chiederà di inserire la password.
       
      Bisogna sapere i diversi comandi per interagire con il server mysql da linea di comando, eccone alcuni:
      show databases; vi mostra tutti i database già esistenti
      use phpmyadmin; per usare il database phpmyadmin
      show tables; mostra tutte le tabelle di phpmyadmin
      describe pma_users; mostra la struttura della tabella
      select username from pma_users; mostra i record di pma_users nella tabella username
      MYSQL: tabelle InnoDB e MyISAM
      Abbiamo diversi motori per salvare il tipo di tabelle diverse, abbiamo diverse caratteristiche, InnoDB è il default attualemnte. MyISAM era in passato di default ed era ottimizzato per siti web che avevano molte letture ma non sono efficienti in caso di scrittura. Quindi se abbiamo un sito web dove dobbiamo solo leggere da Mysql possiamo usare MyISAM, mentre se dobbiamo scrivere molto nel DB possiamo usare di default InnoDB.
       
      Se abbiamo più utenti che scrivono nei DB, abbiamo i problemi di Lock, DBMS mettono in piedi i meccanismi di Lock, InnoDB è molto più sofisticato, ha un row-level locking, a livello di righe mentre MyIsam ha un table-level locking, per le operazioni di scritture InnoDB è più efficiente permette scritture concorrenti purchè agisca su righe diverse. mentre MyIsam blocca l'intera tabella e quindi nessuno può scrivere se la tabella è bloccata da un utente.
      MyIsam può costruire degli indici per la ricerca di tipo FULLTEXT mentre InnoDB non lo aveva fino alla versione Mysql 5.6. InnoDB permette di implementare la transazioni, implementa i controlli di integrità su chiavi esterne.
      MYSQL: UTENTI
      Un server Mysql può gestire più utenti e più database.
      L'utente root deve essere usato solo per l'amministrazione del DBMS.
      Al momento dell'installazione si deve specificare la password per l'utente root!
      Per ogni utente che deve usare il sistema (ancora meglio, per ogni database) si dovrebbe definire un utente Mysql.
       
      Privilegi su database e tabelle
      Un utente o un processo dovrebbe avere il minimo privilegio per fare il suo task.
      MYSQL: Controllo dell'accesso
      Il controllo dell'accesso in MySql si svolge in due passi
      Controllo delle credenziali dell'utente Mysql Se le credenziali sono OK, per ogni istruzione SQL, il server Mysql verifica se l'utente ha i privilegi sufficienti.  
      Mysql ha un sistema di privilegi che per ogni utente permette di specificare quali operazioni può fare, si usa il comando grant, e si ha una tabella che si chiama grant tables.
       
      MySql fornisce 4 livelli di privilegi:
      - Global, Database, Table, Column
       
      Per assegnare (cancellare) un privilegio ad un utente si usa il comando GRANT (REVOKE)
      GRANT <privileges> [columns] ON <item> TO <username> [IDENTIFIED BY ‘<password>’] [WITH GRANT OPTION];  
      Creazione utente/db
      CREATE USER '<sawuser>'@'localhost' IDENTIFIED BY '<sawpwd>'; CREATE DATABASE <sawdb>; GRANT select, insert, update, delete, index, alter, create, drop ON <sawdb>.* TO <sawuser> IDENTIFIED BY ‘<sawpwd>’; FLUSH PRIVILEGES;  
      MySQL permette di definire privilegi per l'utente generico, privilegi per l'amministratore, e dei privilegi speciali
      Per l'utente generico si possono ad esempio specificare i seguenti privilegi
      – SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER, CREATE, DROP
      INTERAZIONE MYSQL COME FARE
      PHP ha delle librerie che interagiscono con Mysql.
      Per accedere ad un database da una applicazione web, i passi fondamentali sono i seguenti:
      Filtrare i dati in arrivo dal client Stabilire una connessione e selezionare un database Preparare la query Eseguire la query Ottenere il risultato Formattare il risultato per l'utente chiudere la connessione  
      Abbiamo due librerie principali:
      - PHP's mysqli Extension, libreria nativa
      - PHP Data Objects (PDO), database abstraction layer, permette di lavorare su database diversi senza cambiare il codice.
       
      1. Controllare i dati in arrivo
      $nomevar=$_POST['...']; $nomevar=trim($nomevar); mysqli_real_escape_string(); La funzione trim(), rimuove gli spazi o tab e \n a fine o inizio stringa. Con il database possiamo usare la funzione sopra che pulisce i caratteri speciali.
       
      2. Stabilire la connessione
      //Stile procedurale $con = mysqli_connect (“localhost”,“name-of-user”,“password-of-user”,”db-name”); if (mysqli_connect_errno($con)) { echo "Failed to connect to MySQL: " . mysqli_connect_error($conn); } //Stile object oriented $con = new mysqli( “localhost”,“name-of-user”,“password-of-user”,”db-name” ); // Per il controllo dell’errore vedi: // https://www.php.net/manual/en/mysqli.construct.php  
      3. Preparare la query: SELECT
      In questo primo esempio la query "mischia" codice SQL e dati in arrivo dal browser
      $query = “SELECT * FROM user WHERE name='” .$name. “' AND surname='” .$surname. “'”; Attenzione!
      La query viene passata al database e bisogna ricordare l'escape dei dati di input per evitare errori/attacchi
       
      4. Eseguire la query
      //Stile procedurale $res = mysqli_query($con,$query); //Stile object oriented $res = $con->query($query); In caso di SELECT viene restituita una risorsa che contiene i dati estratti dalla query
      False in caso di errore
       
      5. Ottenere il risultato
      //Stile procedurale $row = mysqli_fetch_assoc($res); //Stile object oriented $row = $res->fetch_assoc(); come array:
      $row = mysqli_fetch_array($res,flag); $row = $res->fetch_array(flag); come oggetto:
      $obj = mysqli_fetch_object($res); $obj = $res->fetch_object();  
      Sono disponibili altre funzioni che possono essere usate dopo l'esecuzione delle query per capire se le cose sono andate a buon fine
       
      // SELECT $rowcount=mysqli_num_rows($res); $rowcount=$res->num_rows(); // INSERT, UPDATE, REPLACE, DELETE $num = mysqli_affected_rows($con); $num = $con->affected_rows();  
      6. Formattare il risultato
      Si deve produrre codice HTML che verrà restituito al client che ha fatto la richiesta, ad esempio nel caso di SELECT, per ogni tupla restituita dal DB si potrà avere:
       
      // leggo i valori nella tupla $attr1=htmlspecialchars($row[1]); $attr1=htmlspecialchars($row[2]); ... // li restituisco in output echo “<tr>”; echo “<td>$attr1</td>\n”; echo “<td>$attr2</td>\n”; echo “</tr>”; ...  
      7. Liberare la memoria
      mysqli_free_result($res); o $res->free(); True in caso di successo, False in caso di errore
       
      8. Chiudere la Connessione
      mysqli_close($con); o $con->close();  
      Preparare la query: INSERT
       
      In questo secondo esempio la query "mischia" codice SQL e dati in arrivo dal browser
      $query = "INSERT INTO users (id_user,name,surname,username,...) VALUES (NULL,'” . $name . “','” . $surname . “','” . $email . “'...)”;  
      Dopo aver eseguito la query si può verificare il numero di record coinvolti nell'operazione
      $num = mysqli_affected_rows($con); o $num = $con->affected_rows(); Le query di UPDATE e DELETE sono del tutto analoghe
       
       
       

    • A cosa servono i Cookie?
      Il web server non ha "memoria" delle comunicazioni HTTP successive, anche se arrivano dallo stesso client. Nelle richieste HTTP ci sono i parametri che contengono le risorse che state cercando, immagini, video, file statici o sempre di più file dinamaci, in PHP. Questo protocollo non ha memoria di comunicazioni successive, e quindi non mantiene lo stato, se ci sono siti con il login bisogna mantenere la memoria.
      Per questo motivo, per realizzare applicazioni web complesse, sono stati introdotti altri meccanismi
      Cookie, introdotti negli anni 90 da Netscape per gestire il carrello. Access Control, controllo degli accessi implementati sul server Session Control, realizzare sessioni tengono traccia dell'utente durante le sue interazioni COOKIE: DEFINIZIONE
      “ ... a cookie is a bit of text, containing some unique information, that web servers send in the HTTP header. The client's browser keeps a list of cookies and web sites. When the user goes back to a web site, the browser will automatically return the cookie, provided it hasn't expired ... ”
      Vedi: http://en.wikipedia.org/wiki/HTTP_cookie
       
      I Cookie sono una sequenza di caratteri, che contiene informazioni univoche, vi spedisce in uno dei header HTTP.
      Il browser quando riceve questa sequenza lo salva e ne tiene traccia, quando torniamo su questo sito il browser ha già il cookie registrato, sempre che non sia scaduto perchè ha una durata.
      COOKIE: FORMATO
      Un cookie è una stringa di testo formata da diverse parti (separate da ; ) alcune opzionali:
      Name = <VALUE>; <- obbligatorio Expires = <DATE>; possono avere una data, se non si specifica dura finche non si chiude il browser. Path = <PATH>; per quale insieme di pagine è valido il cookie Domain = <DOMAIN_NAME>; nome del sito che rilascia il cookie Secure -> se è sicuro il trasferimento https:// HttpOnly -> non sono leggibili via javascript SameSite -> non può essere inviato ad altri siti COOKIE: RISPOSTA HTTP
      Un cookie viene memorizzato nel browser se il server include l'header Set-Cookie: come parte di una risposta HTTP
       
      Un ipotetico cliente associato questa stringa, e con scadenza il 16 dicembre:
      Set-Cookie: customer=56FRP13456UYH; domain=.trenitalia.com; expires=Wednesday, 16-Dec-20 ATTENZIONE: non mettere mai dati sensibili nei cookie, perchè si trovano sul client e sono modificabili
       
      Quando un utente torna su un sito che ha già visitato e che gli ha "lasciato" un cookie, il suo browser invia automaticamente il cookie (la coppia name=<VALUE>) come parte della sua richiesta HTTP
      Cookie: customer=56FRP13456UYH;  
      Un browser dovrebbe essere in grado di memorizzare
      almeno 300 cookie al massimo 4 KB per cookie un massimo di 20 cookie dallo stesso server (o dominio) Come creare i cookie in PHP?
      setcookie (string name, string value, int expire, string path, string domain, bool secure, bool httponly)  
      Vedi: http://www.w3schools.com/php/php_cookies.asp
      http://www.w3schools.com/php/func_http_setcookie.asp
       
      Quando si torna su un sito che ha già lasciato un cookie, il browser invia nell'header della richiesta HTTP il valore del cookie
      Sul server questo valore può essere letto in
      $_COOKIE $HTTP_COOKIE_VARS Si può portare la data di scadenza del cookie al passato
      Si può assegnare al cookie il valore nullo
       
      <?php // if cookie exists if (isset($_COOKIE["mycookie"])) { read the value of the cookie return a personalized welcome back message } else { show registration module } ?>  
      Creazione di un cookie
      <?php ... $cname=”mycookie”; $cvalue = “cookie value here”; $cexpires = mktime(0,0,0,01,01,2021); setcookie($cname,$cvalue,$expires); ?>
      Cancellazione del cookie
      <?php // set the expiration date to one hour ago setcookie("mycookie", "", time()-3600); ?>  
      Sono impostati da un sito web diverso da quello che si sta attualmente visitando. Sono usati dagli inserzionisti pubblicitari che li utilizzano per tenere traccia delle visite su tutti i siti sui quali offrono i propri servizi
       
      Secondo quanto previsto dal Regolamento generale sulla protezione dei dati personali (GDPR) dell'UE, ogni sito web deve permettere agli utenti europei dei controllare l'attivazione dei cookie e dei tracker che raccolgono i loro dati personali.
       
      E' possibile disabilitare i cookie (soprattutto di terze parti) ma spesso i siti web che vivono di pubblicità smettono di funzionare
      Per esempio si può usare AdBlock
      https://it.wikipedia.org/wiki/AdBlock
       
      Per maggior informazioni sui cookie, vi consiglio la pagina Using HTTP cookies.
      ESEMPIO PRATICO
      Index.php (pagina principale con i Cookie, se si accede direttamente non ha nessun stile CSS e quindi non è formattato; issset() funzione già vista; il nome stile del Cookie; explode() già visto per dividere la stringa; e poi apriamo il tag body e tramite la posizione degli array aggiorniamo i css)
      <!DOCTYPE html> <html lang="it"> <head> <title>Homepage</title> <style> <?php if (isset($_COOKIE["stile"])) { $val = $_COOKIE["stile"]; $prop = explode("|", $val); echo "\tbody {\n"; echo "\t\t$prop[0];\n"; echo "\t\t$prop[1];\n"; echo "\t\t$prop[2];\n"; echo "\t}\n"; } ?> </style> </head> <body> <h1>Lorem Ipsum</h1> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus sem tellus, sagittis eu molestie non, venenatis vel lectus. Etiam sapien sem, efficitur ut lacus at, volutpat sodales nibh.</p> <p> Proin dapibus risus congue, cursus libero sit amet, bibendum lectus. Morbi a hendrerit mi. Phasellus feugiat nulla eros, pellentesque congue felis dictum eu. In hac habitasse platea dictumst.</p> <p><a href="personalize.php">Vai alla pagina di personalizzazione</a></p> </body> </html>  
      Personalize.PHP (Abbiamo il Form per personalizzare il documento sopra con il metodo POST)
      <!DOCTYPE html> <html lang="it"> <head> <title>Personalizza le tue pagine con i cookies</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <div id="mydiv"> <form id="myform" action="setcookie.php" method="POST"> Text color: <input type="color" name="color"> Background: <input type="color" name="background-color"> Font: <select name="font-family"> <option value="0">Select font family</option> <option value="Arial">Arial</option> <option value="Arimo">Arimo</option> <option value="Verdana">Verdana</option> <option value="Ubuntu">Ubuntu</option> </select> <br> <input type="submit" value="Submit"> </form> </div> </body> </html>  
      Setcookie.PHP (Prendiamo i dati dal Form sopra e creiamo il Cookie con nome, durata e la funzione setcookie(); la funzione header() ci reinderizza nella pagina principale index.php)
      <?php $value = ""; if (isset($_POST["color"]) & $_POST["color"] != "#000000") $value .= "color: " . $_POST["color"] . "|"; else $value .= "color: black|"; if (isset($_POST["background-color"]) & $_POST["background-color"] != "#000000") $value .= "background-color: " . $_POST["background-color"] . "|"; else $value .= "background-color: white|"; if (isset($_POST["font-family"]) & $_POST["font-family"] != "0") $value .= "font-family: " . $_POST["font-family"] . "|"; else $value .= "font-family: serif|"; $name = "stile"; $expires = mktime(0, 0, 0, 01, 01, 2021); setcookie($name, $value, $expires); header("Location: index.php"); exit; ?>  
      A cosa servono le Sessioni?
      La sessione è importante per tenere traccia di quello che stiamo facendo, a differenza dei Cookie che sono salvate su browser, non bisogna mettere informazioni riservate.
      Il controllo di sessione permette di tener traccia dell'utente durante la sua interazione con un sito web. Cosi da non richiedere ogni volta username e password ma vengono memorizzati e finche non scade l'utente può navigare nella sessione.
       
      Per gesitre il controllo di sessione si usa l'array superglobale $_SESSION
      Inoltre in PHP si associa ad ogni visitatore un identificatore univoco, chiamato session ID. Viene memorizzato in un Cookie nell header e viene scambiato avanti e indietro per tutta la durata, cosi il web server sa che quell'utente è sempre lui.
      Vedi: http://www.w3schools.com/php/php_sessions.asp
       

       
      SESSIONE COME FARE?
      Iniziare una sessione Creare le variabili di sessione Usare le variabili di sessione Distruggere le variabili di sessione e chiudere la sessione  
      sessione_start();
      Verifica se l'utente ha già un identificatore di sessione
      Se non lo trova, ne crea uno, altrimenti rende accessibili le variabili di sessione già create in precedenza per quell'utente
      Quando si usano le sessioni è obbligatorio iniziare tutti gli script delle pagine riservate con session_start().
       
      $_SESSION["myvar"] = <valore>;
      La variabile di sessione viene creata assegnando una chiave all'array superglobale $_SESSION e un valore corrispondente.
      La variabile esiste e viene "tracciata" fino a quando non si termina la sessione.
       
      Con isset() si verifica se la variabile di sessione esiste.
      if (isset($_SESSION["myvar"])) { ... } else { ... }  
      Se si, l'utente è autorizzato a proseguire, altrimenti lo si rimanda alla pagina di login.
       
      unset($_SESSION["myvar"]);
      La sessione esiste ancora ma la variabile di sessione myvar non è più registrata come variabile di sessione.
       
      session_destroy();
      Cancella l'identificatore di sessione.
       
      $_SESSION = array();
      Assegnare un array vuoto alla sessione.
       
      <?php session_start(); echo "SID: " . session_id(); ?> ESEMPIO: SID: 0a777aa640f1bad7ac3f788065a99ba6  
      Nella fase di autenticazione
      Si verifica la correttezza dei dati dell'utente Se l'utente è autorizzato, si creano una o più variabili di sessione Si presentano i servizi dell'area riservata  
      <?php session_start(); /* check user data */ if <login OK> { $_SESSION[“myvar1”] = ...; $_SESSION[“myvar2”] = ...; $_SESSION[“myvar3”] = ...; /* build list of services */ } else { echo “ <h2>You cannot access to these services, check your data</h2>\n ”; } ?>  
      Durante la navigazione nell'area riservata
      Tutti i file che offrono servizi devono controllare le variabili di sessione, non basta il controllo sul primo file!
       
      <?php session_start(); if (!isset($_SESSION[“myvar1”])) { echo “<h2>Access denied</h2>\n”; <present login module>; } else { /* show reserved page */ } ?>  
      PHP7: HEADER()
      Permette di inviare header HTTP al client
      Importante: dovrebbe essere invocata prima di restituire al client dati in output, basta anche un solo spazio vuoto (o una riga vuota nel file PHP cui corrisponde il carattere "\n") per causare un errore.
       
      header('Location: URL') // redirect header('Content-type: image/jpg') // MIME type header('Cache-Control: no-cache, must-revalidate') // no cache header('Expires: Mon, 26 Jul 2010 05:00:00 GMT') // date in the past  
      Nota: bufferizzazione output
       
      PHP invia al client qualunque output non appena disponibile. E'
      possibile salvare temporaneamente quello che dovrebbe essere
      restituito in output fino a quando non viene detto esplicitamente di spedirlo.
      Così facendo, header e dati vengono inviati in modo corretto
      anche se alcuni header sono stati creati dopo i primi output HTML
      Per abilitare questa funzionalità si può usare la funzione
      ob_start() oppure si può attivare la direttiva
      output_buffering = 4096 // 4096 sono i byte bufferizzati
      Access Control
      HTTP è stateless e nasce per lo scambio di risorse. Abbiamo problemi di autorizzazione, e come visto sopra ci viene in aiuto la gestione delle sessioni e ancora prima quella dei Cookie. Nel caso di risorse ad accesso riservato è necessario usare degli accorgimenti
       
      Esistono diverse tecniche, più o meno semplici da implementare, più o meno sicure...
      URL nascoste Controllo basato sull'indirizzo IP o sul nome di dominio Controllo basato sull'identità dell'utente  
      I controlli basati sull'identità dell'utente o sull'indirizzo IP possono essere demandati al server web sfruttando la Basic Authentication di HTTP
       
      Vediamo il caso degli utenti
      Quando si cerca di accedere a informazioni protette
      - il browser visualizza una finestra di dialogo che richiede le credenziali all'utente
      - le credenziali vengono scambiate tra browser e server per tutta la durata dell'interazione
       
      Risposta HTTP di tipo 401:
      HTTP/1.1 401 Authorization Required Date: Tue, 04 Mar 2016 17:09:06 GMT Server: Apache/1.3.34 Ben-SSL/1.55 (Debian) PHP/4.4.4-8+etch2 mod_auth_pam/1.1.1 mod_perl/1.29 DAV/1.0.3 WWW-Authenticate: Basic realm="Restricted Area for My Server." Transfer-Encoding: chunked Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <HTML><HEAD><TITLE>401 Authorization Required</TITLE></HEAD> <BODY> <H1>Authorization Required</H1>This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required.<P></BODY></HTML>  
      Si può creare un file di testo .htaccess nella directory che si vuole proteggere e specificare delle direttive
      Vedi: http://httpd.apache.org/docs/current/howto/auth.html
       
      AuthType Basic AuthName “Restricted Area for My Server” AuthUserFile /absolutepath/nomefilepwd Require valid-user * invece di scrivere valid-user, si possono elencare gli utenti che possono accedere, oppure un gruppo di utenti
       
      Le credenziali degli utenti possono essere salvate in un file di testo, specificando la direttiva
      AuthBasicProvider file
       
      Con il file di testo ci sono problemi di efficienza (il file viene letto per ogni accesso alle risorse nell'area protetta) e si possono anche usare formati di storage come dbm e dbd, o LDAP
      AuthBasicProvider dbm
      AuthBasicProvider ldap
       
      Il file delle password si crea con il comando htpasswd (-c si deve usare solo la prima volta che si crea il file delle password)
      htpasswd –c nomefilepwd nomeuser New password: ********* Re-type new password: ********* Nota: Il file .htaccess e quello delle password devono essere leggibili dal web server (chmod 644)
       
      Per ogni accesso ad una pagina protetta, il server deve leggere dalla richiesta HTTP le credenziali e poi accedere a
      - file .htaccess
      - file/database/LDAP per la password
      Se il numero degli utenti cresce, questo meccanismo di autenticazione diventa inefficiente
       
       

    • Le password degli utenti non si devono MAI memorizzare in chiaro.
      Molti attacchi sul web hanno lo scopo di rubare le password degli utenti https://haveibeenpwned.com/
       
      Su questo sito inserendo il vostro indirizzo email, il servizio vi dice se è stato trovato in qualche attacco (Databreach), molti siti web non sicuri vengono attaccati e rubati i dati sensibili, il database degli iscritti contenenti email e password. Su questo servizio vengono catalogati tutti gli attacchi informatici e se esiste la nostra email in un db ce lo mostra.
       
      In caso di furto, bisogna garantire che l'attaccante non riesca a decifrare le password. Oggi per rispettare le regole del GDPR bisogna proteggere i dati sensibili (e le password lo sono).
      PHP7: GESTIONE DELLE PASSWORD
      Su php le cifriamo, ed offre funzioni di HASH, prendo una stringa le applico la funzione e ricevo un'altra stringa.
       
      /* User's password. */ $password = 'mysecretpassword'; /* MD5 hash */ $hash = md5($password); /* SHA1 hash */ $hash = sha1($password);  
      Queste funzioni sono DEPRECATE, non bisogna usarle più, perché non sono più sicure. Gli algoritmi MD5 e SHA sono troppo deboli per la potenza di calcolo odierna. Gli hash prodotti da questi algoritmi sono vulnerabili ad attacchi "rainbow table" e ad attacchi a dizionario:
      - https://crackstation.net/ (a volte basta Google!)
      - https://en.wikipedia.org/wiki/List_of_the_most_common_passwords
       
      La funzione che dobbiamo usare, che viene consigliata in tutti i manuali è la funzione PASSWORD HASH, con due parametri, il primo è la password e il secondo è PASSWORD_DEFAULT, specifica quale funzione di cifratura usare.
       
      /* User's password. */ $password = 'mysecretpassword'; $hash = password_hash($password, PASSWORD_DEFAULT);  
      Questa funzione usa un "sale" che viene aggiunto alla password per evitare attacchi rainbow table o a dizionario. Il "sale" è una stringa generata in modo casuale (da PHP!). Per verificare le password degli utenti si deve usare la funzione password_verify()
      ESEMPIO PRATICO
      Vediamo come utilizzare quello che abbiamo imparato con un esempio di Form di Registrazione, con input di nome, cognome, email e password, e a salvare i dati su un File in locale:
       
      Registrazione.HTML (usiamo il metodo POST per inviare i dati)
      <!DOCTYPE html> <html lang="it"> <head> <title>Sign-up</title> <link rel="stylesheet" type="text/css" href="style.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> </head> <body> <div id="mydiv"> <form id="myform" action="registration.php" method="POST"> <i class="fas fa-file-signature"></i> <input type="text" class="no-outline" id="firstname" name="firstname" placeholder="Firstname"><br> <i class="fas fa-file-signature"></i> <input type="text" class="no-outline" id="lastname" name="lastname" placeholder="Lastname"><br> <i class="fas fa-at"></i> <input type="email" id="email" class="no-outline" name="email" placeholder="E-mail"><br> <i class="fas fa-key"></i> <input type="password" class="no-outline" id="pass" name="pass" placeholder="Password"><br> <i class="fas fa-key"></i> <input type="password" class="no-outline" id="confirm" name="confirm" placeholder="Confirm password"> <br> <input type="submit" value="Submit"> </form> </div> </body> </html>  
      Rregistrazione.PHP (abbiamo la funzione isset() che vede se il campo è stato settato o è vuoto; la funzione trim() elimina gli spazi vuoti o dei caratteri all’inizio e alla fine di una stringa; filter_var() applica un filtro ad una variabile in questo caso per verificare un email in forma esatta;
      <!DOCTYPE html> <html lang="it"> <head> <title>Sign-up</title> </head> <body> <?php if (!isset($_POST["firstname"]) || !isset($_POST["lastname"]) || !isset($_POST["email"]) || !isset($_POST["pass"]) || !isset($_POST["confirm"])) { echo "<p>Check input data, some are missing</p>\n"; echo "</body>\n</html>"; exit(); } $firstname = trim($_POST["firstname"]); $lastname = trim($_POST["lastname"]); $email = trim($_POST["email"]); $pass = trim($_POST["pass"]); $confirm = trim($_POST["confirm"]); if (empty($firstname) || empty($lastname) || empty($email) || empty($pass) || empty($confirm)) { echo "<p>Check input data, some are missing</p>\n"; echo "</body>\n</html>"; exit(); } $error = ""; if (!$email = filter_var(trim($_POST["email"]), FILTER_VALIDATE_EMAIL)) { $error .= "<p>Check e-mail format</p>\n"; } if ($pass != $confirm) { $error .= "<p>Passwords do not match</p>\n"; } if ($error) { echo $error; echo "</body>\n</html>"; exit(); } $hash = password_hash($pass, PASSWORD_DEFAULT); $line = $firstname . "|" . $lastname . "|" . $email . "|" . $hash ."\n"; $fp = fopen("mydata.txt", "a+"); fwrite($fp, $line); fclose($fp); echo "<h1>"; echo "Hello "; echo $_POST["firstname"]." ".$_POST["lastname"].",\n"; echo " your data have been registered."; echo "</h1>\n"; ?> </body> </html>  
      Ora vediamo come fare il login sempre in HTML e poi in PHP con la registrazione di prima e i dati sul File in locale.
       
      Login.HTML (un semplice Form in html con il metodo POST)
      <!DOCTYPE html> <html lang="it"> <head> <title>Login</title> <link rel="stylesheet" type="text/css" href="style.css"> <link rel="stylesheet" type="text/css" href="INSERISCI URL CSS AWESOME"> </head> <body> <div id="mydiv"> <form id="myform" action="login.php" method="POST"> <i class="fas fa-at"></i> <input type="email" id="email" class="no-outline" name="email" placeholder="E-mail"><br> <i class="fas fa-key"></i> <input type="password" class="no-outline" id="pass" name="pass" placeholder="Password"><br> <br> <input type="submit" value="Submit"> </form> </div> </body> </html>  
      Login.PHP (la funzione isset() vista in precedenza; file_get_contents() per leggere interamente il file; strpos() trova la posizione iniziale dell'email nel nostro caso; trim() vista in precedenza; substr() per prendere solo la string che ci interessa dandogli un inizio ed una fine; strlen() lunghezza della stringa ;e password_verify() di cui abbiamo parlato sopra)
      <!DOCTYPE html> <html lang="it"> <head> <title>Login</title> </head> <body> <?php $mail = ""; if (isset($_POST['email'])) { $mail = $_POST["email"]; } $psw=""; if (isset($_POST['pass'])) { $psw = $_POST["pass"]; } $users = file_get_contents('mydata.txt',true); $pos = strpos($users,$mail); $phash=trim(substr($users, $pos+strlen($mail)+1, 61)); if ($pver=password_verify($psw, $phash)) { echo "<h1>pass verified!</h1>"; } else { echo "<h1>pass incorrect</h1>"; } ?> </body> </html>  
      mydata.txt (il file contenente i dati di registrazione)
      mario|mao|[email protected]|$2y$10$IYOaWxU5rVBqpMnSUxf1s.pKjKHGPGFuM0gXligDFGiOw/0oiHEqa maria|mea|[email protected]|$2y$10$Z7ozJ8RktrKBo0ai2YT9Fu2uzsM3XG6EolwEgZy2zgfqfSLwFHeoO  
      Login.PHP #2 (vediamo un altro esempio con altre funzioni nuove; fopen() che prende il file; feof() legge il file fino in fondo; fgets() legge riga per riga il file; explode() legge fino al simbolo "|"; isset() che abbiamo già visto; trim() già visto; password_verify() visto sopra)
      <?php $file = fopen("mydata.txt","r"); while(! feof($file)) { $eriga = explode('|', fgets($file)); if (isset($eriga[2])) { if (trim($eriga[2])==$_POST["email"]) { if (password_verify($_POST["pass"], trim($eriga[3]))) { echo "Login corretto!"; } } else { echo "user o passw sbagliati"; } } } fclose($file); ?>  
      PHP7: DATI IN ARRIVO DAL CLIENT
      I dati in arrivo dal client devono essere validati! PHP ha varie funzioni che permettono di testare il contenuto dei dati forniti in input. Il test dipende dalle abilità del programmatore..
      SQL Injection (mysqli_real_escape_string, prepared statements) riguardano gli attacchi al database, quelli riguardanti il browser sono XSS (htmlspecialchars), e per scrittura e download su file sono i Path Traversal (confinare l'include dei file dentro la DocumentRoot), quando si creano Script bisogna imparare a difendersi ed usare le funzioni apposite.
       
      Vediamo insieme alcune funzioni sopra citate:
       
      isset($_POST[var]): true(1) se esiste e non è Null; false (0) altrimenti empty($_POST[var]): true(1) se non esiste oppure il suo valore è False; false(0) altrimenti trim($_POST[var]): toglie spazi, \n, \r, \t, \v, \0 ad inizio e fine stringa filter_var($str[,int $filter=FILTER_TYPE]): applica il filtro selezionato(regex) alla stringa htmlspecialchars($str, ENT_QUOTES[, $charset]: converte i caratteri speciali nelle entità HTML corrispondenti PHP7: PARSING INPUT
      Esistono delle funzioni per fare il parsing, prendono una stringa e lo convertono in intero.
       
      int($_GET['x']) converte $_GET['x'] in intero, se possibile (simile a int intval(mixed $var [, int $base = 10 ] )  )
      Esempio: 12a -> 12, a12 -> 0
      doubleval($_GET['x']) strval($_GET['x']) is_numeric($x) verifica se $x è un numero o una stringa PHP7: ESPRESSIONI REGOLARI
      Si possono usare le espressioni regolari per definire dei pattern su stringhe di testo. PHP usa le espressioni regolari di Perl e offre delle funzioni per verificare se un certo pattern occorre in una stringa. Mediante l'uso di simboli come +,?,-,^,*,[],{} si possono creare espressioni complesse per validare email, indirizzi IP, ecc.

      Esempi:
      /[0-9]{8,14}/ -> tutte le stringhe numeriche almeno 8 caratteri e massimo 14. /[a-z\s]{10,20}/ -> tutte le lettere minuscole "\s" anche li spazi e lunghe da 10 a 20 caratteri. /[a-zA-Z0-9\s]{1,}/ -> tutte le sequenze caratteri minuscole e maiuscole con numeri e spazi lunghe da 1 a nessun limite. /^.{2}$/ -> accetta solo coppie di caratteri  
      Vediamo come fare in PHP: (preg_match() restituisce se vero o falso)
      <?php $str = "Ciao ciao "; $pattern = " /[a-z\s]{10,20}/ "; echo preg_match($pattern, $str); ?> ESEMPIO PRATICO
      Ora vediamo come fare il pattern del Codice Fiscale e la funzione preg_match():
      <form method="GET" action="<?php echo $_SERVER['PHP_SELF']; ?>?codfis=<?php $_GET['codfis']?>"> <label for="codfis">Codice Fiscale:</label> <input type="text" id="codfis" name="codfis" pattern="^[a-zA-Z]{6}[0-9]{2}[a-zA-Z][0-9]{2}[a-zA-Z][0-9]{3}[a-zA-Z]$" title="codice fiscale"><br><br> <input type="submit"> </form> <?php $str = $_GET['codfis']; preg_match('/^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$/i', $str, $matches); if($matches[0]==$_GET['codfis']) { echo "sintassi corretta!"; } ?>  
       

    • Cos è PHP e come funziona?
      Programmazione lato server, abbiamo un client che è un browser gestito da un utente che naviga nel web, richieste del web server, richieste HTTP, protocollo del web, se hanno le risorse cercate, le ritornano sotto forma di risposte HTTP, con l'HTML avevamo pagine statiche, di documenti, immagini e fogli di stili css.
      Da ora in poi avremmo delle pagine dinamiche, on the fly mediante esecuzione lato server. Script che invocato con opportuni parametri genererà una pagina e ritornerà questa pagina a chi ne ha fatto la richiesta.
       
      Il Web Server sarà composto di Apache (ne esistono altri) per la comunicazione, l'interprete PHP per la logica applicativa, Mysql per l'accesso ai dati.
      PHP è un linguaggio di scripting, di programmazione (con costrutti come in altri linguaggi se sapete già qualcosa), open source, server side, sviluppato per il web
       
      Il progetto inizia nel 1994 ad opera del danese Rasmus Lerdorf, diventato  particolarmente popolare nella programmazione web, è possibile scrivere nel codice HTML con opportuni costrutti codice PHP.
       
      Un file con codice PHP deve essere salvato in formato testo ed estensione .php e ci penserà l'interprete a codificare il linguaggio e restituire la richiesta.
       
      PHP è HTML-embedded, cioè gli script possono essere inseriti nelle pagine HTML in cui devono produrre i loro output.
      Il web server riconosce le pagine PHP, distinguendole da quelle statiche, sulla base dell'estensione .php e richiama l'interprete.
      Il client vede solo il codice HTML generato: quindi vede cosa produce lo script ma non come arriva il risultato.
       
      Il web server è un programma che gira sulla vostra in macchina ed è in ascolto in attesa di richieste, da parte da un utente, ha solo directory specificate dall'utente in cui cercare i file richiesti, di solito in Apache è /htdocs.
       
      Il server prende il codice php lo interpreta e ne restituisce l'output, che di solito è diverso dal codice sorgente.
       
      <?php echo "<h1>"; echo "Hello"; echo "Firstname" . "Lastname"; echo "your data have been registered. "; echo "</h1> \n"; ?>  
      Nel caso di sopra restituisce "Hello Firstname Lastname your data have been registered."
      PHP7: STRUTTURA LESSICALE
      Le istruzioni devono essere separate tra loro dal ;
      Commenti:
      es. // questo è un commento es. /* questo è un commento */ es. # questo è un commento  
      Gli identificatori devono iniziare con il simbolo $
       
      es. $firstname $lastname $email  
      PHP è case sensitive, $a != $A
       
      Per gli identificatori non si possono usare le keyword del linguaggio
       
      and include break list case new class not continue or default require do return else static elseif switch extends this false true for var foreach virtual function xor global while if  
      PHP7: VARIABILI e SCOPE
      Le variabili in PHP non devono essere dichiarate, basta assegnare dei valori, il linguaggio PHP non è tipato.
      PHP ha scope (visibilità delle variabili): local, global, static
       
      PHP7: local
      <?php $a=1; //global scope function test() { echo "$a"; //reference to local scope variable } test(); ?>  
      PHP7: global
      <?php $a=1; //global scope $b=2; function sum() { global $a,$b; // global scope $a=$a+$b; } sum(); echo "$a"; ?>  
      PHP7: static
      <?php $a=1; //global scope $b=2; function sum() { global $a,$b; // global scope //local variable, that keeps values among successive calls static $tmp; $sum = $a + $b; //local scope $tmp +=$sum; echo $sum; echo $tmp; } sum(); ?>  
      PHP7: VARIABILI SUPERGLOBALI
      Variabili superglobali esistono sempre e vengono create in automatico
      Array di variabili automaticamente globali, ovvero disponibili in ogni scope
      Esistono diversi array superglobali, ognuno con una funzione diversa
      $GLOBALS contiene un riferimento a tutte le variabili disponibili nello scope globale $_SERVER insieme di variabili relative al server web o legate all'ambiente di esecuzione dello script corrente $_GET, $_POST, $_COOKIE, $_SESSION  
      <?php phpinfo(); ?> Questa funzione in PHP vi dice la versione di php installata e tantissime informazioni sul vostro server, anche molte variabili su Host e server.
      Come per esempio la document_root (dove si trovano i vostri file fisici), e tante altre variabili d'ambiente
      PHP7: TIPI DI DATI
      Come gli altri linguaggi di programmazione anche php ha i tipi di dati, ma è debolmente tipato, perchè non si dichiara il tipo, ma queste sono Boolean, Integer, Float, String, Array, Object.
      Il tipo di una variabile può cambiare dinamicamente, a seconda del valore che viene assegnato ad essa.
      PHP7: COSTANTI
      Si possono definire delle costanti: define("NOMECOSTANTE", valore);
      Per convenzione per i nomi delle costanti si usano i caratteri maiuscoli
      PHP7: ISTRUZIONI
      Più o meno come il linguaggio C (e Javascript), aperte chiuse grafi per i blocchi, istruzioni terminano con punto e virgola, assegnazioni con uguale.
      Concatenazione tra stringhe:
      <?php $msg='Hello ' .$nome; $msg="Hello " .$nome; $msg="Hello $nome"; // solo con "..." ?>  
      per l'output a video:
      <?php echo "Hello world\n"; print("Hello world\n"); print_r($_POST); ?>  
      PHP7: DATI in arrivo dal client
      Ogni dato scritto dall'utente in un form, una volta spedito, viene memorizzato in una variabile PHP.
       

       
      I dati inviati con il metodo POST sono memorizzati nell'array $_POST[]
      I dati inviati con il metodo GET sono memorizzati nell'array $_GET[]
       
      Si può vedere il contenuto di questi array (e di tutti gli array associativi con print_r()
       
      In passato la direttiva register_globals=On nel file php.ini permetteva di usare lo short style($nome,$cognome) oggni deprecato.
       
      <?php $_POST['nomevar']; / //OK $_GET['nomevar']; //OK $_REQUEST['nomevar']; //medium style ?>  
      PHP7: SALVARE DATI sul Server
      Esistono due meccanismi per salvare i dati in arrivo da un client
      file database PHP7: GESTIONE FILE
      Molto simile al linguaggio C, ecco le diverse funzioni per lavorare con i file:
       
      fopen() https://www.php.net/manual/en/ref.filesystem.php
      – fclose() - Closes an open file pointer
      – fgets() - Gets line from file pointer
      – fread() - Binary-safe file read
      – fwrite() - Binary-safe file write
      – fsockopen() - Open Internet or Unix domain socket connection
      – file() - Reads entire file into an array
      – file_exists() - Checks whether a file or directory exists
      – is_readable() - Tells whether a file exists and is readable
      – ...
       
      Per ragioni di sicurezza se si scrivono dati sensibili in un file sul server, questo deve essere salvato fuori dalla DocumentRoot
       
      <?php $filename = $_SERVER['DOCUMENT_ROOT'] . “/private/mydata.txt”; $fp = fopen($filename,”a”); ?>  
      NOTA: il nome del file non viene MAI scelto dall’utente
      Se non si specifica alcun pathname, il file viene creato nella stessa directory dello script PHP che apre il file stesso
       
      DOCUMENT ROOT
       
      Se volete provare in locale potete usare XAMPP, un programma che comprende tutto il necessario per il web server, con php, mysql e apache.
      se usate linux la cartella document root sara htdocs.
       
      Se si ottiene un errore come quello seguente si deve verificare che lo script abbia i permessi per scrivere sul file
      Warning: fopen(users.txt): failed to open stream: Permission denied in /var/www/php/register.php on line 14  
      Nella maggior parte dei sistemi gli script girano con l'utente del web server (di solito www-data) oppure con l'utente proprietario della directory che contiene lo script
       
      Permessi dei file sono triplette, primi 3 caratteri sono associati al proprietario dei file, es: rwx -> leggere, scrivere ed eseguire; la seconda trpletta (es: r-x) mi dice cosa possono fare gli utenti che appartengono allo stesso gruppo; e il terzo gruppo sono gli utenti del resto della macchina.
       
      OCCHIO ALLA CONCORRENZA!
       
      Se viene usato il web server online dove ci sono tanti utenti che ci accedono e se il file è sempre lo stesso bisogna gestire gli accesso concorrenti, quando aprite il file bisogna accedervi in modalità esclusiva, Lock per dire che se riesci ad aprire il file in scrittura per gli altri utenti viene accodato, quando si apre il Lock bisogna ricordarsi di lasciarlo.
       
      <?php $fp=fopen("users.txt","a"); $line = "............"; flock($fp,LOCK_EX); fwrite($fp,$line); flock($fp,LOCK_UN); fclose($fp); ?>  
      LOCK_SH to acquire a shared lock (reader)
      LOCK_EX to acquire an exclusive lock (writer)
      LOCK_UN to release a lock (shared or exclusive)
      Vedi: http://php.net/manual/en/function.flock.php
      PHP7: INCLUDE/REQUIRE
      Nel caso di documenti in cui si ripetono più volte le stesse parti si possono usare le istruzioni include(), require(), require_once()
      Dei blocchi di codice che teniamo separati e li includiamo quando ci servono.
       
      <?php include(“comuni/header.php”); include(“comuni/navbar.php”); include(“comuni/leftmenu.php”); ?> page content here <?php include(“comuni/footer.php”); ?>  
       

    • Permette di progettare pagine web che si adattano a dispositivi di tipo diverso per dimensione dello schermo, risoluzione, orientamento.
      L'idea di sviluppare una sola applicazione che si adatti allo schermo di ogni dispositivo.
       
      Obiettivi minimi:
      adattare il layout al maggior numero di dispositivi adattare le dimensioni delle immagini (e in generedi tutti i contenuti a larghezza fissa) alla risoluzione e alle dimensioni dello schermo (grglie fluide, immagini flessibili) semplificare il layout degli elementi presenti sulla pagina per i dispositivi mobili con schermi piccoli nascondere gli elementi non essenziali sui dispositivi con schermi piccoli individuare e sfruttare, quando serve, funzionalità adatte al mobile (come la geolocalizzazione) CSS3 FLEXBOX
      Flexible Box Layout Module
       
      Semplifica la progettazione di layout flessibili senza richiedere l'uso di elementi di posizionamento
      Si deve definire una classe con proprietà
       
      .flexible-box { display: flex; }  
      Si deve associare questa proprietà ad un contenitore (per esempio <div>)
      Tutti gli elementi all'interno del contenitore diventano "flessibili"
      Qui sotto vediamo un esempio di CSS con la proprietà flex:
       
      .flexible-box { display: flex; border: solid 2px #777777; flex-wrap: wrap; } .flexible-box > div { background-color: yellow; margin: 20px ; padding: 20px; font-size: 30px; border: solid 2px green; }  
      e ora vediamo come implementarlo in HTML:
       
      <div class="flexible-box"> <div>1st element</div> <div>2nd element</div> <div>3rd element</div> .... </div>  

      Per tutte le informazioni e approfondire i Flexbox vi rimandiamo a questa pagina css-tricks.com
       
      Non è l'unico modo per rappresentare le pagine responsive, prima del flexbox abbiamo i media query
      CSS3: MEDIA QUERY
      Una media query è costituita dalla regola @media che permette di specificare regole diverse per dispositivi diversi
       
      @media not|only mediatype and (media feature) { ... } @media screen { p.test { font-family:verdana, sans-serif; font-size:14px; } } @media print { p.test { font-family: times, serif; font-size: 10px } }  
      Vengono introdotte le media features, dei meccanismi per riconoscere la risoluzione, l'orientamento dello schermo,...
      Permettono di associare il corretto foglio di stile ad un dispositivo con determinate caratteristiche
       
      @media screen and (width: 320px) and (orientation: portrait) and (resolution: 300dpi) { /* styles */ } @media only screen and (max-width:320px) { p {font-size: 2em; } }  
      Sopra possiamo specificare un browser con il quale il cliente sta navigando ha uno schermo con ampiezza di 320px e un orientamento (portrait è verticale, e landscape è orizzontale) e la risoluzione del suo smartphone, possiamo applicare uno stile diverso.
      Mentre nel max-width 320px, ovvero in un browser con massimo 320px di larghezza possiamo applicare uno stile diverso.
       
      Si possono progettare file di stile per dispositivi diversi oppure mettere le media query in un unico foglio di stile.
       
      Esempio1:
      Possiamo creare un file foglio di stile diverso per ogni dispositivo con specifiche caratteristiche e aggiungere il meta link per ognuno in html:
       
      <link rel="stylesheet" media="only screen and (max-width: 480px)" href="smartphone.css" />  
      Esempio2:
      Un unico grande foglio di stile e andando a specificare ogni media query per ogni dispositivo che ci interessi e il suo orientamento come di seguito:
       
      /* Smartphones (portrait and landscape) ----------- */ @media only screen and (min-device-width : 320px) and (max-device-width : 480px) { /* Styles */ } /* Smartphones (landscape) ----------- */ @media only screen and (min-width : 321px) { /* Styles */ } /* Smartphones (portrait) ----------- */ @media only screen and (max-width : 320px) { /* Styles */ }  
      Esistono anche le features max-width, min-width, max-height, min-height e molte altre...
       
      Vedi: https://www.w3.org/TR/css3-mediaqueries/
      Vedi: http://www.w3schools.com/cssref/css3_pr_mediaquery.asp
      Vedi: https://developer.mozilla.org/en-US/docs/Web/CSS/@media
       
      Visualizzazione per iPhone e iPad
       
      iPhone e iPad tendono ad ignorare la risoluzione dello schermo e a zoomare le pagine
      Per forzare iPhone e iPad a rispettare la dimensione della viewport ci vuole un meta-tag all'interno del tag <head>
       
      <meta name = "viewport" content = "width=device-width" />
       
      viewport: Area di visualizzazione del browser
      width: Larghezza della viewport
      device-width: Larghezza dello schermo del dispositivo
       
      BootStrap
       
      Bootstrap è il più famoso framework per HTML CSS e JS per sviluppare progetti nel web responsive e mobile.
       
      Esempio di CSS Responsive con display: flex e media query:
      html, body { font-family:Arial; margin:0; height: 100%; } h1 { margin:0; color:#900; } .centertext { text-align:center; } header { background-color:white; margin:0; width:100%; } footer { margin:0; width:100%; background-color:#600; color:white; height:30px; line-height:30px; font-size:0.8em; text-align:center; } aside { float:right; margin: 10px; width:45%; text-align:justify; } section { float:left; width:50%; } .responsive { max-width: 100%; height: auto; } .navigation { display: flex; flex-flow: row wrap; justify-content: flex-end; list-style: none; margin: 0; background: #600; } .navigation a { text-decoration: none; display: block; padding: 1em; color: white; } .navigation a:hover { background: #900; } @media all and (max-width: 800px) { .navigation { justify-content: space-around; } } @media all and (max-width: 600px) { .navigation { flex-flow: column wrap; padding: 0; } .navigation a { text-align: center; padding: 10px; } .navigation li:last-of-type a { border-bottom: none; } aside { width: 90%; margin: 10px; overflow: auto; } } .content { display: flex; flex-flow: row wrap; justify-content: flex-end; margin: 0; } @media all and (max-width: 800px) { .content { justify-content: space-around; } } @media all and (max-width: 600px) { .content { flex-flow: column wrap; padding: 0;  
      Ecco il codice HTML per il foglio di stile css usato qui sopra:
      <!DOCTYPE html> <html> <head> <title>Il mio sito web personale</title> <link rel="stylesheet" type="text/css" href="stile.css"> </head> <body> <header> <h1 class="centertext">Le mie torte preferite</h1> </header> <nav> <ul class="navigation"> <li><a href="#">Chi sono</a> </li> <li><a href="#">Le mie foto </a> </li> <li><a href="#">Le mie torte</a> </li> <li><a href="#">Scrivimi</a></li> </ul> </nav> <div class="content"> <section class="centertext"> <figure> <img class="resposive" src="images/fruttibosco.png" alt="Frutti di bosco" width="400" height="315"> <br> <figurecaption>Torta ai frutti di bosco</figurecaption> </figure> </section> <aside> <h2>Preparazione</h2> <ol> <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</li> <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</li> </ol> </aside> </div> <footer class="clearfix">Copyright &copy; 2020-2021. Privacy.</footer> </body> </html>  
       

    • Seconda guida sul CSS3, nella prima abbiamo visto come usare i file con estensione .css e i selettori come classi e identificatori, ora ci addentriamo e andiamo a scoprire altro ancora.
      CSS3: Formattazione del testo
      Proprietà:
      color, tex-align, text-decoration, text-indent, e molte altre.. 
      Non possiamo vedere tutte le proprietà, su W3SCHOOLS, trovate tutte le proprietà, ma sono molte.
       
      h1 { letter-spacing: 3px; color: green; text-align: center; text-decoration: overline; font-family: "Comic Sans MS"; } h2 { color: blue; text-align: right; text-decoration: overline; }  
      Qui sopra abbiamo un esempio di alcune proprietà, per facilità di lettura si scrivono una per riga, ma nessuno vieta di scrivere tutto sulla stessa riga.
      CSS3: WEB FONT
      Grazie alla regola @font-face di CSS3 si possono definire nuovi nomi di font che usano famiglie di caratteri presi da server remoti
       
      @font-face { font-family:"nuovo-font"; src:url("nuovo-font.ttf"); /* <- file che definisce il nuovo tipo di carattere }  
      Il file deve essere in remoto altrimenti non viene visualizzato poichè il browser e il computer dell'utente non riescono ad aprire il file del carattere.
      CSS3: text-shadow
      Per ottenere ombre, effetti neon, e 3D, ecc. si può usare la proprietà text-shadow che accetta un elenco di valori per specificare, offset-x, offset-y, blur-radius, color
      Vediamo ora alcuni esempi:

       

       

      CSS3: SFONDI
      La proprietà CSS background permette di gestire lo sfondo delle pagine visualizzate all'interno del browser, background-color, background-image, background-repeat, background-attachment, background-position
      Ecco un esempio di background:
       

       
      CSS3 introduce la possibilità di utilizzare più immagini di sfondo specificando i nomi dei file e i valori delle diverse proprietà separati da una virgola.
      CSS3: BOX MODEL
      Abbiamo già visto brevemente su HTML5, ora con i stili possiamo agire sulle proprietà.
      content: il contenuto vero e proprio del box padding: lascia uno spazio (trasparente) intorno al contenuto border: crea un bordo che circonda padding e contenuto margin: lascia uno spazio (trasparente) intorno al bordo  

       
      border-radius: permette di definire bordi arrotondati box-shadow: permette di definire una o più ombre per i riquadri generati dagli elementi HTML  
      Tutte le proprietà CSS viste fino ad ora (testo, sfondi, box-model) vanno usati con moderazione.
      CSS3: TRASFORMAZIONI
      CSS3 introduce funzioni per ridimensionare, ruotare, distorcere e traslare i vari elementi della pagina, introdurre transizioni e creare animazioni...
      scale(), rotate(), skew(), traslate()
       
      Le transizioni CSS3 permettono di controllare la velocità delle trasformazioni attraverso 4 proprietà:
      transition-property: specifica la proprietà CSS in cui applicare la trasformazione transition-duration transition-timing-function: velocità con cui viene eseguita l'animazione: easy, linear,.. transition-delay  

      CSS3: POSIZIONAMENTO
      Possiamo attraverso i fogli di stile posizionare i nostri elementi dove vogliamo:
      block: in blocco uno sotto l'altro, ES: <div>,<p>,<h1> inline: in riga uno affianco all'altro, ES: <span>, <strong>, <em> La proprietà è display: block, display: inline, display: none
       
      La proprietà position permette di definire il posizionamento dei blocchi:
      static: default, segue il flusso della pagina, ignora top, left.. fixed: fisso, si spsota di top, left,.. rispetto all'angolo in alto/sx del browser e non scorre con il resto del documento. absolute: si sposta di top, left,.. rispetto al primo contenitore con posizionamento diverso da static, se esiste, oppure rispetto alla pagina. relative: si sposta di top, left,.. rispetto al posto che avrebbe occupato in assenza di posizionamento.  

       
      La proprietà Z-index specifica la posizione di un elemento rispetto ad un altro, è molto utilizzata nello sviluppo dei vari layout, ad esempio quando occorre scrivere su di un’immagine oppure bisogna posizionare un elemento contenitore davanti o dietro ad un altro.
      z-index CSS valori possibili:
      valori numerici: valori positivi, negativi o il valore zero. auto: è quello di default. inherit: valore ereditato da un elemento padre.  
      <!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>Esempio proprietà z-index</title> <style> .immagine { width:500px; position: absolute; left: 0px; top: 0px; opacity:0.2; z-index: -1; } </style> </head> <body> <h1>Proprietà z-index CSS</h1> <img class="immagine" src="sito_div/img/time.jpg"> <div> Testo sull'immagine con z-index! </div> </body> </html>  

      CSS3: FLOAT
      La proprietà float permette di spostare gli elementi in una pagina HTML senza usare tabelle, float: left, float: right, float: none
      Nota: spesso per riportare le cose a posto si usa clear: ...
       
      <style type=”text/css”> .imleft { float: left; margin: 15px 15px 5px 15px; border: solid 4px #bbb; } .imright { float: right; margin: 15px 15px 5px 15px; border: solid 4px #bbb; } </style>  

       
      CSS3: TABLELESS LAYOUT
      Le proprietà position, float, clear applicate ai tag HTML permettono di realizzare layout senza tabelle
      Di solito si definiscono degli identificatori che si applicano ai tag <div> e <span>
       
      Un effetto simile si può ottenere definendo lo stile degli elementi semantici di HTML5
       
      HTML4 HTML5 <div id="header"> <header> <div id="menu"> <nav> <div id="content"> <section> <div id="post"> <article> <div id="footer"> <footer> Vedi: http://www.w3schools.com/html/html5_migration.asp
      CSS3: funzioni “browser specific”
      Quando le nuove proprietà CSS3 non sono supportate, potrebbero esserci delle proprietà equivalenti che hanno un nome/valore “browser-specific”
       
      Chrome, Safari: -webkit-
      Firefox: -moz-
      Opera: -o-
      Explorer: -ms-
       
      Bisogna sempre guardare la documentazione
      https://developer.mozilla.org/en-US/docs/Web/CSS/Reference
       
      Esempio HTML5 con TAG SEMANTICI:
      <!DOCTYPE html> <html> <head> <title>Il mio sito web personale</title> <link rel="stylesheet" type="text/css" href="stile.css"> </head> <body> <header> <h1 class="centertext">Le mie torte preferite</h1> </header> <nav> <ul id="menu"> <li><a href="#">Chi sono</a> </li> <li><a href="#">Le mie foto </a> </li> <li><a href="#">Le mie torte</a> </li> <li><a href="#">Scrivimi</a></li> </ul> </nav> <section class="centertext"> <figure> <img src="images/fruttibosco.png" alt="Frutti di bosco" width="400" height="315"> <br> <figurecaption>Torta ai frutti di bosco</figurecaption> </figure> </section> <aside> <h2>Preparazione</h2> <ol> <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud.</li> <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud.</li> </ol> </aside> <footer>Copyright &copy; 2020-2021. Privacy.</footer> </body> </html>  
      Esempio CSS3:
      html, body { font-family:Arial; margin:0; height: 100%; } h1 { margin:0; color:#900; } .centertext { text-align:center; } header { background-colora:white; margin:0; width:100%; } footer { margin:0; width:100%; background-color:#600; color:white; height:30px; line-height:30px; font-size:0.8em; text-align:center; position: absolute; bottom: 0; left: 0; } aside { float:right; width:45%; margin: 10px; text-align:justify; } section { float:left; width:50%; } #menu { list-style-type:none; margin:0; padding:0; height:30px; background-color:#600; font-family:Arial; } #menu li { float:right; height:30px; line-height:30px; } #menu li a { display:block; padding:0 20px; color:#FFF; text-decoration:none; } #menu li a:hover { background-color:#900; text-decoration:none; }  
       

    • Cosa sono i Fogli di Stile?
      I fogli di stile, CSS, servono per facilitare la creazione di pagine HTML con un aspetto uniforme, permettono di separare il contenuto di una documento dalla sua presentazione; possiamo "dimenticare" molti attributi HTML
       
      Permettono di modificare il look&feel di un documento in modo efficiente
      Lo stesso stile può essere applicato a più documenti
      Il sorgente HTML è più "pulito" e il download dei documenti è più veloce
      Si possono progettare pagine HTML per più dispositivi, formattando la pagina per le diverse risoluzioni dei browser.
      CSS3: REGOLE
      Un foglio di stile fornisce una collezione di regole che definiscono l'aspetto degli elementi di una pagina
       
      selector { property1 : value1; property1 : value1; ... }  
      Bisogna creare una pagina non più html ma con estensione .css e qui possiamo mettere tutti i selettori che ci servono dentro le parentesi graffe. Le proprietà sono davvero tanti, dobbiamo solo capire come funzionano e capire il loro meccanismo.
       
      h1 { color:blue; font-size:12px; }  
      Sopra abbiamo il selettore h1 che possiamo modificare con questo stile e le sue proprietà colore blu e il carattere di dimensione 12 px.
       
      CSS3: CLASSI "."
       
      Si definisce uno stile che si può applicare a più elementi nella stessa pagina, su tag diversi
       
      .important { color:blue; font-weight: bold; }  
      Per applicare la classe sopra dobbiamo inserire la classe all'interno dei nostri tag nella pagina html:
       
      <p class="important">Questo è il secondo... </p>  
      CSS3: ID "#" (identificatore)
       
      Si definisce uno stile che si può applicare ad un solo elemento nella pagina
       
      #superImportant { color: red; text-transform: uppercase; }  
      Per applicare l'identificatore sopra dobbiamo inserirlo all'interno dei nostri tag nella pagina html:
       
      <p id="superImportant">Questo è il terzo... </p>  
      CSS3: Pseudo Classi
      Distinguono gli elementi in base ad uno stato speciale
       
      a:link { color:white; text-decoration:none; } /* unvisited link */ a:visited { color:black; text-decoration:none; } /* visited link */ a:hover { color:red; text-decoration:none; } /* mouse over link */ div:hover { background-color:yellow; }  
      Qui possiamo formattare i link ovvero i collegamenti nella nostra pagina, possiamo decidere link non ancora visitato, quando ci passiamo col mouse sopra e quando abbiamo già visitato il link.
       
      Selezionano una parte di un elemento, formattiamo ora il paragrafo:
       
      body { font-family:Arial, sans-serif; } p:first-line { color:blue; font-style:italic; } p:first-letter { color:green; font-size:50pt; font-style:italic; } li:first-child { color:red; }  
      CSS3: Selettore di attributo
      Possiamo cambiare lo stile attraverso gli attributi
       
      [att...] [att^=val] /* attributi att che iniziano con val */ [att$=val] /* attributi att che finiscono con val */ [att*=val] /* attributi att il cui valore contiene val */ Esempio a[href*="mar"]{...} si applica ai link che contengono unige <a href="https://mario.it">Mario.it</a> <a href="https://libri.mario.it">Mario.it</a>  
      CSS3: Combinare i selettori
      Se si vuole associare la stessa regola CSS a più selettori, si possono scrivere i selettori separati da una virgola
       
      ul.menu, a:link, p:first-child { ... }  
      Lo spazio permette invece di creare una "discendenza" tra selettori, per es. ul.menu a:link permette di selezionare tutti i link (a:link) contenuti in un elenco <ul> associato alla classe menu
       
      Il cominatore '+' seleziona il primo elemento (fratello) che segue il primo elemento specificato
      ES: div + p prende il primo paragrafo <p> che segue immediatamente un elemento di tipo <div>
       
      Il combinatore '~' seleziona i nodi fratelli che seguono il primo elemento specificato
      il combinatore '>' seleziona i figli diretti del primo elemento
      ES: ul>li prende tutti gli elementi <li> dentro un <ul>
      CSS3: COME SI USANO
      Ci sono tre modi per associare uno stile ad un file HTML
      EXTERNAL
      <head> <link rel="stylesheet" type="text/css" href="mystyle.css" /> </head>  
      INTERNAL
      <head> <style> /*regole di stile qui </style> </head>  
      INLINE
      <h1 style="color:blue; margin-left:30px;"> ... </h1>  
      Se si usano le stesse proprietà in stili diversi, come si risolvono i conflitti?
      Precedenza: LAST WRITE WINS, a cascata, vince l'ultimo ovvero Inline se esiste se no si passa a Internal e poi ad External.
       
      Browser default External Internal Inline  
      Qui di seguito vediamo un foglio di stile .css di una pagina con input e vari selettori usati con identificatori e classi:
       
      html, body { font-family: Arial; margin: 0; color: white; } input[type=text], input[type=email], input[type=password] { border: 2px solid #8d99ae; border-radius: 10px; margin: 5px; padding: 10px; } .no-outline:focus { outline: none; } input[type=submit] { background-color: #ef233c; border: none; border-radius: 10px; color: white; cursor: pointer; font-weight: bold; margin: 8px 0; padding: 10px; } input[type=submit]:hover { background-color: #d90429; } #mydiv { background-color: #3d5a80; border-radius: 20px; border: 2px solid #8d99ae; padding: 20px; width: 30%; min-width: 270px; margin: auto; tex-align: center; } #myform { text-align: center; }  
       

    • HTML5 Parte 3 Guida Programmare passo per passo
      Questa è la lezione #3 dove parliamo di div e span.
      HTML5: DIV e SPAN
      Questi due tag ci permettono di inserire all'interno della pagina degli elementi, tramite i fogli di stile, possiamo decidere il rendering di questi elementi all'interno nella nostra pagina web.
       
      Ogni elemento HTML ha una visualizzazione standard che dipende dal tipo dell'elemento, gli elementi possono essere di tipo:
      block (visualizzati sempre su una nuova riga)
      esempi: <h1>, ..., <h6>, <p>, <form>, <div> inline (non iniziano su una nuova riga e occupano solo lo spazio necessario
      esempi: <img>, <a>, <span>
      Questa è una struttura molto importante per capire il comportamento HTML, il browser fa il rendering del documento, crea una struttura dati interna DOM, documento object model, un albero che ha tanti nodi quanti sono gli elementi della pagina, la radice è associata al tag html, al di sotto head e body che sono figli del nodo html.
       
      <!DOCTYPE html> <html> <head> <title>Titolo della pagina</title> </head> <body> <h1>Titolo principale</h1> <div>un nuovo blocco</div> <p><span>Primo paragrafo</span> <a href="first.html">Primo link</a></p> </body> </html>  
      Nell'immagine di sotto, se introduciamo i tag <div> e <span>, il browser cambia la struttura dei blocchi della pagina, div che come vedete è un blocco, e span che rimane nella stessa riga del link href accanto.
      Si possono modificare tramite fogli di stile CSS e modificare complatemente l'albero per fare visualizzarli a piacimento.
       

      HTML: BOX MODEL
      Tutti i tag HTML definiscono dei blocchi e si può agire sul loro stile andando a modificarne opportune proprietà
       

       
      Prima del contenuto possiamo modificare il Padding, spazio che viene utilizzato tra il contenuto e il Bordo del blocco, e tramite il CSS possiamo modificare tutte queste proprietà, Border è il bordo del blocco anche questo modificabile a piacimento, e infine Margin, ovvero se vogliamo lasciare altro spazio tra il blocco e l'altro contenuto.
      HTML: TABLELESS LAYOUT
      Usati insieme alle classi e agli identificatori CSS, <div> e <pan> permettono di costruire layout di pagine HTML senza tabelle (tableless) che risultano accessbili anche a browser vocali
       

       
      HTML5:  ELEMENTI SEMANTICI
       
      Un elemento semantico descrive anche il suo contenuto, <span>, <div> NON dicono nulla relativamente al proprio contenuto, <form>, <img>, <h1> "descrivono il proprio contenuto.
      Nelle versioni precedenti di HTML si usavano gli identificatori e e le classi CSS per definire le parti di una pagina web.
       

       
      Con l'html5 abbiamo questi nuovi tag, per costruire le pagine del nostro sito, <header> abbiamo il logo e altri pulsanti che vogliamo inserire, <nav> per il menu in alto, <section> una sezione particolare, <article> se abbiamo un articolo di blog o news, <aside> colonna verticale per articoli o advertising, <footer> per il menu infondo o il copyright.
       
      Agli elementi semantici non viene associata nessuna formattazione di default, usando i CSS è possibile modificare lo stile delle pagine web agendo sui tag semantici.
      HTML5 integrato con oggetti Javascript offre anche API per Geolocation, Canvas, Drag&Drop, Local Storage...
       
      Al giorno d'oggi è importante per i motori di ricerca, tramite crawler possono identificare le pagine che cambiano e migliorare il nostro SEO e SEM su Google o altri motori.
      I motori guardano il testo contenuto nella pagina e poi la struttura dei link di come le pagine sono collegate tra di loro.
       
      Per un Tutorial completo possiamo seguire la pagina ufficiale di W3SCHOOLS
       
      Qui di seguito possiamo vedere un esempio di una pagina HTML, dove abbiamo usato i Form per creare una pagina di registrazione.
       
      <!DOCTYPE html> <html lang="it"> <head> <title>Sign-up</title> <link rel="stylesheet" type="text/css" href="style.css"> <link rel="stylesheet" type="text/css" href="INSERISCI URL CSS AWESOME"> </head> <body> <br> <div id="mydiv"> <form id="myform" action="#" method="POST"> <i class="fas fa-file-signature"></i> <input type="text" class="no-outline" id="firstname" name="firstname" placeholder="Firstname"><br> <i class="fas fa-file-signature"></i> <input type="text" class="no-outline" id="lastname" name="lastname" placeholder="Lastname"><br> <i class="fas fa-at"></i> <input type="email" id="email" class="no-outline" name="email" placeholder="E-mail"><br> <i class="fas fa-key"></i> <input type="password" class="no-outline" id="pass" name="pass" placeholder="Password"><br> <i class="fas fa-key"></i> <input type="password" class="no-outline" id="confirm" name="confirm" placeholder="Confirm password"> <br> <input type="submit" value="Submit"> </form> </div> </body> </html>  
       

    • Perchè usare HTML5?
      HTML è un linguaggio di markup, usato in tutti i siti web per visualizzare testo formattato e multimedia.
      Questa guida continua la lezione 1 -> clicca qui se hai perso la lezione precedente.
      HTML5: LINK
      La struttura per creare i link, collegamenti ad altre pagine, è il seguente:
      <a href="URL"> link text </a> ES: <a href="http://www.google.it"> Google.it </a>  
      URL= UNIFORM RESOURCE LOCATOR, può essere un indirizzo web complet (http://...) oppure può indicare un file sul file system dove risiede il file HTML con il link (nella Document Root!)
       
      PATH relativo se i file sono nella stessa cartella. Per esempio su Windows entrare in una Cartella e i file HTML nella stessa cartella, basta mettere l'indirizzo del file e non l'intero percorso della cartella (PATH).
      HTML: TABELLE
      Fino a qualche tempo fa il layout delle pagine HTML veniva realizzato mediante l'uso di tabelle più o meno sofisticate.
      All'interno delle celle di una tabella venivano inseriti gli elementi della pagine in modo da poterli disporre affiancati, o a cascata, o in un altro ordine.
       
      Oggi l'utilizzo delle tabelle si è ridotto notevolmente e per la creazione di layout si usano i tag <div> e <span> con opportunte regole di stile CSS..
       
      L'uso delle tabelle HTML può ancora essere utile nel caso in cui si vogliano rappresentare dati tabellari, per esempio orari, dati numerici, previsioni meteo..
       

       
      HTML: MODULI
      I form web (moduli) sono usati per ricevere i dati dagli utenti
       
      <form action="..." method="" name=""> elementi del form elementi del form elementi del form </form>  
      action:
      - si deve specificare l'azione che viene eseguita quando si inviano i dati
      - di solito si scrive il nome di un programma sul server che si occupa della gestione dei dati inviati
      method:
      - GET (querystring i dati inviati sono visibili nella barra degli indirizzi sul browser, si usa per esempio nella ricerca di un testo)
      - POST (si usa quando i dati del form modificano lo stato sul server o si inviano informazioni sensibili, per esempio quando ci si registra ad un sito web)
       
      Il tag <input> permette di specificare gli elementi di un form
      Aspetto e comportamento dipendono dall'attributo type
       
      <input type="text"> <input type="radio"> <input type="checkbox"> <input type="password"> <input type="submit"> <input type="reset"> <input type="hidden"> <input type="file">  
      Per inviare correttamente i dati di un form ogni elemento deve avere un nome univoco, specificato con l'attributo name (con l'eccezione dell'elemento di tipo radio, che deve avere stesso nome perchè fa parte dello stesso blocco)
       
      <input type="text" name="cognome"> <input type="radio" name="studio">Licenza elementare <input type="radio" name="studio">Licenza media
      I dati inviati tramite form sono inseriti dall'utente oppure pre-impostati con l'attributo value
       
      <input type="radio" name="studio" value="elementare">Licenza elementare  
      ora vediamo un esempio di un form completo:
       
      <form action="/action_page.php"> <label for="fname">First name:</label><br> <input type="text" id="fname" name="fname" value="John"><br> <label for="lname">Last name:</label><br> <input type="text" id="lname" name="lname" value="Doe"><br><br> <input type="submit" value="Submit"> </form>  
      Potete provare i form direttamente nel sito di w3schools.com
       
      Con HTML5 sono stati introdotti nuovi valori dell'attributo type che permettono una migliore esperienza d'uso da parte dell'utente e facilitano i controlli dell'input da parte del programmatore, color, date, datetime, email, url, month, number, range, search, tel, time, week
      HTML5: MENU
      E' possibile inserire dei menu nei form usando i tag <select> ... </select> e <option> ... </option>
       
      <select> ha anche un attributo size per specificare quanti elementi del menu devono essere visibili; se non si specifica nulla, c'è un solo elemento visibile
       
      <form action=""> <select name="cars" seze="4"> <option value="volvo">Volvo</option> <option value="saab">Saab</option> <option value="fiat">Fiat</option> </select> </form>  
      HTML5: COMMENTI TESTUALI
      Possono essere scritti all'interno del tag <textarea> ... <textarea>
      Per esempio quando abbiamo form dove chiede un commento oppure una recensione:
       
      <textarea rows="10" cols="20"> Inserisci un commento qui </textarea>  
      HTML5: COMMENTI TESTUALI
      Editor di tipo textarea molto più completi e avanzati con il <textarea> come per esempio word detti editor WYSWYG.
      Si scarica la libreria, semplice script da integrare nel nostro file, e una volta aggiunto il tag <textarea> ci darà l'editor completo:
       

       
       

    • Cos è HTML5?
      HTML, Hyper Text Markup Language, introdotto negli anni 90. Si è evoluto fino alla versione odierna la 5, codice che server per formattare un documento, poichè è formato da TAG quindi uno di apertura e uno di chiusura formattando all'interno il suo contenuto.
       
      Editor WYSIWYG, quello che vedi è quello che ottieni, come Office, poichè basta premere un tasto e vedi subito le modifiche.
      Editor di MARKUP come il nostro HTML5, cioè dei comandi che dicono come formattare il testo, costituito da due parti
      il contenuto vero e proprio e proprio le "istruzioni" che specificano come il contenuto deve essere rappresentato sul dispositivo (lo schermo di un pc, una stampante, un browser,..)  
      In genere si racchiude il testo tra istruzioni chiamate tag (o etichette o codici). Gli iptertesti del web sono scritti usando il linguaggio HTML.
       
      HTML non è un linguaggio di programmazione!
       
      HTML è un linguaggio di markup permetti di descrivere la disposizione di tutti gli elementi di un documento visualizzato all'interno di un browser.
       
      I documenti HTML sono file in formato testo (ASCII) che si possono creare con editor di testo e hanno estensione .html.
      Esistono editor online per HTML che possono essere utili per imparare: su Google "html Editor", esempio codepen.io
      I browser leggono i documenti HTML in modo sequenziale e li visualizzano interpretando le specifiche di formattazione.
      HTML5: SINTASSI
      Un documento HTML inizia sempre con la dichiarazione del DOCTYPE che specifica la versione del linguaggio che viene usata, esistono diverse versioni di HTML:
      HTML 4.0
      HTML 5.0 (standard dall'ottobre 2014)
      XHTML
       
      <nome comando> informazioni </nome comando>
       
      Dopo il DOCTYPE, si introduce il tag <html> che va chiuso con </html> al fondo del documento.
      HTML è case-insensitive e quindi <HTML>,<html>,<Html> sono tutti tag leciti.
      con l'introduzione di XHTML e con HTML5 si suggerisce di scrivere tutti i tag con caratteri minuscoli.
       
      <
      <!DOCTYPE html> <----- HTML5 <html> <head> <title>Document Title here</title> <meta name="keywords" content="keywords here" /> <meta name="author" content="name and surname here" /> ................ </head> <body> Content to be shown in the browser here ...... </body> </html>  
      In questo sito (validator.w3.org) potete vedere se una pagina contiene errori.
      HTML5: DOCUMENTO
      HTML permette(va) di specificare come il cotenuto deve essere visualizzato, oggi si tente a separare il contenuto dalla sua presentazione.
       
      <body bgcolor="background color" background="file name" ... >  
      I tag dentro il body sono informazioni di stile (CSS) e non si usa più, questa scelta è deprecata, tutte queste vanno fuori dal file nel foglio di stile.
      HTML: Codifica RGB
      Ogni colore può essere codificato con tre numeri compresi tra 0 e 255 che indicano le quantità di ROSSO, VERDE e BLU presenti nel colore stesso.
       

       
      Con questa codifica si possono rappresentare più di 16 milioni di colori.
      Per specificare i colori si possono usare:
       
      Parole chiave: white, black, green...
      Codifica esadecimale: #cc3300
      Funzione rgb(): rgb(85,196,63)
      Funzione rgba() che ha un quarto parametro intero per specificare l'opacità (canale alpha) di un colore
      HTML5: TITOLI e PARAGRAFI
      Per i titoli si usa
      <h1> title level 1 </h1> <h2> title level 2 </h2> .... <h6> title level 6 </h6>  
      Per i paragrafi si usa
      <p> text here </p>  
      Potete fare prove e mettere mano sul sito w3schools.com/html/
       
      <!DOCTYPE html> <----- HTML5 <html> <head> <title>Document Title here</title> </head> <body> <h1> My first Heading</h1> <p> My first paragraph.</p> </body> </html>  
      HTML5: FORMATO  e TESTO
      Queste parole si vedranno in grassetto:
      <b> bold text </b> <strong> bold text </strong>  
      Questo tag serve per mettere parole in corsivo:
      <i> italic text </i> <em> italic text </em> HTML5: ALLINEAMENTO e LISTE
      Per formattare il documento centrato, a destra o sinistra, o giustificato si usano i seguenti tag, facendo parte sempre del paragrafo:
      <p align="center"> testo centrato </p> <p align="right"> testo tutto a destra </p> <p align="justify"> testo giustificato </p>  
      <center> testo centrato </center> // DEPRECATO non si usa più
       
      In questa lista abbiamo gli elementi non ordinati, quindi col punto iniziale:
      <ul> <li> first element </li> <li> second element </li> </ul>  
      Mentre in questa abbiamo gli elementi ordinati con i numeri:
      <ol> <li> first element </li> <li> second element </li> </ol> HTML5: IMMAGINI
      Per aggiungere un immagine si usa il tag img:
      <img src="image-name" alt="short text describing the image" // DEPRECATI: border="number" width="number" height="number" />  
      N.B.: l'immagine deve essere memorizzata su un file a parte
      Il tag alt è fondamentale per l'accessibilità delle pagine web!
      HTML5: MULTIMEDIA
      Le pagine web contengono risorse multimediali e con HTML5 si è cercato di standardizzare il loro utilizzo all'interno dei vari browser
      I formati audio e video sono tanti, HTML5 supporta:
      audio: MP3, WAV e Ogg video: MP4, WebM e Ogg  
      <audio controls> <source src="audio.ogg" type="audio/ogg"> <source src="audio.mp3" type="audio/mpeg"> Il tuo browser non supporta il tag audio </audio>  
      autoplay fa partire immediatamente l'audio
      loop riproduce continuamente il file audio
       
      <video width="320" height="240" controls> <source src="movie.mp4" type="video/ogg"> <source src="movie.ogv" type="video/ogv"> Il tuo browser non supporta il tag audio </video>  
      autoplay fa partire automaticamente la riproduzione
      il tag <track> permette di associare sottotitoli al video
       
      E' possibile includere (iframe) in una pagina web uno o piu video che vengono visualizzati tramite Youtube.
      Copia il frammento di codice HTML di Youtube che si ottiene seguendo i link Share->Embed Incolla il frammento di codice HTML nel tuo file  
      <iframe width="560" height="315" src="https://www.youtube.com/embed/4_Bjh-fLBVA" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen> </iframe>  
      continua -> vedere lezione 2

    • L’internet contemporaneo è ricco di contenuti multimediali, alcuni interessanti, altri meno. Fra questi contenuti multimediali spiccano i video, sono innumerevoli quelli presenti nei servizi di condivisione video (video sharing). Quando pensiamo ad un sito di condivisione video ci viene subito in mente YouTube, ma ci sono tantissimi altri portali meno noti ma altrettanto validi come Vimeo e Daily Motion.
      Sono anche moltissime e varie le ragioni per cui un utente potrebbe avere necessità di scaricare un video dalla rete, ci sono varie opzioni per fare questa operazione, oggi parliamo di una soluzione semplice ed affidabile pensata anche per gli utenti alla prime armi YTD Video Downloader.
       
      Utilizzare un programma sul proprio PC per realizzare questo specifico compito, può essere comodo per la loro semplicità d’uso e per la possibilità di convertire con un click il formato dei propri file scaricati, oltre che per evitare i vari downloader online che spesso sono ricchi di pubblicità invasiva.
      Cosa permette di fare la versione gratuita di YTD Video Downloader
      L’applicazione ha una versione gratuita e una Pro. La versione gratis permette il download da un gran numero di servizi di video streaming. Fra questi c’è anche Vimeo, DailyMotion, TikTok, Facebook video e molti moltissimi altri. Potete consultare i siti supportati direttamente su questo link con la lista completa dei portali video da cui scaricare filmati. Fra questi noterete che manca YouTube, purtroppo lo scaricamento dei video dal noto portale è limitato agli utenti che passano alla versione Pro.
      La versione gratuita permette di scaricare un video alla volta anche alla massima risoluzione, non supporta le playlist, ma permette la rapida conversione dei video (quella automatica è riservata ancora una volta agli utenti Pro).
      Gli autori dell’applicazione hanno deciso di riservare alcune funzioni agli utenti Pro, solo pagando questa diventa un’applicazione davvero completa.
      Cosa permette di fare la versione Pro di YTD Video Downloader
      La versione a pagamento di YTD Video Downloader permette:
      di scaricare da tutti i servizi elencati in precedenza e da YouTube; il download di intere playlist con un click; effettuare download multipli e simultanei, dallo stesso sito o da siti differenti; di convertire più file video contemporaneamente; la conversione automatica nel formato scelto; di mettere in pausa e continuare lo scaricamento dei video; di avere il supporto via e-mail. Il costo per la versione Pro è spesso in promozione e inferiore alle € 20 annuali, volendo potete acquistare anche solo 1 mese, ma scegliendo i piani semestrali o annuali, il costo si abbatte sensibilmente. Potete consultare il listino aggiornato direttamente nell’apposita pagina con i costi di YTD Video ed eventualmente acquistare il programma per la durata che preferite.
      Come si usa YTD Video Downloader
      L’utilizzo è così semplice, che sembra quasi superfluo spiegarlo. Il programma è tradotto in italiano e offre un’interfaccia molto facile da usare.
      Ovviamente prima di procedere bisogna scaricare e installare YTD Video Downloader sul proprio PC dal seguente link:
       
      DOWNLOAD | YTD Video Downloader & Video Converter
       
      e cliccare in questa pagina sul tasto verde “Free download“. A questo punto il browser vi mostrerà l’eseguibile scaricato, avrà nome “YTDSetup” (se usate Chrome lo vedrete in basso a sinistra).
       

       
      Si potrà quindi semplicemente avviare l’installazione cliccandoci sopra, il sistema chiederà l’autorizzazione e verrà lanciato la procedura. Per completarla basta cliccare sul pulsante “Accetta e installa” e poi su “File“.
      L’installazione va fatta solo la prima volta che utilizzate il programma, poi potrete lanciarlo quando serve comodamente da menù Start.
       
      Installato YTD Video Downloader ecco i semplici passi per scaricare un video:
      andate nella pagina dalla quale vogliamo prelevare il video e dalla barra degli indirizzi, col tasto sinistro del mouse, evidenziare l’indirizzo della pagina; quindi cliccare sull’indirizzo evidenziato col tasto destro del mouse e nel menù contestuale premere su “Copia” oppure utilizzare la combinazione di tasti “CTRL+C“; andare su Start ed avviare YTD Video Downloader;  

       
      cliccare sul pulsante “Incolla URL“; quindi per fare partire lo scaricamento premere sul tasto “Download“.
        Se si vuole, prima di avviare lo scaricamento, si può personalizzare la qualità del download tramite l’apposito menù a tendina e la cartella dove i nostri video saranno conservati. Quelle impostate automaticamente sono la qualità migliore disponibile e la cartella “Documenti“.
       
      Una volta scaricato il file, se si vuole convertirlo in un altro formato, magari per utilizzarlo su un nostro dispositivo, tocca spostarsi sulla scheda “Converti“, aprirlo, scegliere il formato, la qualità e infine cliccare sul pulsante “Converti video“.
      Se si è optato per la versione Pro, nella schermata principale si può optare per la conversione automatica, così da risparmiare tempo.
      Insomma, come potete notare è tutto molto semplice, per essere accessibile anche a chi, magari, mastica poco l’informatica.
       

    • Come ascoltare canzoni gratuitamente con Alexa, sia tramite l’app che tramite i dispositivi Amazon Echo. Alexa supporta solo le versioni Premium a pagamento dei servizi musicali più noti come Spotify e Apple Music. Ma esistono altri metodi per sentire la nostra musica preferita gratis anche tramite i dispositivi Echo.
      Ascoltare musica su Alexa senza abbonamento
      Dal 3 aprile 2020 è ormai possibile accedere ad Amazon Music anche se non si ha un abbonamento ad Amazon Prime. Prima di questa data il servizio era incluso solo per coloro che avevano sottoscritto Amazon Prime, mentre ora il servizio incluso con quest’ultimo si chiama Amazon Music Prime.
      Le differenze fra i 4 servizi di Amazon Music sono le seguenti:
      Amazon Music Free vi permetterà di ascoltare musica su alexa senza abbonamento, in quanto la piattaforma si sostiene grazie all’ascolto di annunci pubblicitari, così come accade anche per la versione gratuita di Spotify. Questo abbonamento vi permette di ascoltare solo musica in Playlist di qualità appositamente create per questo servizio, quindi non potrete scegliere la canzone personalmente. Amazon Music Prime è compresa con l’abbonamento di Amazon Prime e permette l’ascolto di oltre 2 milioni di brani e migliaia di playlist. Amazon Music Unlimited permette l’ascolto di oltre 60 milioni di brani e migliaia di playlist. Il suo costo è di 9.99 € al mese, con spesso offerte sui primi mesi a un costo nettamente inferiore. Amazon Music HD ha compreso nel suo abbonamento l’ascolto di 60 milioni di brani in alta definizione e 2 milioni di brani in Ultra HD (UHD), oltre mille brani in 3D su Amazon Echo Studio e migliaia di playlist. Il suo costo è di 14.99 € al mese, con spesso offerte sui primi mesi a un costo nettamente inferiore. Tutti i servizi essendo sempre di Amazon, sono perfettamente integrati con Alexa e possono essere gestiti direttamente con la voce. Se avere sottoscritto Amazon Prime, sul vostro account Amazon associato ad Alexa, sarà subito disponibile Amazon Music Prime senza alcuna altra configurazione.
      Se i comandi vocali non dovessero funzionare, basta assicurarsi che Amazon Music sia il servizio musicale predefinito. Servono pochi passi, la procedura è in pratica analoga da app Alexa o da sito, quindi:
      aprire l’app di Alexa, premere in alto a sinistra sul tasto menù (caratterizzato da tre segmenti paralleli orizzontali); quindi fare tap sulla voce “impostazioni“, quindi premere sulla voce “Musica” e poi su “Servizi predefiniti”; nella schermata assicurarsi che il servizio selezionato sia Amazon Music. I comandi vocali più comuni per gestire la musica sono:
      “Alexa riproduci Musica“- verrà riprodotta una playlist basata sugli ultimi brani ascoltati; “Alexa riproduci [artista]“- verrà eseguita una lista di brani dell’artista in questione; “Alexa riproduci [brano]“- verrà eseguito il brano scelto; “Alexa passa alla prossima canzone“- permette di passare al prossimo brano. “Alexa metti in pausa” – sospende la riproduzione, che può poi essere ripresa in un secondo momento. Ascoltare musica tramite Deezer
      Se sfruttate questo comodo servizio musicale anche senza avere un account premium, ho una buona notizia per voi: il servizio tramite apposita Skill funziona perfettamente tramite Alexa, anche se è molto limitato. Ma si tratta di uno dei due soli modi per avere servizi di streaming musicale completamente gratis sul vostro Echo.
      La Skill è installabile semplicemente dall’app Alexa per Android e iOS, basta aprirla quindi:
      premere in basso a destra sul tasto menù (caratterizzato da tre segmenti paralleli orizzontali); fare tap sulla voce “Skill e giochi“, quindi premere in alto a destra sul pulsante a forma di lente di ingrandimento; cliccando in alto a destra sulla lente di ingrandimento, scrivere nell’apposita casella che appare “Deezer” selezionare la prima voce, e poi premere sul tasto “Abilita all’uso“; si aprirà una finestra in cui vi toccherà mettere le vostre credenziali del servizio e fare l’accesso. A questo punto avete finito la configurazione e potete godervi la vostra musica. La procedura è sostanzialmente analoga se si utilizza l’interfaccia Web di Alexa.
      La Skill permette di ascoltare la musica dal proprio “Flow“, la playlist automatica che il servizio realizza in base ai brani che abbiamo inserito nei preferiti. Per farlo bisogna svegliare Alexa e poi utilizzare il comando “Esegui su Deezer il mio Flow“;
      Inoltre, permette di avviare Flow basati su un artista specifico basta utilizzare il comando “Esegui su deezer [nome artista]“.
      Però si hanno alcune importanti limitazioni:
      non è possibile ascoltare le proprie playlist; se si cerca uno specifico artista partirà una playlist ispirata a quell’artista (Flow); non è possibile avviare una singola canzone. Ascoltare la radio tramite Alexa
      Abbiamo parlato di due servizi per la musica in streaming, ma esistono anche le stazioni radio che possono essere ascoltate online.
      Alexa ha già un comodo servizio, già predisposto per l’ascolto della radio in streaming online e si basa sull’ottimo TuneIn radio. Per ascoltare una stazione scelta base ai nostri gusti automaticamente da Alexa basta dire:
      ” Alexa, fammi ascoltare una stazione radio“ Per scegliere una particolare stazione radio basta utilizzare il comando:
      “Alexa, fammi ascoltare stazione radio [nome della stazione radio di vostro gusto]“ Se volete conoscere un elenco delle stazioni radio online disponibili, potete sfruttare l’app di Alexa, seguendo questi passaggi:
      aprirla e in basso andare alla voce “Intrattenimento”; scendere fino a “Radio Locale TuneIn” e premere su “Sfoglia“; nella schermata si possono trovare le più seguite radio locali, e quelle generali di più successo, inoltre in alto si può la funzione di ricerca per trovare una radio di vostro interesse. Alcune radio dispongono di una propria Skill dedicata, potete installarla direttamente andando nel menù skill, seguendo la procedura spiegata del paragrafo dedicato a Deezer.
      Utilizzare il proprio Echo come una cassa bluetooth
      Non molti sanno che il vostro dispositivo Echo può fare anche da comoda cassa Bluetooth e quindi può riprodurre musica e audio che gli inviate dal telefono o dal tablet.
      Per iniziare la riproduzione bisogna prima effettuare l’accoppiamento, ecco la rapida procedura:
      attivare il bluetooth nel terminale da cui si intende trasmettere e assicurarsi che sia impostato su rilevabile; aprire l’app di Alexa, premere sul tasto “Dispositivi” in basso a destra; selezionare la voce “Echo e Alexa” e poi il dispositivo Echo di cui si vuole accendere il Bluetooth; premere quindi sulla voce “Dispositivi Bluetooth” e poi sul tasto “Associa un nuovo dispositivo”. apparirà il dispositivo da associare e potrete selezionarlo. A questo punto la procedura sarà terminata e si potranno riprodurre i propri contenuti audio sulla cassa.
       

    • Vuoi scaricare Mp3 gratis usando un BOT Telegram? Puoi farlo gratuitamente da Spotify
      Telegram è un contenuto incredibile di risorse e non solo è la seconda app di messaggistica più diffusa al mondo ma permette anche di scaricare tantissimo materiale gratuitamente. La fortuna di Telegram sono i canali e soprattutto i BOT che offrono una quantità incredibile di contenuti da scaricare molto facilmente in pochi click.
      Tra tutto il materiale disponibile su Telegram pronto da scaricare, troviamo anche tanta Musica ed in questo articolo andremo a vedere come sia facile scaricarla usando l’app di messaggistica che si trasforma in un’applicazione pirata in pochi click. Usando Telegram non è mai stato così semplice scaricare musica velocemente, ecco come fanno i pirati.
      Potrai scaricare musica in formato Mp3 in pochi click su qualsiasi piattaforma sia disponibile Telegram, quindi sia da smartphone Android e iOS che da PC Windows, MAC o Linux e tutti i dispositivi come iPhone, iPad, Galaxy e molti altri. Di seguito tutti i passi da seguire ma ti anticipo che sono molto semplici da effettuare.
      Come scaricare Mp3 da Telegram
      Il BOT Telegram di cui stiamo parlando è Music Download e lo trovate aprendo questo link https://t.me/musicdownloaderrobot?start=botostore e che vi permetterà di scaricare musica da Telegram molto facilmente. Il tutto nel formato Mp3 quindi universale e ascoltabile offline quando volete e con una normale app di musica.
      Scaricare Mp3 da Telegram con il BOT scrivendo il nome del brano, artista o album
      Apri il BOT Telegram ->  https://t.me/musicdownloaderrobot?start=botostore; Clicca su Avvia in Basso; Cerca la canzone, artista o album che desideri scaricare; Aspetta che si carichi con il link a Spotify; In automatico comparirà il tasto Play e poi il tasto per scaricare tutto (Freccia verso il basso); Potrete sia ascoltare la canzone in streaming che scaricarla sul vostro smartphone; Scaricare Mp3 da Telegram con il BOT copiano il link da Spotify o Deezer
      Puoi anche scaricare inserendo il link da Spotify (e anche quello di Deezer) cercando la canzone e cliccando sui tre puntini sulla destra; Link Spotify del tipo https://open.spotify.com/playlist/37i9dQZF1DWVPKP49DU8tu Link Deezer del tipo https://www.deezer.com/it/track/565595432 Cerca la voce Condividi; Ora trova l’opzione Copia Link; Il link verrà copiato; Incollalo nella chat del BOT; Aspetta che si carichi e clicca sul pulsante Download. Ma visto che le immagini parlano più di 1000 parole, ecco la galleria illustrata con tutti i passi dettagliati di seguito. La guida che abbiamo raccolto di seguito è presa da Android ma è valida più o meno allo stesso modo per iOS con leggeri cambi di menu ma sono gli stessi.


    • I migliori siti dove scaricare Riviste, Giornali e Quotidiani Italiani senza pagare e non solo anche Telegram
      AGGIORNAMENTO OTTOBRE 2020
      Internet è una fonte inesauribile di materiale e anche giornali, riviste e quotidiani sono disponibili online senza dover comprare sempre il classico giornale cartaceo in edicola. Oggi andiamo a vedere dove scaricare riviste e quotidiani in PDF con una selezione dei migliori siti del 2020.
      I giornali o li comprate in edicola, o vi abbonate ai numerosi servizi disponibili per scaricare le copie in formato digitale, oppure affidarsi ad uno dei numerosi siti che offrono giornali gratis. Infatti online sono disponibili numerosi portali che permettono di scaricare giornali online gratis come quotidiani, riviste e magazine senza pagare.
      Prima di scaricare il giornale gratis, potete sfogliare ed accedere alla prima pagina dei quotidiani così da decidere se gli argomenti vi interessano o meno e poi procedere al download. Per leggere le prime pagine dei giornali potrete provare GIORNALONE e GIORNALI mentre di seguito trovate i siti per scaricare i giornali in formato PDF.
      Qui non troverai nessun link diretto al download di giornali in PDF, ma solo un elenco delle risorse che sono disponibili online. Non è presente nessun PDF con giornali e non pubblichiamo noi i giornali. Inoltre credo che sia scontato che tutto ciò che fate è illegale.

      Siti dove trovare quotidiani e giornali gratis in PDF
      Di seguito trovate un bell’elenco dei migliori siti dove scaricare o leggere tutti i giornali e i quotidiani italiani online. Tutti i portali permettono di scaricare in formato PDF da visualizzare su tutti i dispositivi come smartphone, tablet o computer Android, iOS e Windows.
      edicola.xp3.biz qbin.io/aa-shirts-17dl edicolafree.xp3.biz EurekaDDL filecrypt.co/Container/12CCC87401.html
      Canali Telegram dove trovare quotidiani e giornali gratis in PDF
      Se usate Telegram vi consiglio di visitare questi tre canali, con i primi due che sono fantastici e pubblicano di continuo giornali, quotidiani ed anche riviste settimanali e mensili da scaricare gratis. Tutti questi canali Telegram per scaricare quotidiani sono super aggiornati anche più volte al giorno. Ecco i migliori:
      https://t.me/edicolaindigitale https://t.me/Giornali24Web https://t.me/QUOTIDIANIEDICOLAGIORNALI https://t.me/Rivistalibera
      Siti dove trovare riviste e magazine gratis in PDF
      I siti seguenti contengono invece solo tutte le riviste, magazine, periodici come settimanali e mensili da tutto il mondo. Accedendo ai siti avrete la possibilità di scaricare i PDF facilmente, ed inoltre dovrete selezionare la voce Italy o Italia che vi darà accesso alla sezione Italiana.
      avaxhome-mirrors.pw xsava.xyz it.downmagaz.com freemagazinepdf.com magazinelib.com/italy pdf-magazines-download.com pdfgiant.unblockit.pro/
      Come accedere ad un sito web bloccato: Cambia i DNS
      La prima e più facile soluzione è provare a cambiare i DNS sul tuo computer, smartphone, tablet, Smart TV o altro dispositivo.
      Come accedere ad un sito web bloccato: Usa una VPN
      Un altra soluzione, che però non è facile da configurare, è quello di provare ad usare una VPN che potete configurarle anche sul router di casa ed altre dispositivi.
       

    • Quotidiani gratis da scaricare su smartphone, tablet, PC o MAC con un click?
      In molti mi chiedono sempre più spesso di poter leggere giornali o quotidiani gratuitamente e sebbene sia illegale i servizi creati dai pirati sono sempre più diffusi. Infatti non è sufficiente la chiusura massiva di gruppi Telegram, portali, siti web e programmi che permettono di scaricare quotidiani, magazine, giornali e periodici gratuitamente perché, nuovi nascono ogni giorni.
       
      Non appena qualcosa viene chiuso o bloccato, in automatico ed in modo quasi istantaneo, nascono nuovamente con un nome diverso, un indirizzo web cambiato o un canale Telegram tutto nuovo. Ecco che cercando in rete ho trovato un nuovo sito web che indicizza ogni giorno, sempre al mattino presto tantissimi se non tutti i quotidiani nazionali.
       


      Il sito si chiama EDICOLA DASOLO che riprende il nome di un vecchio sito utilizzato dai pirati per pubblicare link di download di programmi, film, serie TV, applicazioni craccate per Android e iOS e molto altro. Oltre ad essere link sempre disponibili ed attivi, tutti sono super aggiornati con il download direttamente dei quotidiani in formato PDF, che potete leggere su qualsiasi dispositivo.
       
      Nella pagina trovate tutti i quotidiani in un grande elenco aggiornato ogni giorno, con link diretti dove fare il download senza troppe guide complicate, cliccate, attendente e scaricare il quotidiano. E’ presente anche un link diretto dove scaricare tantissime Riviste nazionali in lingua Italiana. Ogni giorno trovate oltre 50 quotidiani Italiani incluse le edizioni locali aggiornate.
      Sito Download Quotidiani e Riviste Gratis
      Il link seguente è un portale pirata che permette di scaricare quotidiani gratis aggiornati ogni giorno con link sempre funzionanti e aggiornati alle prime ore del mattino. Ovviamente vi sconsiglio di usare questo sito per scaricare quotidiani illegalmente visto che dovete acquistare la regolare copia e non scaricarla gratis senza pagare.
      Ecco i link di Edicola gratis:
      —> edicola.xp3.biz <—
      —> tre3tre.eu3.biz <—
      —> overpost.biz <—
      Da precisare che sul sito sono presenti contenuti protetti dai diritti d’autore e quindi non dovete scaricarli. L’articolo è scritto a puro titolo informativo per conoscere una risorsa liberamente disponibile sul web accessibile da tutti con una semplice ricerca sul web. Non dovete in nessun modo procedere al download dei file PDF dei quotidiani poiché fareste un illecito.

    • Account Premium Generator per EasyBytez. Ecco i migliori metodi per scaricare gratuitamente da EasyBytez senza attese e alla massima velocità
      Il famoso sito di hosting, EasyBytez.com è senza dubbio una delle migliori alternative per scaricare e caricare file da internet. Il sito in questione è tra le migliori scelte per scaricare file da internet e molti siti si affidano a questo servizio per permettere ai propri utenti di scaricare vista l’alta affidabilità, velocità e possibilità di scaricare da qualsiasi dispositivo.
      Non è difficile scaricare un file da EasyBytez ma hai se non hai un account premium avrai delle limitazioni, come download lenti, non in simultanea e download ogni tot di ore. Se dunque sei alla ricerca di un account premium per EasyBytez e non vuoi pagare l’abbonamento siete nel posto giusto perché noi vi diremo i metodi funzionanti per generare link premium per scaricare da EasyBytez gratuitamente.

      I siti che trovate in questa pagina, permettono di ottenere un account premium per EasyBytez senza pagare, e il loro utilizzo è anche semplice ed immediato. Se dovete scaricare un file che è presente su EasyBytez e non avete un account premium potete scaricare dopo aver aspettato 60 secondi, e non in simultanea.
      Infatti se provate a scaricare un file caricato su EasyBytez avete due opzioni, la Free Download e Premium Download con la versione Premium che ha velocità di download elevati, simultanea e download manager dedicato, quindi con molti vantaggi rispetto alla Free. Di seguito trovate i due portali che permettono di convertire link Free in link Premium di EasyBytes.
      EasyBytez Premium Account: I migliori siti dove trovarli
      Di seguito trovate i migliori generatori di account premium per EasyBytez che al momento in cui scriviamo sono funzionanti anche se dovete effettuare una registrazione gratuita che vi darà accesso al portale in maniera facile.
      Di seguito i link per creare e generare link e account premium per EasyBytes:
      https://www.deepbrid.com/downloader http://prem.link/ Come funzionano?
      Entrambe le soluzioni funzionano allo stesso modo. Dovrete copiare il link di EasyBytez, ad esempio http://www.easybytez.com/9nand9ud9jq, nel box bianco presente nelle pagine degli account generator indicati precedentemente. Infine cliccare su Generate Link per ottenere il link premium di EasyBytez e scaricare al massimo della velocità.
       

    • All’inizio c’era solo Sweatcoin, ora le applicazioni per guadagnare con lo smartphone si sono tante e ognuno può scegliere quella che preferisce. Dai sondaggi ai contapassi, al cashback sugli acquisti: vediamo quali sono le applicazioni più affidabili per avere una piccola entrata extra.
      Sondaggi retribuiti: Google Opinion Rewards
      Google Opinion Rewards | LINK
      Si tratta di rispondere a brevi sondaggi proposti da Google, ne arrivano in media 1 o 2 a settimana, che spaziano tra i più vari settori di ricerca. Generalmente le domande indagano sui comportamenti degli utenti: quante volte vai al cinema? Hai viaggiato negli ultimi 14 giorni? Quante ore dormi a notte? Sembrano domande semplici e superflue, in realtà queste statistiche servono a chi lavora in ambito marketing per comprendere le abitudini delle persone. In cambio, gli utenti ricevono una piccola ricompensa che va da 0,25 a 0,75 centesimi (in base al sondaggio) da spendere su Google Play Store.

       
      Acquisti e cashback: Hype
      Hype | LINK
      La carta prepagata Hype offre una lunga lista di vantaggi ai suoi iscritti, tra cui una ricca sezione “offerte” con promozioni per lo shopping e per i viaggi, e il cashback su qualsiasi acquisto. In più, tutti i nuovi clienti ricevono un bonus di benvenuto pari a 10 euro dopo la prima ricarica.

       
      Ricerche di mercato: BeMyEye
      BeMyEye - Guadagnare denaro | LINK
      Questa applicazione permette di avere un piccolo guadagno svolgendo determinate attività durante la giornata. Solitamente viene richiesto di fotografare dei prodotti esposti in un negozio in cambio di ricavi che partono da 0,25 centesimi e arrivano a 25 euro. Grazie alla collaborazione con grandi marchi del calibro di Coca Cola, Nestlé, Heineken e Ferrero, le missioni vengono rinnovate spesso e il “circuito” continua a espandersi: attualmente oltre 2 milioni di persone utilizzano questa applicazione e riescono effettivamente a guadagnare con lo smartphone ogni giorno. Un altro lato positivo è il pagamento, che avviene direttamente su conto corrente o PayPal.

       
      Per gli sportivi: Sweatcoin
      Sweatcoin - Walking step counter & pedometer app | LINK
      L’utente che utilizzerà questo contapassi guadagnerà uno “sweatcoin” ogni 1.000 passi (poco più, in realtà). Le monete potranno essere spese nello shop online interno all’applicazione, dove però si può trovare un po’ di tutto: abbonamenti, gadget, scarpe, prodotti hi-tech. L’altra faccia della medaglia riguarda il consumo della batteria, dato che l’applicazione per calcolare i passi con precisione richiede il GPS sempre attivo durante l’utilizzo.

       
      Per i creativi: Foap
      Foap - sell your photos | LINK
      Foap ha già spopolato tra gli instagrammer appassionati di fotografia. È, infatti, un mix tra il famoso social di immagini e una piattaforma di vendita. Le foto vengono vendute in media a 5 dollari l’una, ma occorre tenere conto che più vendite della stessa foto corrispondono a un guadagno maggiore. Ovviamente, le foto devono essere assolutamente originali e superare una valutazione di 2,5 su 5 punti totali. Il ricavato delle vendite verrà versato direttamente sul conto PayPal dell’utente.

       
      Tramite pubblicità: SlideJoy
      Slidejoy - Sblocca per soldi | LINK
      L’utente che imposta SlideJoy come schermata di blocco del proprio dispositivo vedrà notizie e pubblicità ad ogni sblocco, ma verrà ricompensato in denaro su PayPal oppure in buoni regalo. La semplicità è il punto forte di questa applicazione.
      Quanto si può guadagnare con lo smartphone?
      Chi sogna di “vivere di smartphone” potrebbe dover tornare con i piedi per terra. Le applicazioni elencate pagano davvero ma bisogna tenere a mente che la maggior parte delle volte si tratta di pochi centesimi, che spesso sono utilizzabili solo a partire da una data soglia. Restano comunque una scelta valida per chi ha bisogno di racimolare un po’ di denaro extra, magari per un acquisto sul Play Store.
       

    • Telegram è una delle app di messaggistica istantanea disponibile gratuitamente per Android e per iOS e utilizzabile anche su PC tramite client dedicato.
      Nel corso del tempo, ha introdotto funzionalità innovative, mantenendo sempre un elevato livello di sicurezza e affidabilità. E’ possibile seguire gruppi dedicati ad argomenti o interessi specifici, effettuare chiamate vocali criptate, scambiarsi file di ogni tipo ed ha persino una criptovaluta dedicata chiamata GRAM.
      Non per nulla, rappresenta una delle più valide alternative a WhatsApp. Uno dei segreti del grande successo di Telegram, è rappresentato dai “BOT”. Scopri in questa guida cosa sono i bot, i migliori Bot Telegram disponibili al momento, come installarli e come trovare nuovi bot.
      Cosa sono i Bot Telegram
      I bot su Telegram sono piccoli programmi automatizzati in grado di svolgere determinati compiti previo l’inserimento di una riga di comando; alcuni rappresentano di fatto, per complessità e features, delle vere e proprio nuove App.
      Si presentano come delle chat in cui attivare le funzionalità del Bot; una volta attivate queste funzionalità, sarà possibile utilizzare il campo di testo (dove di solito scriviamo messaggi) per richiamare le funzioni del bot (di solito con un “/” come simbolo a precedere il comando da lanciare). Oltre alla digitazione manuale del comando è possibile usare un piccolo pulsante con il riassunto dei comandi disponibili.
      I bot Telegram possono essere utilizzati sia nella loro chat specifica e sia integrati all’interno dei gruppi o dei “super-gruppi”, così da automatizzare alcuni processi (come i ban degli utenti che non rispettano le regole) o per ottenere nuove features durante una normale chat con amici / conoscenti. E’ una funzionalità che rende Telegram unico tra le applicazioni di messaggistica.
      Come aggiungere/rimuovere un Bot Telegram
      Aggiungere un bot
      L’aggiunta di un bot è un’operazione semplice: individua il bot che vuoi aggiungere tra quelli consigliati nei paragrafi successivi o ricercati nella barra di ricerca offerta da Telegram (basterà cliccare o effettuare un tap). Una volta aperta la pagina di chat del bot, sarà sufficiente premere all’interno della chat stessa “Avvia” per iniziare.

      Una volta avviato sarà sufficiente seguire i suggerimenti offerti dal bot stesso riguardo il suo utilizzo o richiamare i comandi supportati premendo sul tasto dei comandi, come visibile nell’immagine in basso.

      Rimuovere un bot
      Se non sei più interessato a tenere un bot dovrai prima stopparlo e poi cancellare la chat di riferimento; cancellare semplicemente la chat non fermerà il bot che potrebbe comunque avere accesso alle informazioni del tuo profilo (spesso necessarie per l’utilizzo dello stesso).
      Per poter rimuovere correttamente un bot è sufficiente aprire la chat del bot, fare clic sui puntini in alto a sinistra e fare clic su “Arresta e blocca bot”, poi su “Elimina chat”.

      Ora il bot non sarà più attivo sul tuo profilo e la chat del bot sarà correttamente eliminata. Il bot è ancora raggiungibile ma andrà sbloccato prima di poterlo utilizzare di nuovo.
      Come trovare nuovi bot per telegram
      Quelli che ti ho mostrato sopra sono solo alcuni dei bot che puoi aggiungere a Telegram! Per trovarne di nuovi, puoi utilizzare un bot dedicato alla ricerca dei bot accettati da Telegram; ti basterà aggiungerlo cliccando sul tasto qui in basso.
      LINK | TelegramStoreBot
      Se invece vuoi effettuare una ricerca da browser Web sarà sufficiente visitare al seguente pagina web (indirizzo non ufficiale).
      LINK | TelegramItaliaBot
      Un nuovo store dove molto fortnito di bot da vedere direttamente sul web e possibile aggiungerle direttamente da browser tramite telegram web.
      LINK | StoreBot
      LINK | BotoStore
      Se invece vuoi cercare nuovi bot da smartphone o da tablet basterà aprire l’app di Telegram e utilizzare la barra di ricerca attivabile premendo sul tasto a forma di lente d’ingrandimento in alto a sinistra.

      Ora digita il nome del bot che intendi aggiungere e segui la procedura descritta in questa guida per iniziare ad utilizzarlo.
       

    • Libri.cx è il miglior sito dove scaricare eBook gratis. Cambia indirizzo, ma di recente ha più problemi del solito. Ecco come accedere
      AGGIORNAMENTO SETTEMBRE 2020 Il sito Libri.cx (Libri.tel al nuovo indirizzo) è ritornato a funzionare con il solito indirizzo Libri.tel/ebook/. Il plugin che genera la seconda pagina per scaricare il libro ora viene generata correttamente. Dopo diversi giorni di malfunzionamento ora è tutto ok funzionante sempre al solito link libri.tel/ebook/
      Anche se in alto compare l’errore [vc_row][vc_column] in basso noterete che i libri sono sempre presenti ed aggiornati. Spesso capita che se accedete all’indirizzo libri.tel compaia l’errore Error 502 Bad gateway, non preoccupatevi, accedete a libri.tel/ebook/ per visualizzare il sito aggiornato.
       

      Siti dove scaricare eBook gratis è pieno il web ma Libri.cx ha fatto la storia dei libri digitali ed è attivo da diversi anni. Il sito da qualche mese ha cambiato indirizzo passando da libri.cx a libri.xyz ed ora a libri.tel/ebook/ dove sono presenti sempre gli stessi eBook con migliaia di link funzionante per fare il download veloce in formato epub o pdf.
      Uno dei punti di forza di Libri.cx è la fruizione veloce senza registrazione e d il download di eBook velocemente dal suo portale senza troppe difficoltà. Accedendo al sito web avrete accesso a migliaia di eBook sempre aggiornati in Italiano da scaricare gratuitamente.
      Libri.cx è molto ben organizzato, ha tante categorie contenente migliaia di libri ed eBook pronti da scaricare e il team che gestisce il sito continua a caricare decine eBook ogni giorno. Grazie alla community che partecipa attivamente alla vita del sito ogni giorno i libri caricati sono davvero tantissimi.

      Come accedere a Libri.cx
      Da qualsiasi dispositivo in grado di connettersi ad internet con un browser integrato come smartphone e tablet Android o iOS, smart TV, set-top-box ed altri dispositivi sarà sufficiente inserire l’indirizzo libri.tel/ebook/ nella barra degli indirizzi per accedere alla versione web di Libri.cx (ex indirizzi Libri.xyz e Libri.pro).

      Libri.cx non funziona? Non accedo a “Libri.cx”.  la soluzione
      Il sito Libri.cx non funziona e non è più possibile accedere alla homepage del sito ma ovviamente non è così perché noi vi diremo come accedere ugualmente. Se non accedete più al sito di Libri.cx visualizzando il messaggio in fase di caricamento:

      Impossibile raggiungere il sito
      Non è il tuo dispositivo ad avere problemi di connessione ad internet, ma è un messaggio di errore che ti avverte che il sito non è raggiungibile ma solo perché non si riesce a risolvere il nome. Noi vi diremo tutti i metodi per accedere al sito di Libri.cx.

      Come accedere a Libri.cx: Nuovo indirizzo 2020
      La soluzione più semplice per accedere al sito è usare il nuovo indirizzo del sito, cioè LIBRI.TEL/EBOOK/ che però risulta bloccato nel nostro paese dopo che anche il vecchi indirizzo, Libri.cx è stato oscurato ma usando un proxy o una VPN accederete lo stesso al sito visto che risulta attivo e funzionante.
      Per le richieste di assistenza è disponibile il sito librigratis.me che è sempre attivo e funzionante e potete richiedere supporto sul sito LIBRI.TEL se qualcosa non dovesse funzionare. Potete aprire un ticket inserendo una vostra mail vera per ricevere una risposta.

      Come accedere a Libri.cx: Cambia i DNS
      L’altra soluzione facile è cambiare i DNS sul tuo computer, smartphone, tablet, Smart TV o altro dispositivo. Se non sai come farlo, abbiamo una guida che fa per voi COME ACCEDERE AD UN SITO WEB BLOCCATO CAMBIANDO I DNS. E' il metodo più veloce e funzionale senza sbattimenti.

      Come accedere a Libri.cx: Usa una VPN
      Un altra soluzione, che però non è facile da configurare, è quello di usare una VPN (TUTTE LE VPN IN OFFERTA MENO DI 1 EURO AL MESE) che potete configurarle anche sul router di casa ed altre dispositivi COME CONFIGURARE LA VPN SU ROUTER.

      Come accedere a Libri.cx: Cambia motore di ricerca
      Per accedere a tutti i siti bloccati o oscurati, il nostro consiglio è di usare il motore di ricerca DuckDuckGo che non solo è attendo alla tua privacy ma non censura i risultati visualizzando anche tutti i siti oscurati. Su DuckDuckGo avrete la possibilità di accedere a tutti i siti bloccati ed inaccessibili.

    • Come bloccare le Pubblicità su iPhone/iPad con Blokada Gratis e senza Jailbreak
      In questa breve guida vediamo come bloccare le pubblicità sui nostri dispositivi Apple con una semplice applicazione senza Jailbreak e senza altri siti ma direttamente dall'Apple Store.
      Le pubblicità servono ma a volte sono invadenti e su internet impediscono la normale navigazione web su un sito. Tra finestre, banner, popunder o popup a tutto schermo, le pubblicità spesso ci impediscono di visualizzare correttamente il contenuto di un sito web.
      Se da un lato la pubblicità permette di usufruire di un servizio gratuitamente, ecco che dall’altro lato può creare seri problemi di navigazione. Se volete bloccare tutte le pubblicità sia sulle applicazioni che durante la navigazione web su qualsiasi dispositivo iOS, il nostro consiglio è di usare l’applicazione Blokada. Questa fantastica applicazione permette di eliminare completamente la pubblicità da iOS e iPadOS da tutti i siti che visiti dallo smartphone in modo automatico senza avere il jailbreak o fare procedure strane.

      Come fa Blokada a bloccare le pubblicità?
      Il funzionamento di Blokada è basato sull’utilizzo di una VPN che agisce direttamente in locale sul dispositivo Apple senza collegarsi a nessun server esterno anche se l’app deve aggiornare di tanto in tanto l’elenco delle pubblicità bloccate. Blokada è un AdBlock efficiente, gratuito e soprattutto che funziona senza avere il jailbreak attivo sul nostro dispositivo.
      Dove scaricare Blokada per iPhone/iPad?
      Blokada è presente sull’AppStore ed è disponibile al download gratuito direttamente sulla pagina ufficiale di Blokada. L’app è gratuita sia per iPhone che per iPad e sono disponibili acquisti in-app per sbloccare altre funzionalità esclusive.
      Come configurare Blokada su iPhone e iPad
      Una volta installata l’applicazione Blokada dal link in alto, dovete semplicemente avviarla, attivare la VPN andando in Impostazioni -> Avanzate e selezionare la voce Goodbye Ads. Ora dovete tornare alla Home dell’app e cliccare sul pulsante bianco in basso con il segno di power. Comparirà un messaggio dove cliccare su Richiesta di connessione della VPN ed in pochi secondi avremo bloccato tutte le pubblicità mentre navighiamo e dentro ogni app che usiamo. Sono presenti diverse altre funzioni che vi riassumiamo di seguito.
      Principali impostazioni Blokada
      Disabilitare tutte le notifiche mettendo lo switch sul bianco (no arancione); Spostando il pulsante su arancione su Start on boot, l’app si avvierà in automatico all’accensione dello smartphone; Premendo sui rispettivi pulsanti 1 in blacklist e 2 in whitelist potrete inserire i siti web da bloccare o da far vedere semplicemente accendendo alla sezione ed inserendo il link del sito. Puoi anche selezionare il server DNS da usare in Blokada così da aumentare la sicurezza; Attivando l’opzione Online only, Blokada si attiverà solo quando sei connesso ad internet. Se invece non lo sei, Blokda si disattiverà per risparmiare batteria.  

    • Sono migliaia i messaggi che scambiamo tramite questa pratica applicazione di messaggistica, e  fra questi ci sono molti contenuti multimediali (foto, video e audio). I componenti multimediali rendono più ricche le nostre chat, ma occupano molto spazio sulla memoria dello smartphone. Una singola immagine infatti occupa lo spazio di migliaia di messaggi testuali. Vediamo come fare per non salvare foto e video WhatsApp nella galleria e nello smartphone, così da risolvere semplicemente entrambi i problemi sopra esposti.
      Come non far comparire nella nostra galleria le foto e i video di WhatsApp
      In generale tutti i file multimediali di WhatsApp, per impostazione predefinita, sono visibili automaticamente nella galleria, questo stato di cose può essere modificato semplicemente intervenendo sull’apposita voce “Visibilità”, vi spieghiamo come raggiungerla. La procedura è differente se si vogliono nascondere dalla galleria la totalità dei file multimediali, oppure se vuole evitare di salvare solo quelli di una determinata conversazione o gruppo.
      Bloccare globalmente la visualizzazione delle foto e dei video di WhatsApp nella galleria
      La procedura, tramite le impostazioni di WhatsApp, è molto semplice:

      aprire l’app, premete in alto, sul tasto menù con i tre puntini sovrapposti, poi fare un tap sulla voce “Impostazioni“, qui entrare nel menù “Media“, infine toccare la voce “Visibilità dei media“.
      Un’altra opzione, leggermente più complessa, è disponibile solo su Android, dove si può utilizzare l’esplora risorse per accedere alla memoria interna. Questa procedura ha un vantaggio indiscutibile, permette di nascondere tutti i file multimediali, anche quelli recapitati in precedenza.

       
      dotarsi di un file explorer (Fx Explorer è quello utilizzato negli screen ed è ottimo), altre valide alternative le trovate in questa guida;
      aprire il file explorer scelto, quindi andare prima in “Main Storage” poi in “WhatsApp > Media > WhatsApp Images” (per le foto) o “WhatsApp > Media > WhatsApp Video” (per i video);
      in entrambe le cartelle create un file chiamandolo semplicemente “.nomedia” (senza parentesi e non bisogna scordare il punto).
      Se volete che i file multimediali di WhatsApp tornino nella galleria del vostro telefono, basta eliminare i due file .nomedia appena creati.
      Bloccare la visualizzazione delle foto e dei video di WhatsApp nella galleria di una singola discussione o gruppo
      Anche in questo caso la procedura è semplicissima, basta:
      aprire l’app WhatsApp sullo smartphone, premere quindi sulla chat individuale o sul gruppo di cui non volete vedere i media nella vostra galleria e premere in alto a destra sull’icona con tre puntini che apre il menù, fare un tap sulla voce “Mostra contatto” e poi su “Info gruppo“, infine premere su “Visibilità dei media” e nella finestra di dialogo che si apre selezionare “No”.
      Bloccare lo scaricamento dei file multimediali di WhatsApp
      Se volete impedire che contatti particolarmente espansivi, o gruppi, vi riempiano lo smartphone di file indesiderati, potete seguire le indicazioni seguenti.
      Potete bloccare il salvataggio automatico dei media, così che possiate essere voi a scegliere quali volete scaricare e risparmiare spazio sul vostro smartphone.

       
      Ecco come disattivare il download automatico su WhatsApp:
      aprire WhatsApp, premere sui tre puntini in alto a destra per aprire il menù e andare in “Impostazioni“, premere sulla voce “Utilizzo dati e archiviazione“, nella sezione “Download automatico media” si può scegliere come l’app deve comportarsi verso i file multimediali in ogni situazione;
      premendo sul “Quando utilizzi la rete mobile” si potrà scegliere quali media verranno scaricati (foto, video, documento o audio), analogamente si potrà fare con le altre due opzioni dedicate a quando si è sotto WiFi e quando si è in Roaming.

    • Come sorvegliare un iPhone attraverso app Prey

      Se vuoi sorvegliare un iPhone e desideri un’alternativa leggermente più complessa di Dov’è, puoi valutare l’utilizzo di Prey, un’applicazione antifurto che consente di effettuare il monitoraggio continuo della posizione di un iPhone, anche report automatici.
      L’app di Prey può essere usata gratuitamente per monitorare la posizione di massimo 3 dispositivi; per bypassare questo limite e attivare anche la ricezione di report automatici frequenti (nella versione gratuita, questi possono essere generati ogni 10 o 20 minuti), è necessario sottoscrivere un piano a pagamento, al prezzo di partenza di 5$/mese.
      Ad ogni modo, per poter utilizzare Prey, prendi l’iPhone da controllare e installa sullo stesso l’app in questione, scaricandola dall’App Store. A download ultimato, avvia il software, fai tap sulla voce Start e registra un account sulla piattaforma, compilando il modulo che ti viene proposto, nel quale devi indicare il tuo nome, l’indirizzo email e una password per effettuare l’accesso.
      Successivamente, apponi il segno di spunta accanto alle voci I confirm that I am over 16 years old e I have read and accept the terms & conditions and the privacy policy e tocca i pulsanti Register e Send, per creare il nuovo profilo. Provvedi dunque a confermare la validità dell’indirizzo email, aprendo la relativa casella di posta elettronica e seguendo il link allegato al messaggio ricevuto da Prey.
      Effettuata la verifica dell’email, fai tap sui bottoni Done e OK e rispondi affermativamente ai messaggi d’avviso che ti vengono proposti. Ripeti l’operazione per cinque volte consecutive.

      Se utilizzi iOS 13, devi inoltre “correggere” le impostazioni di localizzazione e far sì che Prey possa sempre accedere al relativo servizio, e non soltanto quando l’app è aperta: recati dunque nel menu Impostazioni > Privacy > Servizi di localizzazione di iOS, individua la voce relativa a Prey e apponi il segno di spunta accanto alla voce Sempre.
      Una volta ultimata la fase di configurazione, puoi monitorare la posizione del dispositivo mediante il sito Internet del servizio: collegati dunque a questa pagina Web, effettua l’accesso utilizzando l’indirizzo email e la password impostate in precedenza e seleziona il nome del dispositivo configurato poc’anzi, in modo da visualizzarne la posizione sulla mappa.
      Se lo desideri, puoi utilizzare le voci visualizzate sul pannello laterale per effettuare operazioni aggiuntive: Sound alarm per far squillare il telefono; Send message per inviare un messaggio; Toggle camouflage per nascondere l’icona dalla schermata Home di iOS; Retrieve files (solo account Pro) per visualizzare la lista dei file del dispositivo; Wipe files (solo Pro) per reinizializzare il device da remoto; Lock device, per bloccare l’iPhone da remoto e, infine, Clear passcode, per eliminare il codice di blocco.
      Tieni presente che, per poter utilizzare le ultime tre funzionalità, devi aver necessariamente autorizzato l’app ad agire su iOS, impostando un profilo di amministrazione personalizzato. Se ti interessa agire in tal senso, clicca sulla voce di tuo interesse e, avendo sotto mano il device da controllare, segui le istruzioni visualizzate a schermo.
       

    • Come controllare un iPhone a distanza gratis con Qustodio

      Se hai bisogno di controllare un iPhone a distanza gratis per monitorare le attività svolte sul dispositivo di un minore, puoi utilizzare Qustodio: un'applicazione dedicata esplicitamente al controllo parentale.
      Nella versione gratuita, Qustodio consente di monitorare soltanto un dispositivo; acquistando un piano in abbonamento, con prezzi a partire da 42,95€/anno, è possibile controllare più dispositivi contemporaneamente e ottenere alcune caratteristiche aggiuntive, tra cui il monitoraggio di chiamate ed SMS. Le funzioni Premium possono essere comunque testate gratuitamente per 3 giorni.
      Inizia con l’iscriverti alla piattaforma utilizzando lo smartphone, il tablet (disponibile per Android, iOS e iPadOS) o il browser da usare per il monitoraggio e segui la procedura più adatta tra quelle che ti propongo di seguito, in base al sistema che hai scelto di usare.
      App per smartphone/tablet – avvia l’applicazione, consenti l’invio delle notifiche e usa il pulsante Sono nuovo su Qustodio per iscriverti alla piattaforma come genitore. Ora, compila il modulo con le informazioni (nome, email e password), fai tap sui pulsanti Dispositivo genitore e OK, visualizza le funzioni di base di Qustodio, e concludi con il pulsante Chiudi tour e premi su Inizia a usare Premium per avviare la trial gratuita delle funzioni Premium.
      Ora premi sul pulsante (+), per configurare un nuovo figlio; inserisci nome, sesso e anno di nascita negli appositi campi e tocca il pulsante Successivo. Per concludere, seleziona la voce iOS dal menu a tendina Seleziona dispositivo usato da [nome]. Sito Web – collegati a questa pagina Internet, clicca sul pulsante Inizia gratis e compila il modulo con le informazioni richieste (nome, email e password).
      Clicca prima sul pulsante Crea account e poi su OK, Andiamo e Crea profilo, in modo da avviare la creazione di un nuovo profilo “figlio”.
      Inserisci i dati di quest’ultimo (nome, sesso e anno di nascita) negli appositi campi, seleziona un avatar da utilizzare per il profilo e premi i pulsanti Salva e continua e Continua.w  
      Finito la creazione del profilo genitore, prendi l’iPhone da controllare, installa l’app di Qustodio e avviala. Alla schermata iniziale, scegli la voce Ho un account genitore, immetti l’email e la password scelte in precedenza e fai tap su Accedi.
      Ora tocca il riquadro Dispositivo bambino – proteggi questo dispositivo, fai tap sul nome del figlio configurato in precedenza, specifica il nome da assegnare al telefono e fai tap sulla voce Successivo.
      Arrivato fino a qui tocca il pulsante Concedi, sfiora la voce Consenti sempre per far sì che l’app possa accedere ai servizi di localizzazione, tocca il pulsante Successivo e fai tap sui bottoni Installa profilo iOS e Chiudi, per installare il profilo di configurazione personalizzato.
      Qualora non dovessi visualizzare l’opzione Consenti sempre in fase di richiesta dei permessi d’accesso ai servizi di localizzazione: chiudi l’app, recati nel menu Impostazioni > Privacy > Servizi di localizzazione di iOS, tocca l’opzione relativa a Qustodio e apponi il segno di spunta accanto alla voce Sempre. Ora, avvia Qustodio e procedi con l’installazione del profilo iOS.
      Non ci resta che attivare il profilo: nella schermata Home del dispositivo, apri le Impostazioni di iOS e tocca la voce Profilo scaricato, che dovrebbe comparire in cima. Se non la vedi, vai su Generale > Gestione profili e dispositivo.
      Per concludere, il pulsante Installa in alto a destra, inserisci il codice d’accesso dell’iPhone e concludi la configurazione del profilo toccando i pulsanti Installa, Autorizza e Fine.
      A partire da questo momento, puoi controllare lo stato e le attività del dispositivo di tuo figlio: avvia l’app configurata nel dispositivo di controllo, oppure sul sito Web di Qustodio e, dopo aver effettuato l’accesso con il tuo profilo genitore, seleziona il nome di tuo figlio e utilizza le schede e i menu per controllarne attività (Sommario) e posizione (Timeline). Se lo ritieni opportuno, puoi inoltre imporre delle limitazioni d’utilizzo sul device controllato (Regole).  

    • Impostazioni Preliminari

      Sorvegliare un iPhone, ecco qualche informazione in più sulle operazioni preliminari da effettuare sul dispositivo in questione, in modo che il tutto proceda senza intoppi.
      Lo strumento Dov'è, consente di rintracciare i dispositivi Apple in qualsiasi momento (acceso e connesso a Internet), abbinato a un account iCloud di cui conosci la password.
      Nelle Impostazioni di iOS, l'icona d’ingranaggio nella schermata Home, e verifica che sia presente il tuo nome (o il nome del proprietario dell’account Apple di cui conosci le credenziali). Altrimenti sulla voce Effettua il login su iPhone ed inserisci i dati completi di username e password.
      Se non hai ancora un Apple ID, puoi crearne uno segui questa guida su come creare un account iCloud, se hai problemi leggi attentamente il tutorial su come cambiare ID Apple sull’iPhone,  oppure scrivi nel Forum cosi possiamo aiutarti.
      La funzione Trova il mio iPhone deve essere attiva sull'iphone: Impostazioni, tuo nome, poi Dov'è e Trova il mio iPhone e sposta su ON le voci Trova il mio iPhone e Abilita ricerca offline. Ti consente di procedere con la localizzazione anche quando lo smartphone non fosse connesso a Internet, utilizzando il GPS integrato.
      Attiva anche l’opzione Invia ultima posizione, così puoi ritrovare lo smartphone se fosse spento grazie alle ultime cordinazioni gps.
      Infine nella la schermata iniziale delle Impostazioni di iOS, entra nelle sezioni Privacy e Servizi di localizzazione e attiva la voce Localizzazione su ON.
      Accedere senza autorizzazione alla posizione o alle attività riguardanti dispositivi non di tua proprietà rappresenta una violazione della privacy e potrebbe metterti in guai seri.
      Come spiare un iPhone gratis tramite il sito iCloud

      Per spiare un iPhone senza installare programmi e gratis, con la posizione in tempo reale, basta utilizzare la funzione Dov’è di iOS.
      Dov’è su tutti i dispositivi a marchio Apple, in caso di blocco, furto o smarrimento, tra cui la localizzazione e il ripristino da remoto.
      Aaccessibile tramite qualsiasi browser per smartphone, tablet e computer, sfruttando iCloud, oppure utilizzando app installata su iOS e iPadOS.
      l’iPhone deve essere acceso e correttamente connesso al GPS, meglio ancora se collegato a Internet; altrimenti verrà fornita una posizione approssimativa, basata sull'ultima posizione.
      Apri il browser che usi solitamente per collegarti a Internet (Safari, Chrome o Firefox), apri il sito Web di iCloud e, inserisci il nome utente e la password dell’ID Apple configurato sullo smartphone (se non li ricordi più, puoi recuperarli).
      Usa il bottone Trova iPhone, vedi comparire su schermo una mappa, con la lista dei dispositivi abbinati all’ID Apple.
      Seleziona il nome dell’iPhone che ti interessa (se sei dal pc, devi prima cliccare sulla voce Tutti i dispositivi) e attendi che il telefono venga localizzato sulla mappa in pochi secondi.
      Puoi inoltre vedere se lo smartphone è online (la posizione mostrata è quella corrente) oppure offline (la posizione mostrata è quella del GPS, oppure quella relativa all’ultima registrazione effettuata), ed effettuare alcune operazioni: far suonare il dispositivo, impostarlo in modalità smarrito (bloccandolo con la password dell’ID Apple), oppure inizializzarlo a distanza.

    • Questo tutorial spiegherà i primi passaggi di base che devi seguire dopo aver installato un sistema CentOS 7 minimale senza ambiente grafico per ottenere informazioni sul sistema installato, l'hardware sopra il quale esegue il sistema e configurare altre attività di sistema specifiche, come reti, privilegi di root, software, servizi e altro.
      Requisiti
      Installazione minima di CentOS 7
      Importante: gli utenti di RHEL 7 possono seguire questo articolo per eseguire una configurazione iniziale del server su RHEL 7.
      1. Aggiorna il sistema CentOS 7
      Il primo passo che devi eseguire su un nuovo sistema CentOS installato è assicurarti che il sistema sia aggiornato con le ultime patch di sicurezza del kernel e del sistema, repository software e pacchetti.
      Per aggiornare completamente un sistema CentOS 7, emettere i seguenti comandi con i privilegi di root.
      yum check-update yum upgrade Al termine del processo di aggiornamento, al fine di liberare spazio su disco è possibile rimuovere tutti i pacchetti scaricati che erano utilizzati nel processo di aggiornamento insieme a tutte le informazioni sui repository memorizzati eseguendo il comando seguente.
      yum clean all 2. Installa Utilità di sistema su CentOS 7
      I seguenti pacchetti di utilità possono rivelarsi utili per l'amministrazione del sistema giorno per giorno: nano (editor di testo per sostituire l'editor vi), wget, curl (utilità utilizzate principalmente per il download di pacchetti sulla rete) net-tools, lsof (utilità per la gestione rete locale) e bash-completion (completamento automatico della riga di comando).
      Installali tutti in un colpo solo eseguendo il comando seguente.
      yum install nano wget curl net-tools lsof bash-completion 3. Impostazione della rete in CentOS 7
      CentOS 7 ha una vasta gamma di strumenti che possono essere utilizzati per configurare e gestire la rete, dalla modifica manuale del file di configurazione di rete all'utilizzo di comandi come ip, ifconfig, nmtui, nmcli o route.
      L'utilità più semplice che un principiante può utilizzare per gestire e modificare le configurazioni di rete è la riga di comando grafica nmtui.
      Per modificare il nome host del sistema tramite l'utilità nmtui, eseguire il comando nmtui-hostname, impostare il nome host della macchina e premere OK per terminare, come illustrato nella schermata seguente.
      nmtui-hostname Per manipolare un'interfaccia di rete, eseguire il comando nmtui-edit, scegliere l'interfaccia che si desidera modificare e selezionare EDIT dal menu a destra, come mostrato nella schermata seguente.
      nmtui-edit Una volta entrati nell'interfaccia grafica fornita dall'utility nmtui, puoi configurare le impostazioni IP dell'interfaccia di rete come illustrato nella schermata seguente. Al termine, accedere a OK utilizzando il tasto [tab] per salvare la configurazione ed uscire.
       

      Per applicare la nuova configurazione dell'interfaccia di rete, eseguire il comando nmtui-connect, selezionare l'interfaccia che si desidera gestire e premere su Disattiva / Attiva opzione per disattivare e aumentare l'interfaccia con le impostazioni IP, come mostrato nelle schermate seguenti.
      nmtui-connect Per visualizzare le impostazioni dell'interfaccia di rete, è possibile controllare il contenuto del file di interfaccia oppure è possibile emettere i comandi seguenti.
      ifconfig enp0s3 ip a ping -c2 google.com Altre utilità utili che possono essere utilizzate per gestire la velocità, lo stato dei collegamenti o ottenere informazioni sulle interfacce di rete della macchina sono ethtool e mii-tool.
      ethtool enp0s3 mii-tool enp0s3 Un aspetto importante della rete della tua macchina è elencare tutte le prese di rete aperte per vedere quali programmi sono in ascolto su quali porte e qual è lo stato delle connessioni di rete stabilite.
      Per elencare tutti i server che hanno aperto socket TCP o UDP in stato di ascolto, immettere i seguenti comandi. Tuttavia, il server UDP non elenca alcuno stato socket a causa del fatto che UDP è un protocollo senza connessione che invia solo pacchetti sulla rete e non stabilisce connessioni.
      netstat -tulpn ss -tulpn lsof -i4 -6 4. Gestire i servizi in CentOS 7
      CentOS 7 gestisce i daemon o il servizio tramite l'utility systemctl. Per elencare tutti gli stati dei servizi, emettere il seguente comando.
      systemctl list-units Per verificare se un demone o un servizio è abilitato all'avvio automatico all'avvio del sistema, emettere il seguente comando.
      systemctl list-unit-files -t service Per elencare i vecchi servizi SysV presenti nel tuo sistema e disabilitarli, emetti i seguenti comandi chkconfig.
      chkconfig --list chkconfig service_name off 5. Disabilitare i servizi indesiderati in CentOS 7
      Dopo l'installazione di CentOS 7, si consiglia di elencare quali servizi sono in esecuzione nel sistema eseguendo i comandi precedenti e di disabilitarli e rimuoverli per ridurre i vettori di attacchi al proprio sistema.
      Ad esempio, il demone Postfix è installato e abilitato per impostazione predefinita in CentOS 7. Se il tuo sistema non richiede l'esecuzione di un server di posta, è meglio interrompere, disabilitare e rimuovere il servizio Postfix emettendo i comandi seguenti.
      systemctl stop postfix systemctl disable postfix yum remove postfix Oltre ai comandi netstat, ss, lsof o systemctl, puoi anche eseguire comandi ps, top o pstree per scoprire e identificare quali servizi indesiderati sono in esecuzione nel tuo sistema e disabilitarli o rimuoverli.
      Per impostazione predefinita, l'utilità pstree non è installata in CentOS 7. Per installarla, eseguire il comando seguente.
      yum install psmisc pstree -p 6. Abilita Firewall in CentOs 7
      Firewalld è la principale utility firewall con cui interagisce per gestire le regole di iptables.
      Per abilitare, avviare e verificare il firewall in CentOS 7, eseguire i seguenti comandi.
      systemctl enable firewalld systemctl start firewalld systemctl status firewalld Per aprire un servizio specifico alle connessioni in entrata, verificare innanzitutto se l'applicazione è già presente nelle regole firewalld, quindi aggiungere la regola per il servizio, come mostrato nell'esempio seguente che consente le connessioni in ingresso SSH. Utilizzare l'opzione --permanent per aggiungere la regola in modo permanente.
      firewall-cmd --add-service=[tab] #List services firewall-cmd --add-service=ssh firewall-cmd --add-service=ssh --permanent Nel caso in cui il servizio sia già definito nelle regole di firewalld, è possibile aggiungere manualmente la porta del servizio, come mostrato nell'esempio seguente.
      firewall-cmd --add-port=22/tcp --permanent firewall-cmd --reload #Apply the rule on-fly 7. Abilita le autorizzazioni Sudo per gli account utente
      Per concedere le autorizzazioni di root per un utente normale, creare innanzitutto l'utente immettendo il comando adduser, impostare la password per l'utente e concedere le autorizzazioni di root all'utente eseguendo il comando seguente che aggiunge il nuovo utente al gruppo di ruote amministrative.
      adduser finalalpha passwd finalalpha usermod -aG wheel finalalpha Per verificare se il nuovo utente ha i privilegi di root, accedi al sistema con le credenziali dell'utente ed esegui il comando yum con le autorizzazioni sudo, come mostrato nel seguente estratto.
      su - finalalpha sudo yum update Configurare l'autenticazione con chiave pubblica SSH su CentOS 7
      Per proteggere SSH il tuo server e impostare l'autenticazione con chiave pubblica per aumentare la sicurezza del tuo server con una chiave SSH privata per accedere, prima genera una coppia di chiavi SSH con un comando seguente.
      Non inserire una passphrase nel caso in cui desideri automatizzare la gestione del server tramite SSH.
      ssh-keygen -t RSA Dopo aver generato le coppie di chiavi SSH, copiare la chiave sul server a cui si desidera connettersi emettendo il comando seguente. Inizialmente, inserisci la password dell'utente SSH remoto per copiare la chiave pubblica.
      ssh-copy-id [email protected]_SERVER_IP Dopo che la chiave pubblica SSH è stata copiata sul server remoto, accedere al server SSH remoto con il comando seguente.
      ssh [email protected]_SERVER_IP Infine, per proteggere il server SSH, assicurati di non consentire l'accesso SSH remoto all'account root aprendo il file di configurazione SSH / etc / ssh / sshd_config con l'editor di testo come root e modificalo da Sì a No.
      PermitRootLogin no Per applicare l'impostazione è necessario riavviare il servizio SSH in modo che utilizzi la nuova configurazione.
      systemctl restart sshd È tutto! Queste sono solo alcune impostazioni e comandi di base che ogni amministratore di sistema deve conoscere e applicare su un nuovo sistema CentOS installato o per eseguire attività quotidiane sul sistema.

    • In questo tutorial, daremo uno sguardo ad alcune importanti attività da eseguire nel server per la configurazione iniziale del server e la protezione avanzata del server. Questi passaggi aumenteranno la sicurezza del server e l'usabilità. Eseguiremo una serie di attività come la creazione di un nuovo utente sudo, l'aggiornamento dei pacchetti, l'impostazione del fuso orario e la protezione del server SSH, ecc.
      Step 1: Log in via SSH
      Quando viene creato il server, nome utente, password e indirizzo IP predefiniti. Per il primo accesso, è necessario utilizzare tali credenziali per accedere al server. Se non hai familiarità con la modalità di connessione, consulta l'articolo "Come connettersi al server con SSH".
      Step 2: Change Logged in User Password
      Al primo accesso, è molto importante cambiare la password dell'utente corrente. Utilizzare il seguente comando per lo stesso.
      passwd Ti verrà chiesto di fornire la password esistente a meno che tu non abbia effettuato l'accesso come utente root.
      Step 3: Create a New Sudo User
      Se si è effettuato l'accesso come utente root, si consiglia di creare un utente sudo. Un utente Sudo è un utente con privilegi di superutente. In termini semplici, questo utente può eseguire comandi e attività amministrative come utente root.
      Per creare un nuovo utente, eseguire il comando seguente. Puoi sostituire il nome utente di esempio happysnel con qualsiasi cosa ti piaccia.
      sudo adduser NOMEUTENTE Nota: è possibile omettere l'utilizzo del comando sudo se si è effettuato l'accesso come utente root.
      Impostare una password per l'utente appena creato eseguendo il comando.
      sudo passwd NOMEUTENTE Aggiungi il tuo nuovo utente creato al gruppo wheel. Gli utenti nel gruppo wheel sono utenti sudo in CentOS 7.
      sudo usermod -aG wheel NOMEUTENTE Step 4: Logging in as the Newly Created User
      Esci dalla sessione terminale corrente eseguendo il comando di logout e accedi di nuovo usando ssh come nuovo utente.
      ssh [email protected] Step 5: Disable Root Login via SSH
      Trova l'impostazione corrente per l'accesso root tramite SSH eseguendo il comando seguente.
      sudo cat /etc/ssh/sshd_config | grep PermitRootLogin È possibile che venga visualizzato il seguente output.
      PermitRootLogin without-password # the setting of "PermitRootLogin without-password". Come nell'output sopra, possiamo vedere che, PermitRootLogin è impostato su senza password. Significa che l'autenticazione con password è disabilitata, tuttavia è abilitata l'autenticazione con chiave pubblica. Il che va bene nella maggior parte dei casi. Assicurarsi che non dovrebbe essere commentato o non dovrebbe essere impostato su Sì.
      Per disabilitare completamente l'accesso root, modificare il file eseguendo il comando seguente.
      sudo nano /etc/ssh/sshd_config E cambia la linea come segue.
      PermitRootLogin no Salvare il file e riavviare il server SSH eseguendo il comando seguente.
      sudo systemctl restart sshd Ora, se proverai ad accedere come utente root, non ti lascerà entrare.
      Step 6: Update Your Server
      È importante installare le ultime patch di sicurezza e gli aggiornamenti sul server. Eseguire il comando seguente per lo stesso.
      sudo yum -y update Nota: se viene visualizzato un messaggio che indica che è disponibile un pacchetto o file di aggiornamento, ma la versione installata viene modificata. Scegliere keep the local version currently installed 
      Step 7: Setting timezone
      You may want your server in the same timezone as you. Run the following command to get a list of available timezones.
      timedatectl list-timezones L'elenco dei fusi orari disponibili è disponibile anche qui.
      Una volta identificato il tuo fuso orario, impostalo utilizzando il seguente comando.
      sudo timedatectl set-timezone Europe/Amsterdam È possibile confermare il fuso orario eseguendo il comando seguente.
      timedatectl Step 8: Set Hostname
      Controlla il tuo nome host esistente eseguendo il comando seguente.
      hostnamectl Dovresti vedere un output simile.
      Static hostname: vps.snelexample.site Icon name: computer-vm Chassis: vm Machine ID: Boot ID: Virtualization: kvm Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-957.1.3.el7.x86_64 Architecture: x86-64 Per impostare un nome host, eseguire il comando seguente.
      sudo hostnamectl set-hostname host.snelexample.site Sostituisci host.snelexample.site con il tuo vero nome host. Preferibilmente, dovrebbe essere un nome di dominio completo (nome di dominio completo). Ma, se non si è sicuri di voler aggiungere un nome di dominio completo, funziona anche un'etichetta per identificare il server.
      Per risolvere il nome host nel tuo server locale, dovrai aggiungerlo al file / etc / hosts. Modifica il file hosts eseguendo il seguente comando.
      sudo nano /etc/hosts Se nano editor non è installato sul tuo server, installalo eseguendo il comando.
      sudo yum -y install nano Aggiungi il tuo nome host alla fine della riga che inizia con 127.0.0.1. Per esempio.
      127.0.0.1 localhost host.snelexample.site Step 9: Configure a Firewall
      Nella maggior parte dei casi, CentOS 7 viene fornito con Firewall abilitato per impostazione predefinita. È possibile verificare lo stato del firewall eseguendo il comando seguente.
      sudo firewall-cmd --state Dovrebbe essere running  se il firewall è già in esecuzione.
      Step 10: SSH Port Change (Optional)
      I bot dannosi su Internet puntano continuamente alla porta SSH predefinita 22. Puoi cambiarla in qualsiasi altra porta in modo che il tuo server non sia vittima di continui attacchi di robot sulla porta 22. Per cambiare la porta SSH, apri di nuovo il file di configurazione SSH eseguendo il comando seguente.
      sudo nano /etc/ssh/sshd_config Trova la linea che dice
      #Port 22 Rimuovi il commento e modificalo in qualsiasi porta che ti piace tra 1024 e 65535. Salvare il file ed uscire dall'editor.
      Ora, informa SELinux della porta SSH eseguendo il comando seguente.
      sudo yum -y install policycoreutils-python-utils sudo semanage port -a -t ssh_port_t -p tcp 2200 Aprire la porta 2200 dal firewall eseguendo i comandi.
      sudo firewall-cmd --permanent --add-port=2200/tcp sudo firewall-cmd --reload Ora, riavvia il server SSH eseguendo il comando seguente.
      sudo systemctl restart sshd Ora, se proverai ad accedere da un altro terminale senza specificare una porta, non ti lascerà entrare. Modifica il comando SSH per accedere per includere il numero di porta.
      ssh -p 2200 [email protected] Step 11: Reboot
      ora che abbiamo completato l'aggiornamento dei pacchetti e la configurazione del server. Riavvia il server in modo che, in caso di modifiche in sospeso, venga applicato.
      sudo reboot In questo tutorial, abbiamo imparato come impostare un utente sudo su istanze CentOS 7 appena create. Abbiamo configurato nome host, fuso orario e aggiornato i pacchetti. Abbiamo anche visto come impostare il fuso orario e il nome host, rafforzare il server SSH e aggiornare i pacchetti.

    • BIND può essere configurato come master o slave per servire la richiesta DNS per ogni zona. Quando BIND è configurato come slave, ottiene la copia dei dati di zona dal server master utilizzando il metodo di trasferimento di zona.
      Nel post precedente, avevamo configurato il server DNS su CentOS 7 che fungerà da sorgente per il server slave.
      Nome Dominio: finalalpha.net
      primary.finalalpha.net          192.168.1.10      Master DNS Server
      secondary.finalalpha.net     192.168.1.20      Slave DNS Server
      In questo, abbiamo due server chiamati primario e secondario.
      Il primario è già stato configurato come master per il dominio finalalpha.net.

      Ora configureremo secondario come server DNS slave per finalalpha.net.
      On Master Server
      Iniziamo ad inserire il Name server nel nostro etc/resolv.conf
      nameserver 192.168.1.10 Configurare BIND sul server principale per consentire il trasferimento di zona su un server secondario, modificare il file /etc/named.conf in primary.finalalpha.net.
      vi /etc/named.conf Aggiungi la seguente voce nel file. I server menzionati in allow-transfer saranno in grado di trasferire zone dal server master.
      options { allow-transfer { 192.168.1.20; }; also-notify { 192.168.1.20; }; } Ricordate di cambiare i permessi alla directory /var/named e a tutte le sottocartelle e file
      chmod 777 -Rvf /var/named/ Aggiungi le informazioni del tuo server DNS secondario nel file di ricerca diretta su primary.finalalpha.net.
      vi /var/named/finalalpha.net.db I record saranno come di seguito.
      @ IN SOA primary.finalalpha.net. www.finalalpha.net. ( 1002 ;Serial 3H ;Refresh 15M ;Retry 1W ;Expire 1D ;Minimum TTL ) ;Name Server Information @ IN NS primary.finalalpha.net. ;Secondary Name server @ IN NS secondary.finalalpha.net. ;IP address of Primary Name Server primary IN A 192.168.1.10 ;IP address of Secondary Name Server secondary IN A 192.168.1.20 ;Mail exchanger itzgeek.local. IN MX 10 mail.finalalpha.net. ;A - Record HostName To IP Address www IN A 192.168.1.100 mail IN A 192.168.1.150 ;CNAME record ftp IN CNAME www.finalalpha.net. Riavvia il servizio BIND. Aggiungi una regola di autorizzazione nel firewall per consentire le zone di trasferimento dal server principale.
      systemctl restart named firewall-cmd --permanent --add-port=53/tcp firewall-cmd --reload On Slave Server
      È il momento di aggiungere una dichiarazione della zona slave sul server secondario, assicurarsi di installare i seguenti pacchetti sul server secondario.
      yum -y install bind bind-utils Aggiungi il nameserver secondario su etc/resolv.conf
      nameserver 192.168.1.20 Modifica il file /etc/named.conf. Commenta la seguente riga per consentire a BIND di ascoltare su tutte le interfacce.
      // listen-on port 53 { 127.0.0.1; }; // listen-on-v6 port 53 { ::1; }; Aggiungi la tua rete nella seguente riga. Ho aggiunto 192.168.1.0/24 per consentire ai client della rete 192.168.1.0/24 di eseguire query sul DNS per il nome della traduzione IP.
      options { allow-query { localhost; 192.168.1.0/24; }; } Aggiungi la zona slave come di seguito.
      zone "itzgeek.local" IN { type slave; masters { 192.168.1.10; }; file "slaves/finalalpha.net.db"; }; zone "1.168.192.in-addr.arpa" IN { type slave; masters { 192.168.1.10; }; file "slaves/1.168.192.db"; }; finalalpha.net – Domain name
      slave – Secondary DNS
      finalalpha.net.db & 1.168.192.db – Slave forward & Reverse lookup file
      Riavviare il servizio BIND su secondario.finalalpha.net Aggiungi una regola di autorizzazione nel firewall per consentire ai client di connettersi al server DNS per la risoluzione dei nomi.
      firewall-cmd --permanent --add-port=53/udp firewall-cmd --reload Verifica la ricerca di www.finalalpha.net utilizzando secondario.finalalpha.net (192.168.1.20)
      dig @192.168.1.20 www.finalalpha.net Output
      ; <<>> DiG 9.9.4-RedHat-9.9.4-74.el7_6.1 <<>> @192.168.1.20 www.finalalpha.net ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5314 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.finalalpha.net. IN A ;; ANSWER SECTION: www.finalalpha.net. 604800 IN A 192.168.1.100 ;; AUTHORITY SECTION: finalalpha.net. 604800 IN NS secondary.finalalpha.net. finalalpha.net. 604800 IN NS primary.finalalpha.net. ;; ADDITIONAL SECTION: primary.finalalpha.net. 604800 IN A 192.168.1.10 secondary.finalalpha.net. 604800 IN A 192.168.1.20 ;; Query time: 0 msec ;; SERVER: 192.168.1.20#53(192.168.1.20) ;; WHEN: Wed Jul 17 21:53:45 IST 2019 ;; MSG SIZE rcvd: 140 Record Update
      Ogni volta che si modifica un record DNS sul server principale, non dimenticare di modificare il numero seriale nel file della zona ed eseguire il comando seguente sul server principale per ricaricare la zona.

      Cambia finalalpha.net e 1.168.192.in-addr.arpa con i nomi delle tue zone.
      ### Forward Zone ### rndc reload finalalpha.net ### Reverse Zone ### rndc reload 1.168.192.in-addr.arpa  

    • Il Domain Name System (DNS) è un sistema di denominazione distribuito gerarchico per computer, servizi o qualsiasi risorsa connessa a Internet o a una rete privata. Associa varie informazioni ai nomi di dominio assegnati a ciascuna delle entità partecipanti.
      Soprattutto, traduce i nomi di dominio significativi per l'uomo negli identificatori numerici associati alle apparecchiature di rete allo scopo di individuare e indirizzare questi dispositivi in tutto il mondo.
      Questa guida ti aiuterà a configurare il server DNS su CentOS 7 / RHEL 7. Server Name: finalalpha.net
      IP Address: 192.168.0.10
      Install DNS (BIND) BIND sta per Berkeley Internet Name Domain, un software che consente di eseguire la conversione da nome a IP.   yum -y install bind bind-utils Configure DNS (BIND)
      Per impostazione predefinita, BIND è in ascolto sull'host locale. Quindi, configureremo il server DNS per l'ascolto sull'indirizzo IP del sistema per consentire ai client di raggiungere il server DNS per la risoluzione dei nomi di dominio.
      vi /etc/named.conf Configura BIND per l'ascolto su tutti gli indirizzi IP.
      // listen-on port 53 { 127.0.0.1; }; // listen-on-v6 port 53 { ::1; }; Configurare BIND per ascoltare un determinato indirizzo IP.
      listen-on port 53 { 127.0.0.1; 192.168.0.10; }; Aggiungi la tua rete nella seguente riga. Questa impostazione consentirà ai client della rete menzionata di eseguire query sul DNS per la traduzione da nome a ip.
      Ho aggiunto 192.168.0.0/24 per questa demo.
      allow-query { localhost; 192.168.0.0/24; }; Create Zones
      vi /etc/named.conf Forward Zone
      La seguente zona è la voce della zona diretta per il dominio finalalpha.net.
      zone "finalalpha.net" IN { type master; file "/var/named/finalalpha.net.db"; allow-update { none; }; }; itzgeek.local – Domain name
      master – Primary DNS
      finalalpha.net.db – Forward lookup file
      allow-update – Since this is the primary DNS, it should be none
      Reverse Zone
      La seguente zona è la voce della zona inversa.
      zone "0.168.192.in-addr.arpa" IN { type master; file "/var/named/192.168.0.db"; allow-update { none; }; }; 0.168.192.in-addr.arpa – Reverse lookup name
      master – Primary DNS
      192.168.0.db – Reverse lookup file
      allow-update – Since this is the primary DNS, it should be none
      Create Zone Files
      Per impostazione predefinita, i file di ricerca della zona sono collocati nella directory /var/named. Creare un file di zona chiamato finalalpha.net.db per la ricerca diretta nella directory /var/named. Tutti i nomi di dominio dovrebbero terminare con un punto (.).
      vi /var/named/finalalpha.net.db Esistono alcune parole chiave speciali per i file di zona
      A – A record
      NS – Name Server
      MX – Mail for Exchange
      CNAME – Canonical Name
      @ IN SOA ns1.finalalpha.net. www.finalalpha.net. ( 1001 ;Serial 3H ;Refresh 15M ;Retry 1W ;Expire 1D ;Minimum TTL ) ;Name Server Information @ IN NS ns1.finalalpha.net. ;IP address of Name Server ns1 IN A 192.168.0.10 ;Mail exchanger itzgeek.local. IN MX 10 mail.finalalpha.net. ;A - Record HostName To IP Address www IN A 192.168.0.100 mail IN A 192.168.0.150 ;CNAME record ftp IN CNAME www.finalalpha.net. Ogni volta che aggiorni il file di ricerca della zona, devi cambiare / incrementare il seriale come 1002; Serial.
      Creare un file di zona chiamato 192.168.0.db per la zona inversa nella directory / var / named.
      vi /var/named/192.168.0.db Crea un puntatore inverso per le voci della zona diretta che abbiamo creato in precedenza.
      PTR – Pointer
      SOA – Start of Authority
      @ IN SOA ns1.finalalpha.net. www.finalalpha.net. ( 1001 ;Serial 3H ;Refresh 15M ;Retry 1W ;Expire 1D ;Minimum TTL ) ;Name Server Information @ IN NS ns1.finalalpha.net. ;Reverse lookup for Name Server 10 IN PTR ns1.finalalpha.net. ;PTR Record IP address to HostName 100 IN PTR www.finalalpha.net. 150 IN PTR mail.finalalpha.net. Ogni volta che aggiorni il file di ricerca della zona, devi cambiare / incrementare il seriale come 1002; Serial.
      Dopo aver creato i file di zona, riavviare il servizio di bind. Abilitalo all'avvio del sistema.
      systemctl restart named systemctl enable named Firewall
      Aggiungi una regola di autorizzazione nel firewall per consentire ai client di connettersi al server DNS per la risoluzione dei nomi.
      firewall-cmd --permanent --add-port=53/udp firewall-cmd --reload Verify Zones
      Visita qualsiasi macchina client e aggiungi un indirizzo IP del server DNS in /etc/resolv.conf.
      nameserver 192.168.0.10 Se Network Manager gestisce la rete, inserire la seguente voce nel file /etc/sysconfig/network-scripts/ifcfg-eXX
      DNS1=192.168.0.10 Riavvia il servizio di rete.
      systemctl restart NetworkManager Utilizzare il comando seguente per verificare la ricerca diretta.
      dig www.finalalpha.net Output: il server DNS dovrebbe fornire 192.168.0.100 come ip per www.finalalpha.net.
      ; <<>> DiG 9.9.4-RedHat-9.9.4-74.el7_6.1 <<>> www.itzgeek.local ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35563 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.itzgeek.local. IN A ;; ANSWER SECTION: www.itzgeek.local. 86400 IN A 192.168.0.100 ;; AUTHORITY SECTION: itzgeek.local. 86400 IN NS primary.itzgeek.local. ;; ADDITIONAL SECTION: ns1.itzgeek.local. 86400 IN A 192.168.0.10 ;; Query time: 0 msec ;; SERVER: 192.168.0.10#53(192.168.0.10) ;; WHEN: Wed Jul 03 02:00:40 EDT 2019 ;; MSG SIZE rcvd: 100 Conferma la ricerca inversa.
      dig -x 192.168.0.100 Output: il server DNS fornisce www.itzgeek.local come nome per 192.168.0.100.
      ; <<>> DiG 9.9.4-RedHat-9.9.4-74.el7_6.1 <<>> -x 192.168.0.100 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4807 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;100.0.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 100.0.168.192.in-addr.arpa. 86400 IN PTR www.itzgeek.local. ;; AUTHORITY SECTION: 0.168.192.in-addr.arpa. 86400 IN NS ns1.itzgeek.local. ;; ADDITIONAL SECTION: ns1.itzgeek.local. 86400 IN A 192.168.0.10 ;; Query time: 0 msec ;; SERVER: 192.168.0.10#53(192.168.0.10) ;; WHEN: Wed Jul 03 02:02:47 EDT 2019 ;; MSG SIZE rcvd: 124 È ora confermato che le ricerche sia in avanti che indietro stanno funzionando bene.
       

    • Facebook si tinge di nero anche nella versione Desktop, rinnovando allo stesso tempo il suo design. La nuova interfaccia utente è simile a quella lanciata lo scorso anno su dispositivi mobile e include ovviamente il tema scuro.
       

       
      Come attivare il nuovo Facebook con Tema Scuro
      Accessibile via browser per la maggior parte degli utenti, il tema scuro è attivabile manualmente, tuttavia alcuni utenti potrebbero non visualizzarlo, in quanto l’aggiornamento è ancora in rollout come si suol dire.
      Per la prima volta dallo scorso anno Facebook ha attuato importanti modifiche anche nella sua versione Web. L’aggiornamento si concluderà nel corso della primavera, tuttavia se siete fortunati potreste attivare il tema scuro già da oggi.
      Facebook fa sapere che la nuova versione è più semplice, immediata, intuitiva e minimale, in quanto rivede lo spazio a disposizione e la disposizione dei contenuti, i colori ed altro ancora.
      Nel corso dei prossimi mesi l’interfaccia verrà attivata come default a tutti gli utenti. Per provarla in Anteprima vi basterà cliccare su Passa al Nuovo Facebook, situato in basso a destra. Per quanto riguarda invece il Tema Scuro non dovete far altro che cliccare sulla freccia rivolta verso il basso, collocata in alto a destra e poi su Modalità Scura.
      Come anticipato se non è presente la nuova interfaccia o il Tema Scuro non vi resta che attendere, in quanto potrebbero volerci diversi giorni. Su Mobile invece è già disponibile da tempo il Tema Scuro così come la nuova interfaccia, qualora non notiate cambiamenti vi consigliamo di provare la versione Lite del Social Network.
       

    • Informazioni preliminari

      Prima di entrare nel dettaglio della procedura su come disattivare upday, ritengo possa interessarti saperne di più in merito a quest’applicazione.
      Ebbene, devi sapere che upday è un servizio di aggregazione di notizie che solitamente viene preinstallato sui dispositivi Samsung. In parole povere, possiamo dire che si tratta di una sorta di Google News, che però è pensato per integrarsi al meglio con la personalizzazione del produttore sudcoreano.
      Per farti un esempio concreto, spesso upday è integrata in un pannello chiamato Bixby Home, che si può trovare scorrendo da sinistra verso destra nella schermata principale del dispositivo. Qui l’utente può trovare tutte le notizie aggiornate, grazie appunto a upday, e molte altre impostazioni consentite dall’assistente di Samsung.
      Stiamo parlando, dunque, di un’applicazione/servizio che non crea alcun tipo di problema, dato che è preinstallato da Samsung ed è completamente gratuito. Tuttavia, esso non ha icona (non si trova nell’app drawer) e, a volte, può mandare delle notifiche indesiderate, quindi posso comprendere che tu voglia disattivarlo e sono pronto a spiegarti come.

        Come disattivare upday su Samsung

      Dopo averti spiegato di cosa si tratta, direi che è giunta l’ora di passare all’azione e vedere come disattivare upday.
      Spesso gli smartphone Samsung non permettono di disinstallare completamente upday, visto che si tratta di una funzionalità implementata in Bixby Home e non di una vera e propria applicazione. In altri casi, upday è invece un’applicazione di sistema, quindi non può essere rimossa (se non con sistemi avanzati, che però sconsiglio di utilizzare per queste situazioni).
      Se proprio non vuoi più vedere upday, puoi solo disattivarla. Recati quindi nella pagina Bixby Home (quella più a sinistra quando si accende il dispositivo), premi sull’icona dei tre puntini presente in alto a destra e pigia su Schede.
      Dopodiché, seleziona upday e sposta su OFF le opzioni upday NEWS da non perdere, NOTIZIE upday e upday Top Calcio. Vedrai così che, tornando a Bixby Home, tutte le schede relative al servizio di aggregazione delle notizie saranno sparite.
        Se non ti interessa utilizzare la schermata Bixby Home, ovvero quella accessibile mediante uno swipe da sinistra verso destra a partire dalla schermata principale del dispositivo, allora potresti pensare di disabilitare questa funzionalità.

      Per fare questo, effettua un tap prolungato in una zona vuota della home screen del dispositivo ed esegui uno scorrimento da sinistra verso destra. A questo punto, dovresti aver raggiunto la schermata Bixby Home/upday: non ti resta che spostare la levetta presente in alto a destra su OFF e il gioco è fatto.
      Se hai a disposizione uno smartphone in cui upday è un’applicazione di sistema, devi recarti nel menu Impostazioni > Applicazioni > upday (o simili) e premere prima su Disattiva e poi su Disabilita applicazione.
      Ottimo, ora non dovresti più vedere upday e di conseguenza non avere più a che fare con il servizio.

      Come disattivare notifiche upday

      Come dici? Ogni tanto upday ti invia delle notifiche legate alle ultime notizie e vorresti disattivarle? Nessun problema, ti spiego subito come fare. Qui la procedura può cambiare in base al dispositivo in tuo possesso.
      Se disponi di un dispositivo Samsung in cui upday è integrata in Bixby Home, ti basta premere su una delle notizie presenti nella pagina dedicata, andare nella schermata principale di upday, premere sull’icona dei tre puntini che si trova in alto a destra e fare tap sulla voce Il mio profilo presente nel menu che compare.
      Successivamente, pigia su Notifiche e sposta su OFF le levette legate alle opzioni Breaking News, Notifiche personalizzate e Articoli salvati. Perfetto, da questo momento in poi non dovresti più ricevere notifiche da upday.
        Nel caso il tuo dispositivo abbia invece upday come app a sé stante, ti basta recarti nel menu Impostazioni > Applicazioni > upday > AVANZATE > Mostra applicazioni di sistema (o simili) e spostare la levetta legata alle notifiche su OFF.
      Chiaramente, esistono vari modelli di dispositivi Samsung e non posso quindi essere più preciso con le mie indicazioni, ma non dovresti avere troppi problemi a trovare tutte le opzioni.

      Come disinstallare upday

      Se disponi di upday come applicazione a sé stante, probabilmente quest’ultima è stata installata tramite i soliti negozi digitali, ovvero Galaxy Store di Samsung o Play Store di Google, e quindi si può disinstallare senza troppi problemi.
      In questo caso specifico, devi semplicemente tenere premuto sull’icona di upday e selezionare in successione le voci Disinstalla e OK dai menu che compaiono. Potresti inoltre pensare di disinstallare l’applicazione passando per il Galaxy Store o per il Play Store.
      Una volta aperto il negozio di riferimento, solitamente ti basta cercare “upday” al suo interno, pigiare sull’icona dell’app (una piccola “u” bianca su sfondo blu) e selezionare l’opzione Disinstalla. Per maggiori informazioni, ti consiglio di consultare il mio tutorial su come disinstallare upday.

    • Informazioni preliminari

      Prima di spiegarti come avere WhatsApp nero, devo fornirti alcune informazioni preliminari al riguardo. Devi, infatti, sapere che il tema scuro di WhatsApp è stato ufficialmente introdotto nella popolare applicazione di messaggistica istantanea dapprima su Android e poi, nella prima parte del 2020, su iPhone.
      Nello specifico, sui dispositivi aggiornati ad Android 10 (e versioni successive) e sui modelli di iPhone aggiornati a iOS 13 (e versioni successive), il tema scuro si attiva automaticamente, se questo è stato precedentemente attivato nelle impostazioni del dispositivo.
      Per quanto riguarda i dispositivi Android che supportano Android 9 o versioni precedenti, invece, è necessario attivare manualmente il tema scuro su WhatsApp, agendo tramite le impostazioni dell’applicazione e mettendo in atto le operazioni che ti fornirò nel prossimo capitolo.
      Sulle versioni di iOS precedenti a iOS 13, invece, il tema scuro su WhatsApp non è disponibile, in quanto si tratta di una funzionalità strettamente legata all’abilitazione del tema scuro introdotto con iOS 13 e non è possibile agire manualmente tramite le impostazioni dell’app di WhatsApp. Chiaro? Bene, allora passiamo all’azione.

        Come avere WhatsApp nero su Android

      Se desideri attivare il tema scuro su WhatsApp per Android, devi tenere in considerazione quanto spiegato nel capitolo dedicato alle informazioni preliminari.
      Detto ciò, se il tuo smartphone è aggiornato ad Android 10, assicurarti che sia stato attivato il tema scuro nelle impostazioni del dispositivo.
      Per riuscirci, recarti nella sezione Impostazioni del device (l’icona dell’ingranaggio situata nella home screen o nel drawer), vai su Display e pigia sulla dicitura Tema, per attivare la modalità scura.
      La procedura per l’attivazione della modalità scura su Android 10 è leggermente diversa e può variare a seconda del dispositivo in uso. Per esempio, se possiedi un modello di ultima generazione di smartphone Huawei, per effettuare quest’operazione devi recarti nel menu Impostazioni > Batteria e spostare su ON la levetta relativa alla dicitura Colori scuri interfaccia.
      Dopo aver effettuato quest’operazione, avvia WhatsApp e dovresti vedere il tema scuro automaticamente applicato all’interno dell’app.
       
      Sugli smartphone equipaggiati con Android 9, invece, è necessario procedere all’attivazione manuale del tema scuro in WhatsApp. Per riuscire in quest’intento, avvia WhatsApp, pigia sull’icona (…) situata nell’angolo in alto a destra e, nel menu che ti viene mostrato, fai tap sulla voce Impostazioni.
      Adesso, individua e fai tap sulle voci Chat > Tema e, infine, apponi il segno di spunta sull’opzione Scuro, per attivare il tema scuro. Per confermare l’attivazione, premi sul pulsante OK.
      Nel caso in cui dovessi riscontrare dei problemi relativamente all’attivazione del tema scuro su Android, verifica di aver aggiornato il sistema operativo e, se il problema persiste, prova anche ad effettuare l’aggiornamento dell’app di WhatsApp, seguendo le indicazioni che ti ho fornito nelle mie guide dedicate all’argomento.

      Come avere WhatsApp nero su iPhone

      Come detto, per avere WhatsApp nero su iPhone è necessario che il sistema operativo del proprio dispositivo sia aggiornato a iOS 13 in quanto la modalità scura di WhatsApp è strettamente legata alla disponibilità del tema scuro introdotto con iOS 13 e alla sua attivazione tramite le impostazioni del dispositivo.
      Detto ciò, per iniziare, pigia sull’icona dell’ingranaggio situata nella home screen del tuo iPhone, per aprire il menu delle Impostazioni. Dopodiché, fai tap sulla voce Schermo e luminosità e apponi il segno di spunta sulla voce Scuro, per attivare il tema scuro sul dispositivo.
      Se vuoi attivare la modalità scura (e quindi WhatsApp nero) solo nelle ore serali, attiva la levetta posizionata accanto alla voce Automatico.

      A questo punto, avvia l’app di WhatsApp e dovresti vedere la modalità scura automaticamente attivata nella popolare app di messaggistica.
        Stai riscontrando dei problemi nell’attivazione del tema scuro su WhatsApp? In tal caso, assicurati che il sistema operativo del tuo iPhone sia aggiornato all’ultima versione disponibile.
      Nel caso in cui il problema dovesse persistere, inoltre, puoi provare ad effettuare l’aggiornamento dell’app di WhatsApp, per vedere se vi sono cambiamenti. A tal proposito, per effettuare nel modo corretto queste operazioni, fai riferimento ai miei tutorial dedicati all’argomento in maniera approfondita.

    • Come non far partire i video su Facebook in automatico
      Se ti domandi come non far partire i video su Facebook, lascia che ti spieghi come procedere per riuscire in quest’intento utilizzando l’app di Facebook per Android o iOS/iPadOS e da computer, tramite il sito Web ufficiale del noto social network di Mark Zuckerberg.

      Da smartphone e tablet

      Per disattivare la riproduzione automatica dei video di Facebook da smartphone e tablet, devi agire tramite le impostazioni dell’app del social network.
      Detto ciò, per riuscirci, avvia l’app di Facebook pigiando sulla sua icona situata nella home screen e/o nel drawer del tuo dispositivo, dopodiché effettua l’accesso al tuo account, se richiesto.
      Adesso, premi sull’icona ☰ e, nel menu che ti viene mostrato, raggiungi la sezione Impostazioni e privacy > Impostazioni > Video e foto, premendo sulle relative diciture.
        Infine, fai tap sulla voce Riproduzione automatica e apponi il segno di spunta sulla dicitura Non riprodurre mai i video automaticamente, in modo da disattivare la funzionalità in questione.

      Da computer

      Se preferisci agire da computer, collegati al popolare social network di Mark Zuckeberg tramite il suo sito Web ufficiale, avvalendoti del browser che solitamente utilizzi per navigare su Internet.
      Fatto ciò, pigia sull’icona ▼ situata nell’angolo in alto a destra e, nel menu a tendina che ti viene mostrato, fai clic sulla voce Impostazioni.
      Adesso, fai clic sulla voce Video, situata nella barra laterale di sinistra e seleziona la dicitura Disattiva, che trovi in corrispondenza della voce Riproduzione automatica dei video.
      In questo modo i video di Facebook non verranno più riprodotti automaticamente. Non pensavi che sarebbe stato così facile, vero?

      Come non far partire i video su Facebook manualmente

      Nel caso in cui desiderassi mettere in pausa i video su Facebook manualmente, sarai felice di sapere che riuscire in questo intento è molto semplice e che puoi agire allo stesso modo da smartphone e tablet, tramite l’app di Facebook per Android o iOS/iPadOS, ma anche da computer, tramite il sito Web ufficiale del social network.
        Detto ciò per riuscire in questo intento, effettua innanzitutto l’accesso a Facebook, tramite il dispositivo da te in uso.
      Dopodiché, se hai individuato un video che vuoi mettere in pausa. non devi fare altro che premere al centro dello schermo, oppure sul pulsante ❚❚ situato in basso a sinistra, nel caso in cui, premendo sullo stesso, il filmato si apra con la visualizzazione a tutto schermo. Facile, vero?

      Come non far partire audio video Facebook

      Vorresti sapere come fare in modo che l’audio dei video presenti su Facebook non si avvii in automatico durante la loro riproduzione? In tal caso, puoi innanzitutto l’impostazione relativa alla disattivazione automatica dell’audio dei video, agendo tramite l’app di Facebook che hai installato su Android o iOS/iPadOS.
      Detto ciò, avvia l’app in questione, pigiando sulla sua icona situata nella home screen e/o nel drawer del tuo dispositivo, ed effettua l’accesso al tuo account, se richiesto.
      Adesso, pigia sull’icona ☰, situata nell’angolo in basso a destra e, nel menu che ti viene mostrato, raggiungi la sezione Impostazioni e privacy > Impostazioni > Video e foto, pigiando sulle omonime voci.
      Infine, sposta su OFF la levetta situata in corrispondenza della dicitura I video nella sezione Notizie si avviano con l’audio, per disattivare l’avvio automatico del sonoro, durante la riproduzione dei video.
      In alternativa, puoi agire manualmente sia da smartphone e tablet, ma anche da computer per disattivare manualmente l’audio dei video di Facebook mentre questi sono in riproduzione.
      In questo caso specifico, tutto ciò che devi fare è pigiare sull’icona dell’altoparlante, situata in corrispondenza del player del video in riproduzione, per disattivare l’audio.

    • Come sorvegliare un iPhone

      Sorvegliare un iPhone, ecco qualche informazione in più sulle operazioni preliminari da effettuare sul dispositivo in questione, in modo che il tutto proceda senza intoppi.
      Lo strumento Dov'è, consente di rintracciare i dispositivi Apple in qualsiasi momento (acceso e connesso a Internet), abbinato a un account iCloud di cui conosci la password.
      Nelle Impostazioni di iOS, l'icona d’ingranaggio nella schermata Home, e verifica che sia presente il tuo nome (o il nome del proprietario dell’account Apple di cui conosci le credenziali). Altrimenti sulla voce Effettua il login su iPhone ed inserisci i dati completi di username e password.
      Se non hai ancora un Apple ID, puoi crearne uno segui questa guida su come creare un account iCloud, se hai problemi leggi attentamente il tutorial su come cambiare ID Apple sull’iPhone,  oppure scrivi nel Forum cosi possiamo aiutarti.
      La funzione Trova il mio iPhone deve essere attiva sull'iphone: Impostazioni, tuo nome, poi Dov'è e Trova il mio iPhone e sposta su ON le voci Trova il mio iPhone e Abilita ricerca offline. Ti consente di procedere con la localizzazione anche quando lo smartphone non fosse connesso a Internet, utilizzando il GPS integrato.
      Attiva anche l’opzione Invia ultima posizione, così puoi ritrovare lo smartphone se fosse spento grazie alle ultime cordinazioni gps.
      Infine nella la schermata iniziale delle Impostazioni di iOS, entra nelle sezioni Privacy e Servizi di localizzazione e attiva la voce Localizzazione su ON.
      Accedere senza autorizzazione alla posizione o alle attività riguardanti dispositivi non di tua proprietà rappresenta una violazione della privacy e potrebbe metterti in guai seri.
      Come spiare un iPhone gratis

      Per spiare un iPhone senza installare programmi e gratis, con la posizione in tempo reale, basta utilizzare la funzione Dov’è di iOS.
      Dov’è su tutti i dispositivi a marchio Apple, in caso di blocco, furto o smarrimento, tra cui la localizzazione e il ripristino da remoto.
      Aaccessibile tramite qualsiasi browser per smartphone, tablet e computer, sfruttando iCloud, oppure utilizzando app installata su iOS e iPadOS.
      l’iPhone deve essere acceso e correttamente connesso al GPS, meglio ancora se collegato a Internet; altrimenti verrà fornita una posizione approssimativa, basata sull'ultima posizione.
      Apri il browser che usi solitamente per collegarti a Internet (Safari, Chrome o Firefox), apri il sito Web di iCloud e, inserisci il nome utente e la password dell’ID Apple configurato sullo smartphone (se non li ricordi più, puoi recuperarli).
      Usa il bottone Trova iPhone, vedi comparire su schermo una mappa, con la lista dei dispositivi abbinati all’ID Apple.
      Seleziona il nome dell’iPhone che ti interessa (se sei dal pc, devi prima cliccare sulla voce Tutti i dispositivi) e attendi che il telefono venga localizzato sulla mappa in pochi secondi.
      Puoi inoltre vedere se lo smartphone è online (la posizione mostrata è quella corrente) oppure offline (la posizione mostrata è quella del GPS, oppure quella relativa all’ultima registrazione effettuata), ed effettuare alcune operazioni: far suonare il dispositivo, impostarlo in modalità smarrito (bloccandolo con la password dell’ID Apple), oppure inizializzarlo a distanza.

      Come controllare un iPhone a distanza gratis con Qustodio

      Se hai bisogno di controllare un iPhone a distanza gratis per monitorare le attività svolte sul dispositivo di un minore, puoi utilizzare Qustodio: un'applicazione dedicata esplicitamente al controllo parentale.
      Nella versione gratuita, Qustodio consente di monitorare soltanto un dispositivo; acquistando un piano in abbonamento, con prezzi a partire da 42,95€/anno, è possibile controllare più dispositivi contemporaneamente e ottenere alcune caratteristiche aggiuntive, tra cui il monitoraggio di chiamate ed SMS. Le funzioni Premium possono essere comunque testate gratuitamente per 3 giorni.
      Inizia con l’iscriverti alla piattaforma utilizzando lo smartphone, il tablet (disponibile per Android, iOS e iPadOS) o il browser da usare per il monitoraggio e segui la procedura più adatta tra quelle che ti propongo di seguito, in base al sistema che hai scelto di usare.
      App per smartphone/tablet – avvia l’applicazione, consenti l’invio delle notifiche e usa il pulsante Sono nuovo su Qustodio per iscriverti alla piattaforma come genitore. Ora, compila il modulo con le informazioni (nome, email e password), fai tap sui pulsanti Dispositivo genitore e OK, visualizza le funzioni di base di Qustodio, e concludi con il pulsante Chiudi tour e premi su Inizia a usare Premium per avviare la trial gratuita delle funzioni Premium.
      Ora premi sul pulsante (+), per configurare un nuovo figlio; inserisci nome, sesso e anno di nascita negli appositi campi e tocca il pulsante Successivo. Per concludere, seleziona la voce iOS dal menu a tendina Seleziona dispositivo usato da [nome]. Sito Web – collegati a questa pagina Internet, clicca sul pulsante Inizia gratis e compila il modulo con le informazioni richieste (nome, email e password).
      Clicca prima sul pulsante Crea account e poi su OK, Andiamo e Crea profilo, in modo da avviare la creazione di un nuovo profilo “figlio”.
      Inserisci i dati di quest’ultimo (nome, sesso e anno di nascita) negli appositi campi, seleziona un avatar da utilizzare per il profilo e premi i pulsanti Salva e continua e Continua.w  
      Finito la creazione del profilo genitore, prendi l’iPhone da controllare, installa l’app di Qustodio e avviala. Alla schermata iniziale, scegli la voce Ho un account genitore, immetti l’email e la password scelte in precedenza e fai tap su Accedi.
      Ora tocca il riquadro Dispositivo bambino – proteggi questo dispositivo, fai tap sul nome del figlio configurato in precedenza, specifica il nome da assegnare al telefono e fai tap sulla voce Successivo.
      Arrivato fino a qui tocca il pulsante Concedi, sfiora la voce Consenti sempre per far sì che l’app possa accedere ai servizi di localizzazione, tocca il pulsante Successivo e fai tap sui bottoni Installa profilo iOS e Chiudi, per installare il profilo di configurazione personalizzato.
      Qualora non dovessi visualizzare l’opzione Consenti sempre in fase di richiesta dei permessi d’accesso ai servizi di localizzazione: chiudi l’app, recati nel menu Impostazioni > Privacy > Servizi di localizzazione di iOS, tocca l’opzione relativa a Qustodio e apponi il segno di spunta accanto alla voce Sempre. Ora, avvia Qustodio e procedi con l’installazione del profilo iOS.
      Non ci resta che attivare il profilo: nella schermata Home del dispositivo, apri le Impostazioni di iOS e tocca la voce Profilo scaricato, che dovrebbe comparire in cima. Se non la vedi, vai su Generale > Gestione profili e dispositivo.
      Per concludere, il pulsante Installa in alto a destra, inserisci il codice d’accesso dell’iPhone e concludi la configurazione del profilo toccando i pulsanti Installa, Autorizza e Fine.
      A partire da questo momento, puoi controllare lo stato e le attività del dispositivo di tuo figlio: avvia l’app configurata nel dispositivo di controllo, oppure sul sito Web di Qustodio e, dopo aver effettuato l’accesso con il tuo profilo genitore, seleziona il nome di tuo figlio e utilizza le schede e i menu per controllarne attività (Sommario) e posizione (Timeline). Se lo ritieni opportuno, puoi inoltre imporre delle limitazioni d’utilizzo sul device controllato (Regole).
      Come sorvegliare un iPhone attraverso app Prey

      Se vuoi sorvegliare un iPhone e desideri un’alternativa leggermente più complessa di Dov’è, puoi valutare l’utilizzo di Prey, un’applicazione antifurto che consente di effettuare il monitoraggio continuo della posizione di un iPhone, anche report automatici.
      L’app di Prey può essere usata gratuitamente per monitorare la posizione di massimo 3 dispositivi; per bypassare questo limite e attivare anche la ricezione di report automatici frequenti (nella versione gratuita, questi possono essere generati ogni 10 o 20 minuti), è necessario sottoscrivere un piano a pagamento, al prezzo di partenza di 5$/mese.
      Ad ogni modo, per poter utilizzare Prey, prendi l’iPhone da controllare e installa sullo stesso l’app in questione, scaricandola dall’App Store. A download ultimato, avvia il software, fai tap sulla voce Start e registra un account sulla piattaforma, compilando il modulo che ti viene proposto, nel quale devi indicare il tuo nome, l’indirizzo email e una password per effettuare l’accesso.
      Successivamente, apponi il segno di spunta accanto alle voci I confirm that I am over 16 years old e I have read and accept the terms & conditions and the privacy policy e tocca i pulsanti Register e Send, per creare il nuovo profilo. Provvedi dunque a confermare la validità dell’indirizzo email, aprendo la relativa casella di posta elettronica e seguendo il link allegato al messaggio ricevuto da Prey.
      Effettuata la verifica dell’email, fai tap sui bottoni Done e OK e rispondi affermativamente ai messaggi d’avviso che ti vengono proposti. Ripeti l’operazione per cinque volte consecutive.

      Se utilizzi iOS 13, devi inoltre “correggere” le impostazioni di localizzazione e far sì che Prey possa sempre accedere al relativo servizio, e non soltanto quando l’app è aperta: recati dunque nel menu Impostazioni > Privacy > Servizi di localizzazione di iOS, individua la voce relativa a Prey e apponi il segno di spunta accanto alla voce Sempre.
      Una volta ultimata la fase di configurazione, puoi monitorare la posizione del dispositivo mediante il sito Internet del servizio: collegati dunque a questa pagina Web, effettua l’accesso utilizzando l’indirizzo email e la password impostate in precedenza e seleziona il nome del dispositivo configurato poc’anzi, in modo da visualizzarne la posizione sulla mappa.
      Se lo desideri, puoi utilizzare le voci visualizzate sul pannello laterale per effettuare operazioni aggiuntive: Sound alarm per far squillare il telefono; Send message per inviare un messaggio; Toggle camouflage per nascondere l’icona dalla schermata Home di iOS; Retrieve files (solo account Pro) per visualizzare la lista dei file del dispositivo; Wipe files (solo Pro) per reinizializzare il device da remoto; Lock device, per bloccare l’iPhone da remoto e, infine, Clear passcode, per eliminare il codice di blocco.
      Tieni presente che, per poter utilizzare le ultime tre funzionalità, devi aver necessariamente autorizzato l’app ad agire su iOS, impostando un profilo di amministrazione personalizzato. Se ti interessa agire in tal senso, clicca sulla voce di tuo interesse e, avendo sotto mano il device da controllare, segui le istruzioni visualizzate a schermo.
       
      Altre app per sorvegliare un iPhone

      I sistemi di cui ti ho parlato finora sono soltanto alcune delle più famose app per sorvegliare un iPhone, ma non sono le uniche. Di seguito ti elenco altri software di questo tipo che potresti prendere in considerazione.
      Lookout – è un’app gratuita che funziona in modo simile a Dov’è di Apple, la quale consente di tracciare da remoto la posizione di un iPhone e di effettuare operazioni di blocco e ripristino da remoto (le ultime due funzionalità sono a pagamento). McAfee Mobile Security – altra validissima app antifurto che aggiunge alle funzioni di localizzazione la possibilità di proteggere la propria navigazione Web. È gratuita con possibilità di acquisti in-app per lo sblocco di funzioni aggiuntive. DireWolf – si tratta di un’applicazione antifurto che, in abbinata ad Apple Watch, consente di ricevere un allarme sull’orologio nel momento in cui ci si allontana troppo dal telefono. Costa 2,29€.
      Come difendersi

      Se sei giunto fin qui, vuol dire che hai capito perfettamente come sorvegliare un iPhone avvalendoti di alcune tecniche di semplice applicazione. E, per l’appunto, è proprio questa semplicità a metterti in allarme: e se fossi proprio tu a cadere vittima, nell’immediato futuro, di una delle “trappole” di cui ti ho parlato nel corso di questo tutorial?
      Beh, lasciatelo dire: se è vero che installare un’app di monitoraggio è relativamente facile, è altrettanto vero che, per difendersi, basta usare un po’ di buon senso e seguire alcune semplici regole.
      Non lasciare l’iPhone incustodito, peggio ancora se sbloccato. Non prestare lo smartphone ad altre persone o, se proprio necessario, guardare in prima persona l’attività svolta mediante lo stesso. Utilizzare una password sicura per il proprio ID Apple e non condividerla con nessuno. Effettuare periodicamente un controllo delle app installate sul “melafonino” e, se ve ne sono alcune sospette, eliminarle immediatamente.  

×
×
  • Create New...

Important Information

Terms of Use Privacy Policy Guidelines We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.