Cornel Iulian

Fondators
  • Content count

    14,057
  • Donations

    15.00 EUR 
  • Joined

  • Last visited

  • Days Won

    56
  • Points

    429,248 [ Donate ]

Posts posted by Cornel Iulian


  1. Se citeste un numar natural n si 2 cifre c1 si c2. Sa se inlocuiasca c1 cu c2

     

    #include <iostream>
    using namespace std;
    int main()
    {
        int n,c1,c2,nr=0,p=1;
        cout<<"N = "; cin>>n;
        cout<<"C1 = "; cin>>c1;
        cout<<"C2 = "; cin>>c2;
    
        while(n!=0)
        {
            if(n%10==c1)
                nr=nr+c2*p;
            else
                nr=nr+(n%10)*p;
            p*=10;
            n/=10;
        }
        cout<<nr;
    
        return 0;
    }

     


  2. Am avut de rezolvat o problema interesanta (zic eu) si la care nu am vazut nicio rezolvare pe google, s-ar mai putea imbunatati ceva?

    5*.Implementați un program care citește din DATE.IN de pe prima linie un număr natural n iar de pe a doua linie, două numere naturale x și y (cu 1<=x<=n și 1<=y<=n). Programul va crea și va salva în fișierul REZULTAT.OUT o matrice pătratică de n x n elemente în care x și y reprezintă coordonatele capului unui avion; toate componentele avionului vor fi marcate cu X iar restul elementelor din matrice cu 0. Se știe că sub capul avionului aripile sunt unite în mod simetric pe 5 elemente, mai urmează în jos un element iar sub acel element coada avionului care este simetrică față de axă și formată din 3 elemente.
    Dacă nu este posibilă construirea unui avion atunci se va scrie în fișier “NU ESTE POSIBIL”.
    Ex: dacă x=3, y=1 și n=5 atunci soluția salvată în fișier va fi:

    FsDVF8n.png

    #include <iostream>
    #include <fstream>
    using namespace std;
    int n,x,y,i,j;
    char M[10][10];
    ifstream f("date.in");
    ofstream g("rezultat.out");
    int main()
    {
        //Citim din fisier n,x si y
        f>>n>>x>>y;
    
        //Conditii ca avionul sa se incadreze in matrice
        //n<5, nu s-ar putea creea avionul neavand loc in matrice
        //y<1, capul avionului ar iesi din matrice (in sus)
        //x<3, aripile avionului ar iesi din matrice (in stanga)
        //x+2>n, aripile avionului ar iesi din matrice (in dreapta)
        //y+3>n, coada avionului ar iesi din matrice (in jos)
    
        if(n<5 || y<1 || y+3>n || x<3 || x+2>n)
            g<<"NU ESTE POSIBIL!";
        else{
            //Facem toata matricea 0
            for(i=1;i<=n;i++)
                for(j=1;j<=n;j++)
                    M[i][j]='0';
    
            //Construim capul
           	M[y][x] = 'X';
    
            //Construim aripile
            //y+1 = o pozitie mai jos de cap
            //pornim cu j de la x-2 (2 pozitii in stanga) pana la x+2 (2 pozitii in dreapta)
            for(j=x-2;j<=x+2;j++)
                M[y+1][j]='X';
    
            //Construim elementul de sub aripa
            //Punem 'X' cu 2 pozitii mai jos de cap (y+2)
            //M[y+2][x], x = pozitia capului
            M[y+2][x]='X';
    
            //Constuim coada
            //y+3 = cu 3 pozitii mai jos de cap
            //pornim cu j de la x-1 (o pozitie in stanga) pana la x+1 (o pozitie in dreapta)
            for(j=x-1;j<=x+1;j++)
    			M[y+3][j]='X';
    
            //Afisam matricea in fisier
            for(i=1;i<=n;i++){
                for(j=1;j<=n;j++)
                    g<<M[i][j]<<" ";
                g<<'\n';
            }
        }
    
    
        //Inchidem fisierele
        f.close();
        g.close();
        return 0;
    }

     


    • Limbajul C nu este un limbaj puternic tipizat in sensul lui PASCAL sau Algol - 68. El este relativ liberal in conversia de date, cu toate ca nu converteste automat tipurile de date cum ar fi PL/1.
    • Compilatoarele existente nu poseda verificare la executie a indicilor elementelor de tablouri, tipurilor argumentelor, etc. Pentru acele situatii in care se cere o puternica verificare a tipului, se foloseste o versiune separata a compilatorului. Acest program se numeste "lint" deoarece triaza bitii dubiosi of fluff dintr-un program.
    • El nu genereaza cod, verifica numai foarte strict multe aspecte ale programelor asa cum pot fi verificate la compilare si la incarcare. El detecteaza nepotrivirile de tip, folosirea inconsistenta a argumentelor, variabilele nefolosite sau aparent neinitializate, dificultatile potentiale de portabilitate si alte asemenea aspecte.
    • Programele care trec cu bine aceasta verificare, cu citeva exceptii, se elibereaza de erorile de tip la fel de complet ca si, de exemplu, programele scrise in Algol 68.

     

    • In C obiectele (datele) fundamentale sunt caracterele, intregii de diferite dimensiuni si numerele flotante. In plus, exista o ierarhie de tipuri de date derivate create cu pointeri, tablouri, structuri, uniuni si functii.
    • C++ este un limbaj de programare general, compilat. Este un limbaj multi-paradigma, cu verificarea statica a tipului variabilelor ce suporta programare procedurala, abstractizare a datelor, programare orientata pe obiecte.
    • O data cu evolutia limbajului C++, a evoluat si o biblioteca standard. Prima adaugire a fost biblioteca de intrări/iesiri (I/O stream), care oferea facilităti pentru a înlocui functiile traditionale C cum ar fi printf si scanf. Mai târziu, printre cele mai semnificative adăugari la biblioteca standard a fost STL (Standard Template Library) (Biblioteca de formate standard).

     

    Diferenta majora dintre cele doua: C++ suporta OOP (Object Oriented Programming), in timp ce in C nu este definit acest concept.

    de exemplu: butoane, bara de instrumente, meniu (ca exemplu: start); toate sunt obiecte.


  3. Fisierul .htaccess (hypertext access) este foarte cunoscut webmaster-ilor care urmaresc descentralizarea defenitiilor Apache (Apache Directive), pentru a aplica noi/alte reguli (cache control, mod_rewrite, php flag, custom error pages, redirect, etc) pe un anumit director (public_html de obicei).

     

    htaccess-logo.png

     

    Scrierea unor definitii generale intr-un fisier .htaccess localizat in web-root, are efect asupra tuturor directoarelor si fisierelor din acel arbore. Exceptie fac directoarele subdomeniilor, care sunt scrise in Apache config cu setarile default. Daca fisierul .htaccess nu exista, asta nu inseamna ca Apache nu este controlat. httpd.conf este fisierul care contine toate directivele necesare tinerii online in conditii de securitate si stabilitate, a site-urilor hostate.

     

    Este bine de stiut ca fisierul .htaccess este un fisier in format ASCII care poate fi creat cu orice editor text (de exemplu Notepad). Acesta este intrebuintat de orice webmaster in diverse scopuri.

     

    !!! .htaccess este o extensie de fisier. Nu exista "fisier.htaccess" sau "ceva.htaccess" ci pur si simplu ".htaccess"

     

    Pentru a crea un astfel de fisier, deschidem Notepad si apoi salvam fisierul cu numele ".htaccess".

     

    Atentie!

    Pe sistemele de tip Windows extensia poate fi ascunsa iar fisierul sa se numeasca de fapt ".htaccess.txt", ceea ce este incorect. Pentru a prevenii acest lucru puteti accesa din Windows Explorer/My Computer -> Folder Options -> View -> si deselectati "Hide extension for knows file types". Daca nu puteti redenumi fisierul in acest mod, atunci o puteti face prin intermediul ftp-ului dupa urcarea acestuia pe server.

     

    Fisierele de tip .htaccess trebuiesc puse pe ftp in format ASCII mode si nu BINARY.

     

    Atentie!

    Trebuie sa setati CHMOD 644 pe fisierul .htaccess (RW-R--R--). Acest lucru face imposibila citirea fisierului de catre un browser extern sau de catre un spider. Asemenea greseli duc la compromiterea sistemului, deoarece atunci cand in ".htaccess" au fost introduse cai de access private sau cale catre directoare private, un hacker poate profita de acest lucru. Ca o paranteza, daca folositi un Control Panel gen Plesk sau Webmin pentru administrarea paginilor, acestea vor seta automant chmod 644.

     

    Inainte de a crea si utiliza fisierul ".htaccess":

     

    • Aflati daca aveti dreptul sa-l folositi pe server. Unele servere free (si chiar host-uri platite) nu permit folosirea acestor fisiere. 
    • Aveti grija cum manipulati astfel de fisiere pentru a nu compromite sistemul.
    • Aveti grija ce comenzi scrieyti in htaccess, acestea pot incetini un server (de exemplu un server virtual cu multe domenii si pagini gazduite).

     

    Pentru o lista completa cu setari ce pot fi facute cu ajutorul fisierului .htaccess, vizitati: http://httpd.apache.org/docs/mod/directives.html

     

    Succes


  4. 'FAQ'

    1:

    Q: Hostul meu suporta .htaccess ?

    A: Majoritatea hosturilor pe Apache suporta .htaccess.Daca nu esti sigur contacteaza administratorul serverului.

     

    2:

    Q: Ce pot face cu acest fisier ?

    A: Poti: pune parola la anumite foldere,redirectionare,mesaje de erori personalizate, schimbarea extensiilor fisierelor, banare dupa adresa IP, oprirea listarii directoarelor sau folosirea altui fisier ca index, in loc de index.html/htm/php/etc.

     

    3:

    Q:De ce .htaccess si nu htaccess ?

    A:In sistemele *nix, fisierele a caror denumire incepe cu . sunt luate drept fisiere ascunse, si sunt listate doar cu anumite atribute speciale ale programelor de manipulare a fisierelor.

     

    4:

    Q:Pe Windows nu pot redenumi in htaccess .htaccess, de ce?

    A:Pentru ca Windows nu ia in considerare sistemul de ascundere a fisierelor folosit de sistemele *nix, astfel el crezand ca denumirea ".htaccess" = numele fisierului inexistent + extensia htaccess. Incercati sa folositi Notpad, iar cand salvati, salvati cu "Save As..."

     

    Inca ceva de mentionat:

    Fisierul .htaccess a fost creeat initial pentru a putea fi folosit in cadrul Apache pentru protejarea folderelor si fiserelor cu parole, dar fiind deja interpretat de Apache, creatorii de mod-uri Apache au inceput sa il foloseasca si pentru alte scopuri.

     

    Creearea fisierului...

     

    Creearea fisierului s-ar putea sa provoace niste dureri de cap userilor cu sisteme de operare mai vechi (windows 3.1 etc...)

    Ca sa creem fisierul nostru facem urmatoarele:

    - deschidem notepad

    file=> save as => la 'save as type' selectam 'all files', apoi la file name punem:

     
    .htaccess

     

    Pagini de erori customizate: Sintaxa:

    ErrorDocument numarul-erorii /fisierul.html

    Codurile celor mai des intalnite erori:

    401 - Pagina protejata cu parola
    
    400 - Cerere gresita
    
    403 - Pagina interzisa
    
    500 - Eroare interna
    
    404 - Pagina gresita sau inexistenta
    

    Deci un exemplu ar arata cam asa:

    ErrorDocument 404 /n-am-gasit.html

     

    Toate erorile .htaccess:

      100 Continue 
    
      101 Switching Protocols 
    
      200 OK 
    
      201 Created 
    
      202 Accepted 
    
      203 Non-Authoritative Information 
    
      204 No Content 
    
      205 Reset Content 
    
      206 Partial Content 
    
      300 Multiple Choices 
    
      301 Moved Permanently 
    
      302 Moved Temporarily 
    
      303 See Other 
    
      304 Not Modified 
    
      305 Use Proxy 
    
      400 Bad Request 
    
      401 Unauthorized (directory is protected by a password) 
    
      402 Payment Required 
    
      403 forbidden (all visitors are barred from looking at this file or directory) 
    
      404 file not found 
    
      405 Method Not Allowed 
    
      406 Not Acceptable 
    
      407 Proxy Authentication Required 
    
      408 Request Time-Out 
    
      409 Conflict 
    
      410 Gone 
    
      411 Length Required 
    
      412 Precondition Failed 
    
      413 Request Entity Too Large 
    
      414 Request-URI Too Large 
    
      415 Unsupported Media Type 
    
      500 internal server error (cgi script error) 
    
      501 Not Implemented 
    
      502 Bad Gateway 
    
      503 Service Unavailable 
    
      504 Gateway Time-Out 
    
      505 HTTP Version Not Supported

     


  5. htaccess (hypertext access) este un fisier ce poate fi creat "numai" pe sistemul de operare Linux.
    Nota: Majoritatea editoarelor de text din Windows va vor avertiza ca incercati sa salvati fisierul .htaccess ca fisier fara extensie sau nume. Crimson Editor poate fi folosit pentru crearea si salvarea fisierelor .htaccess sau a altor fisiere fara nume.

    La incercarea crearii unui fisier .htaccess in Windows vi se va returna urmatoarea eroare:

     

    BvWepyG.jpg

    Totusi, exista cateva metode pentru a a putea crea fisierul:

    • Mergeti in Start -> Run -> tastati CMD (Command Prompt)
    • Tastati apoi cd Destkop, pentru schimbarea directorului in Desktop (de exemplu)
    • Tastati copy con .htaccess, dupa care apasati tasta Enter.

     

    Pe Desktop-ul dumneavoastra va fi creat fisierul .htaccess, ce poate fi editat cu un editor text (Notepad, Wordpad, etc.)

    sau

    Lansati editorul Notepad -> Save As -> la file type selectati -> All Files -> introduceti numele fisierului: .htaccess. Fisierul va fi salvat fara probleme si il veti putea edita dupa preferinte.

    Succes


  6. Inainte sa vedem ce inseamna MySQL consider ca este important de stiut ce este SQL, si anume:

     

    SQL (Structured Query Language) este un standard international in cautarea si gasirea de informatii din bazele de date. MySQL (un sistem de management pentru baze de date) este, in fapt, un server SQL - el raspunde interogatiilor de informatie care sunt cuprinse in SQL. Bazele de date SQL se folosesc de obicei pentru a inmagazina informatii cum ar fi mesaje din forum, stiri, comentarii din guestbook, rezultate ale trecerilor in revista, etc.

    Puteti "comunica" cu MySQL folosind o mare varietate de limbaje de programare (PHP-ul fiind unul dintre cele mai des folosite).

     

    MySQL.png

     

    Asadar, MySQL este un server multi-user (mai multi utilizatori) si multi-thread (mai multe fire de executie), utilizeaza SQL, limbajul standard de interogare a bazelor de date din intreaga lume.

    MySQL este disponibil in mod public din 1996, dar istoria dezvoltarii sale incepe in 1979, sub o licenta Open Source, dar daca este nevoie sunt disponibile si licente comerciale.

    Pagina de baza pentru MySQL este: http://www.mysql.com

    Mai multe informatii puteti gasi accesand: http://ro.wikipedia.org/wiki/MySQL

    Numai bine !


  7. Mai întâi introducem datele bazei de date în fisierul conf_global.php:

    <?php
    
    //--------------------------------------------------
    // Editati cele 4 variabile de mai jos
    //--------------------------------------------------
    
    $sql_host = 'localhost';
    $sql_user = 'utilizator';
    $sql_parola = 'parola';
    $sql_baza_de_date = 'baza_de_date';
    
    /**
     * Functia de conectare la baza de date
     * 
     * @param $host
     * @param $user
     * @param $pass
     * @param $db
     * @return connection
     */
    
    function conectare($host, $user, $pass, $db) 
    { 
    	$mysqli = new mysqli($host, $user, $pass, $db);
    	if($mysqli->connect_error) 
    	{
    		die('Eroare la conectare (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
    	}
    	return $mysqli;
    }
    
    
    $conexiune = conectare($sql_host, $sql_user, $sql_parola, $sql_baza_de_date);
    
    
    ?>

    Apoi cream tabelul `membri` cu urmatoarea comanda SQL:

    CREATE TABLE IF NOT EXISTS `membri` (
    `id` int(11) NOT NULL,
      `nume` varchar(255) NOT NULL,
      `parola` varchar(1000) NOT NULL,
      `email` varchar(50) NOT NULL
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

    Vom avea 4 câmpuri:

    • id - Auto Increment
    • nume
    • parola
    • email

    Daca mai doriti, puteti adauga dupa :)

    În fisierul index.php, adaugam sus de tot

    <?php 
    require_once('functii.php');
    ?>

    În locul unde vrem sa adaugam link-urile de Logare / Înregistrare / Delogare, adaugam

    <?php
    echo member_navigation();
    ?>

    Iar în locul unde vrem sa adaugam casutele de logare / înregistrare, adaugam:

    <?php
    echo content();
    ?>

    Vor aparea niste erori, deoarece facem apel la niste functii nedeclarate (nu îmi place sa aglomerez index-ul, asa ca prefer sa fac totul în fisiere separate)

    Acum cream fisierul functii.php.

    Sus de tot adaugam

    <?php
    session_start(); // începerea sesiunii
    require_once('conf_global.php'); // fisierul care include conectarea la baza de date

    Pentru a cripta parola în baza de date, ne vom folosi de functia urmatoare: (nu folosesc md5 simplu deoarece am vazut site-uri cu sute de mii / milioane parole salvate, cu echivalentul lor în md5)

    function criptare ($text)
    {
    	return hash('sha512', hash('sha256', sha1(sha1(sha1(md5(md5($text)))))));
    }

    Pentru a afisa link-ul de logare / înregistrare / delogare, includem urmatoarea functie:

    function member_navigation()
    {
    	if (!isset($_SESSION['uid']))
    	{
    		echo "<a href='?action=login'>Autentificare</a> | <a href='?action=register'>Înregistrare</a>";
    	}
    	else
    	{
    		echo "Bun venit, ".$_SESSION['username'].". <a href='?action=logout'>Delogare</a>";
    	}
    }

    Pentru continutul site-ului, adaugam functia urmatoare:

    function content()
    {
    	if (!isset($_GET['action'])) // link-ul pe care ne aflam este index.php
    	{	
    		echo 'Continutul site-ului';
    	}
    	else
    	{
    		$action = $_GET['action'];
    		if ($action == 'login') // link-ul este index.php?action=login
    		{
    			echo login();
    		}
    		elseif ($action == 'register') // link-ul este index.php?action=register
    		{	
    			echo register();
    		}
    		else if ($action == 'logout') // link-ul este index.php?action=logout
    		{	
    			logout();
    		}
    	}
    }

    În continuare vom include cele 3 functii de mai sus (login, register si logout).

    Functia login:

    function login()
    {
        global $conexiune;
        $mesaj = '';
        
        /* Formularul de logare a fost trimis */
        if (isset($_POST['user']))
        {
            $user = $_POST['user'];
            $pass = $_POST['pass'];
    
            //-----------------------------------------
            // Verificam daca a ramas cel putin o
            // casuta necompletata
            //-----------------------------------------
            
            if ($user == '' OR $pass == '')
            {
                $mesaj = '<br /><b style="color: darkred">Cel putin un câmp a ramas necompletat!</b><br /><br />';
            }
            
            else
            {
                $sql = "SELECT * FROM `membri` WHERE nume='".htmlentities($user)."' AND parola='".criptare($pass)."' LIMIT 1";
                
                $res = mysqli_query($conexiune, $sql) or die(mysql_Error());
                
                if (mysqli_num_rows($res) == 1)
                {
                    $rand = mysqli_fetch_array($res);
                    
                    $_SESSION['uid'] = $rand['id'];
                    $_SESSION['username'] = $rand['nume'];
                    
                    //-----------------------------------------
                    // Redirectionare pe pagina principala,
                    // odata ce logarea s-a efectuat cu succes
                    //-----------------------------------------
                    
                    echo '<meta http-equiv="refresh" content="0; url=index.php" />';
                    exit();
                }
                
                //-----------------------------------------
                // Nu am gasit niciun membru in baza de
                // date cu datele introduse
                //-----------------------------------------
                
                else
                {
                    $mesaj = '<br /><b style="color: darkred">Date incorecte!</b><br /><br />';
                }
            }
        }
        
        //-----------------------------------------
        // Formularul de logare
        //-----------------------------------------
        
    $HTML = <<<PHP
        <center><span style="font-size: 40px;">Autentificare</span></center>
        $mesaj
        <form action="" method="post">
        <b>Utilizator</b><br /> <input type="text" name="user" value="" /><br /><br />
        <b>Parola</b><br /> <input type="password" name="pass" value="" ><br>
        <input type="submit" name="Login" value="Login" >
        </form>
    PHP;
        
        return $HTML;
        
    }

    Functia de înregistrare:

    function register()
    {
            global $conexiune;
    	$mesaj = "";
    	
    	if (isset($_POST['user']))
    	{
    	
    		$user = $_POST['user'];
    		$pass1 = $_POST['pass1'];
    		$pass2 = $_POST['pass2'];
    		$email = $_POST['email'];
    
                    //----------------------------------------------
                    // Cel putin o casuta a ramas necompletata
                    //----------------------------------------------
    		
    		if ($user == '' OR $pass1 == '' OR $pass2 == '' OR $email == '')
    		{
    			$mesaj .= '<b style="color: darkred">Cel putin o casuta a ramas necompletata!<br /><br /></b>';
    		}
    
                    //----------------------------------------------
                    // Parolele introduse nu coincid
                    //----------------------------------------------
    		
    		if ($pass1 != $pass2)
    		{
    			$mesaj .= '<b style="color: darkred">Parolele nu se potrivesc<br /><br /></b>';
    		}
    
                    //----------------------------------------------
                    // Adresa email este invalida
                    //----------------------------------------------
    		
    		if (!filter_var($email, FILTER_VALIDATE_EMAIL))
    		{
    			$mesaj .= '<b style="color: darkred">Adresa email este invalida<br /><br /></b>';
    		}
    		
    		if ($mesaj == "") // Nu a aparut niciun mesaj de eroare
    		{
    		
    			//-----------------------------------------
    			// Verificam daca nu exista user cu acelasi
    			// username / aceeasi adresa email
    			//-----------------------------------------
    			
    			$cerereSQL = 'SELECT * FROM membri';
    			$rezultat = mysqli_query($conexiune, $cerereSQL) or die(mysql_ERROR());
    			
    			while($rand = mysqli_fetch_array($rezultat)) 
    			{
    				
    				//-----------------------------------------
    				// Afisam mesaj de eroare în caz ca 
    				// username-ul sau adresa email introdusa
    				// este / sunt deja folosite de catre
    				// altcineva
    				//-----------------------------------------
    				
    				if ($rand['nume'] == $user  OR  $rand['email'] == $email)
    				{
    					$mesaj .='<b style="color: darkred;">Username / email folosite</b><br /><br />';
    					break;
    				}
    				
    			}
    			
    			if ($mesaj == "")
    			{
    				
    				//-----------------------------------------
    				// Totul este OK, deci putem insera datele
    				// introduse în baza de date
    				//-----------------------------------------
    				
    				$sql = "INSERT INTO `membri`(`nume`, `parola`, `email`) 
                                            VALUES ('".htmlentities($user)."','".criptare($pass1)."','".$email."')";
    				
    				mysqli_query($conexiune, $sql) or die(mysql_Error());
    				
    				echo "Înregistrarea a avut loc cu succes. Veti fi redirectionat pe pagina principala";
    				echo  '<meta http-equiv="refresh" content="1; url=index.php" />';
    				exit();
    			}
    		}
    	}
    	
    	$HTML = <<<INFO
    	<center><span style="font-size: 40px;"nregistrare</span></center>
    	$mesaj
    	<form action="" method="post">
        <b>Utilizator</b><br /> <input type="text" name="user" value="" /><br />
        <b>Parola</b><br /> <input type="password" name="pass1" value="" ><br>
    	<b>Reintrodu parola</b><br /> <input type="password" name="pass2" value="" ><br>
    	<b>Adresa email</b><br /> <input type="text" name="email" value="" /><br />
    	<input type="submit" name="Login" value="Creeaza cont" >
    	</form>
    INFO;
    
    	return $HTML;
    
    }

    Functia delogare:

    function logout()
    {
    	session_destroy();
    	echo '<meta http-equiv="refresh" content="0; url=index.php" />';
    	exit();
    }

    La finalul fisierului adaugam

    ?>

    Acesta este primul meu tutorial PHP. Daca apar nereguli / aveti vreo obiectie (sunt începator), postati aici :D

    P.S. Da, daca ai pierdut parola, esti ca mort.

    Ma gândesc zilele astea la o functie de recuperare a parolei.


  8. Astăzi vă voi arăta cum puteți face numele de utilizator pe forumul dvs. într-un mod "Rainbow". Acest lucru nu necesită cunoștințe avansate, doar accesul la secțiunea Look & Feel din ACP-ul comunității.
     

    Sa incepem.
    În primul rând, veți naviga în ACP => Look & Feel=>Skin=>globalTemplate

    Următorul cod trebuie inserat în partea jos a scriptului. De exemplu, o puteți plasa chiar deasupra locului în care vedeți ceva relevant pentru <! - ::: Footer ::: ->

    <script>
    var speed=80
    var hex=new Array("00","14","28","3C","50","64","78","8C","A0","B4","C8","DC","F0")
    var r=1
    var g=1
    var b=1
    var seq=1
    function changetext(){
    for(i=0;i<document.getElementsByName("Rainbow").length;i++){
    var storetext=document.getElementById? document.getElementsByName("Rainbow")[i] : document.all.highlight
    rainbow="#"+hex[r]+hex[g]+hex[b]
    storetext.style.color=rainbow
    }
    }
    function change(){
    if (seq==6){
    b--
    if (b==0)
    seq=1
    }
    if (seq==5){
    r++
    if (r==12)
    seq=6
    }
    if (seq==4){
    g--
    if (g==0)
    seq=5
    }
    if (seq==3){
    b++
    if (b==12)
    seq=4
    }
    if (seq==2){
    r--
    if (r==0)
    seq=3
    }
    if (seq==1){
    g++
    if (g==12)
    seq=2
    }
    changetext()
    }
    function starteffect(){
    if (document.all||document.getElementById)
    flash=setInterval("change()",speed)
    }
    starteffect()
    </script>

    După ce ați introdus codul, puteți salva modificările.

    Acum, veți naviga la ACP=>Members=>Member Groups=>Manage Member Groups=>Faceți clic pe grupul în care doriți să aveți efectul curcubeu

    Pentru prefixul grupului, introduceți următorul cod:

    <span name="Rainbow"> 


    În ceea ce privește sufixul grupului, vei introduce: 

    </span>
    
    
    După ce ați terminat, apăsați pe butonul Complete Edit, iar setarea va funcționa.
    

    Lucruri de reținut:

    • Aceasta va funcționa numai pentru grupurile la care adăugați prefixul și sufixul.
    • Curcubeul va arăta numai pe tema pe care adăugați scriptul.
    • Nu contează exact unde plasați scriptul, atât timp cât este acolo prezent în temă si nu întrerupe alt cod.

  9. Salut PCTecuci! Astăzi vă voi arăta cum să personalizați cardul de afișare a utilizatorilor (Hover Card) pentru a arăta astfel:

    imageproxy.php,qimg=,hi.imgur.com,_Iru7yQA.png,akey=b3dd0d202eba802434b4a45db874d625e112ff8defc6056af29a5bc87ff9d8df.pagespeed.ce.MK4dSAg_ky.png


    Trebuie să începi prin a merge la ACP => Look & Feel  =>[skin-ul tau] => Profiles => showcard


    Înlocuiți tot codul cu acesta:

    <div class='vcard userpopup'>
    
    	<H3 class = "wa_showcard" style = '
    
    <if test="hasBackgroundColor:|:$member['customization']['bg_color']">
    		background-color: #{$member['customization']['bg_color']} !important;
    	</if>
    	<if test="hasBackgroundImage:|:$member['customization']['_bgUrl']">
    		background-image: url("{$member['customization']['_bgUrl']}?nc={$member['pp_profile_update']}") !important;
    height: 100px !important;
    line-height: 190px;
    background-repeat: no-repeat;
    -webkit-background-size: 100% 100% !important;
    -moz-background-size: 100% 100% !important;
    background-size: 100% 100% !important;
    background-position: 50% 50%;
    	</if>
    </if>
    
    
    background-image: url({$member['customization']['_bgUrl']}) !important;'>
    <a href="{parse url="showuser={$member['member_id']}" seotitle="{$member['members_seo_name']}" template="showuser" base="public"}" class="fn nickname url">{$member['members_display_name']}</a></h3>
    
    	<div class='side left ipsPad'>
    		<a href="{parse url="showuser={$member['member_id']}" seotitle="{$member['members_seo_name']}" template="showuser" base="public"}" class="ipsUserPhotoLink">
    			<img src="{$member['pp_thumb_photo']}" alt="{$this->lang->words['get_photo']}" class='ipsUserPhoto ipsUserPhoto_large' />
    		</a>
    		<br />
    		<if test="cardRep:|:$this->settings['reputation_enabled'] && $this->settings['reputation_show_profile']">
    			<if test="cardRepPos:|:$member['pp_reputation_points'] > 0">
    				<div class='reputation positive'>
    			</if>
    			<if test="cardRepNeg:|:$member['pp_reputation_points'] < 0">
    				<div class='reputation negative'>
    			</if>
    			<if test="cardRepZero:|:$member['pp_reputation_points'] == 0">
    				<div class='reputation zero'>
    			</if>
    					<span class='number'>{$member['pp_reputation_points']}</span>
    				</div>
    		</if>
    		<a href='{parse url="app=core&amp;module=search&amp;do=user_activity&amp;mid={$member['member_id']}" base="public"}' title='{$this->lang->words['gbl_find_my_content']}' class='ipsButton_secondary ipsType_smaller'>{$this->lang->words['gbl_find_my_content']}</a>
    		<if test="cardSendPm:|:$this->memberData['member_id'] AND $this->memberData['member_id'] != $member['member_id'] AND $this->memberData['g_use_pm'] AND $this->memberData['members_disable_pm'] == 0 AND IPSLib::moduleIsEnabled( 'messaging', 'members' ) AND $member['members_disable_pm'] == 0">
    			<a href='{parse url="app=members&amp;module=messaging&amp;section=send&amp;do=form&amp;fromMemberID={$member['member_id']}" base="public"}' title='{$this->lang->words['pm_this_member']}' id='pm_xxx_{$member['member_id']}' class='pm_button ipsButton_secondary ipsType_smaller'>{$this->lang->words['pm_this_member']}</a>
    		</if>
    	</div>
    	<Div  class = 'ipsPad' >
    		<if test="cardStatus:|:$member['_status']['status_content']">
    			<p class='message user_status'>{$member['_status']['status_content']}</p>
    		</if>
    		<div class='info'>
    			<dl>
    				<dt>{$this->lang->words['m_group']}</dt>
    				<dd>{$member['_group_formatted']}</dd>
    				<dt>{$this->lang->words['m_posts']}</dt>
    				<dd>{parse format_number="$member['posts']"}</dd>
    				<dt>{$this->lang->words['m_member_since']}</dt>
    				<dd>{parse date="$member['joined']" format="joined"}</dd>
    				<dt>{$this->lang->words['m_last_active']}</dt>
    				<dd><if test="cardOnline:|:$member['_online']"><span class='ipsBadge ipsBadge_green'>{$this->lang->words['online_online']}</span><else /><span class='ipsBadge ipsBadge_grey'>{$this->lang->words['online_offline']}</span></if> {$member['_last_active']}</dd>
    				<if test="cardWhere:|:$member['_online'] && ($member['online_extra'] != $this->lang->words['not_online'])">
    					<dt>{$this->lang->words['m_currently']}</dt>
    					<Dd>
    						{$member['online_extra']}
    					</ Dd>
    				</if>
    				<if test="isadmin:|:$this->memberData['g_access_cp'] == 1">
    					<dt>{$this->lang->words['m_email']}</dt>
    					<dd><a href='mailto:{$member['email']}'>{$member['email']}</a></dd>
    				</if>
    			</dl>
    		</div>
    		<ul class='user_controls clear'>
    			<if test="authorspammer:|:$member['spamStatus'] !== NULL && $member['member_id'] != $this->memberData['member_id']">
    				<if test="authorspammerinner:|:$member['spamStatus'] === TRUE">
    					<li><a href='#' title='{$this->lang->words['spm_on']}' onclick="return ipb.global.toggleFlagSpammer({$member['member_id']}, false)">{parse replacement="spammer_on"}</a></li>
    				<else />
    					<li><a title='{$this->lang->words['spm_off']}' href='{$this->settings['base_url']}app=core&amp;module=modcp&amp;do=setAsSpammer&amp;member_id={$member['member_id']}&amp;auth_key={$this->member->form_hash}' onclick="return ipb.global.toggleFlagSpammer({$member['member_id']}, true)">{parse replacement="spammer_off"}</a></li>
    				</if>
    			</if>
    			<if test="cardFriend:|:$this->memberData['member_id'] AND $this->memberData['member_id'] != $member['member_id'] && $this->settings['friends_enabled'] AND $this->memberData['g_can_add_friends']">
    				<if test="cardIsFriend:|:IPSMember::checkFriendStatus( $member['member_id'] )">
    					<li><a href='{parse url="app=members&amp;module=profile&amp;section=friends&amp;do=remove&amp;member_id={$member['member_id']}&amp;secure_key={$this->member->form_hash}" base="public"}' title='{$this->lang->words['remove_friend']}'>{parse replacement="remove_friend"}</a></li>
    				<else />
    					<li><a href='{parse url="app=members&amp;module=profile&amp;section=friends&amp;do=add&amp;member_id={$member['member_id']}&amp;secure_key={$this->member->form_hash}" base="public"}' title='{$this->lang->words['add_friend']}'>{parse replacement="add_friend"}</a></li>
    				</if>
    			</if>
    			<if test="cardBlog:|:$member['has_blog'] AND IPSLib::appIsInstalled( 'blog' )">
    				<li><a href='{parse url="app=blog&amp;module=display&amp;section=blog&amp;show_members_blogs={$member['member_id']}" base="public"}' title='{$this->lang->words['view_blog']}'>{parse replacement="blog_link"}</a></li>
    			</if>
    			<if test="cardGallery:|:$member['has_gallery'] AND IPSLib::appIsInstalled( 'gallery' )">
    				<li><a href='{parse url="app=gallery&amp;user={$member['member_id']}" seotitle="{$member['members_seo_name']}" template="useralbum" base="public"}' title='{$this->lang->words['view_gallery']}'>{parse replacement="gallery_link"}</a></li>
    			</if>
    		</ Ul>
    	</div>
    </div>  

     


  10. Previzualizare:

    tdSDwx3.png

     

    AdminCP => Look and Feel => [skin-ul tău]=> Board Index => boardIndexTemplate

    Caută:

    <foreach loop="side_blocks:$side_blocks as $block">
                    {$block}
                </foreach>

    Adaugă înainte:

    <if test="memberbox:|:$this->memberData['member_id']">
    
    <div class='ipsSideBlock clearfix'>
          	<h3>Welcome, <a href="{parse url="showuser={$this->memberData['member_id']}" seotitle="{$this->memberData['members_seo_name']}" template="showuser" base="public"}" title='{$this->lang->words['your_profile']}'> {$this->memberData['members_display_name']}</a></h3>
    <div class='_sbcollapsable'>
    
    <center class='desc member_title'>
    <if test="$this->memberData['title'] != ''">
    {$this->memberData['title']}<br />
    </if>
    <br />
    <a href="{parse url="showuser={$this->memberData['member_id']}" seotitle="{$this->memberData['members_seo_name']}" template="showuser" base="public"}" title='{$this->lang->words['your_profile']}'>
    <img src='{$this->memberData['pp_main_photo']}'></a>
    <br /><br />
    <center>
    
    <span style=' font-size: 14px;'>{$this->memberData['prefix']}{$this->memberData['g_title']}{$this->memberData['suffix']}</span><br /><br />
    
    Posts: {$this->memberData['posts']}<br />
    Profile views: {$this->memberData['members_profile_views']}<br />
    Member No.: {$this->memberData['member_id']}<br>
    Joined: {parse date="$this->memberData['joined']" format="joined"}
    
    <br /><br />
    Your IP: {$_SERVER['REMOTE_ADDR']}
    <br /><br />
    <div style='background:#0f2437 ;padding: 7px; color: #fff; font-weight: bold'>{$this->memberData['pp_reputation_points']}
    </div>
    </center>
    </div>
    </div>
    
    </if>


    Pentru a schimba culoarea de fundal de la Reputation, trebuie doar să editați:

    <div style='background:#0f2437 ;padding: 7px; color: #fff; font-weight: bold'>{$this->memberData['pp_reputation_points']}</div>

     


  11. Cum se repară: "The 413 request entity too large"

    Această eroare se întâmplă de obicei atunci când încercați să încărcați un fișier care depășește limita maximă de încărcare a fișierelor pe site-ul dvs. WordPress.

    imageproxy.png

     

    În mod normal, cele mai multe firme de găzduire Web au serverele lor configurate, astfel încât utilizatorii WordPress pot încărca cu ușurință imagini mari și alte fișiere media. Cu toate acestea, uneori această setare nu este suficient de mare pentru a încărca fișiere tematice sau pluginuri mari.

    De asemenea, vă va împiedica să încărcați fișiere mari în biblioteca media. În acest caz, veți vedea un mesaj diferit, afirmând în mod clar că dimensiunea fișierului depășește limita maximă permisă.

    imageproxy (1).png

    Acestea fiind spuse, să aruncăm o privire la modul de a repara eroarea "The 413 request entity too large"

    Fixează eroarea "The 413 request entity too large" în Wordpress

    Există mai multe modalități de a remedia "The 413 request entity too large" în WordPress. Vom acoperi toate aceste metode, iar tu poți încerca pe cel care ți se potrivește cel mai bine.

     1. Creșteți limita de încărcare a fișierului de încărcare prin intermediul funcțiilor

    Pur și simplu adăugați următorul cod la fișierul functions.php al temei sau la un plugin specific site-ului.

    @ini_set( 'upload_max_size' , '64M' );
    @ini_set( 'post_max_size', '64M');
    @ini_set( 'max_execution_time', '300' );

    Puteți crește valorile din upload_max_size și post_max_size pentru a fi mai mult decât fișierul pe care încercați să îl încărcați. De asemenea, va trebui să măriți max_execution_time până la momentul în care credeți că va fi necesar ca fișierul să fie încărcat. Dacă nu sunteți sigur, puteți încerca să dublați această valoare.

    2. Creșteți încărcarea limitei dimensiunii fișierului prin fișierul .htacces

    Pentru această metodă, va trebui să editați fișierul .htaccess și să adăugați următorul cod în partea de jos:

    php_value upload_max_filesize 64M
    php_value post_max_size 64M
    php_value max_execution_time 300
    php_value max_input_time 300

     


  12. Daca doriti sa adaugati ID-ul de Skype sau numarul de telefon in spatele unei legaturi (link) pe o pagina web sau un site ce permite adaugarea de coduri HTML, puteti face asta in urmatorul fel:
     
    Pentru adaugarea ID-ului in spatele unui link:

    <a href="skype:username?call">Call me on Skype!</a>


     
    Pentru adaugarea numarului de telefon in spatele unui link:
     

    <a href="callto:+41234567890">Call me on my number via Skype!</a>

     


  13. main-qimg-c97e9eb6394c69e98583f6b9d294a7

    Ce este HTML

    Html sau HyperText Markup Language este unul dintre cele mai vechi limbaje de marcare web. Acesta sta la baza crearii unui site web. Cu alte cuvinte, inainte de a invata alte limbaje de programare trebuie sa cunosti cel putin HTML.

    Acest sir de tutoriale html este conceput pentru a-ti oferi putina experienta, pentru ca tu sa fi capabil sa citesti si sa scri in HTML, sa poti salva corect documentele si sa poti, dupa aceea sa vizualizezi toata “osteneala” intr-un browser web. Din pacate aceeasta pagina nu detine o rubrica pentru a te invata sa folosesti functiile de baza ale unui calculator, asa ca in acest sens poti sa ceri ajutorul unui prieten pentru a putea fii initiat in urmatoarele:

    • Sa stii ce este un notepad si cum se foloseste
    • Sa stii sa deschizi un fisier folosind Internet Explorer (sau oricare alt browser la alegere, vezi mai jos o lista cu cele mai folosite browsere)
    • Sa stii ce este si cum se face un copy/paste

    Prima pagina web

    Pentru inceput copiaza urmatorul cod HTML in notepad. Aigurate ca operatiunea a fost  executata corect, in caz contrar pagina nu va functiona.

    <html>
     
    	<head>
    	
    	</head>
    	
    	<body>
    		
    		<h2>Prima mea pagina web!</h2>
    	
    	</body>
     
    </html>

    Codul HTML de mai sus, este tot ceea ce iti trebuie pentru a crea o pagina web de baza. Acum poti salva documentul in notepad selectand din meniul“File”, optiunea “Save As”. In fereastra care se deschide, selecteaza “All Files”. Vom da un nume fisierului, de exemplu “index.html”, fara ghilimele. Verifica de doua ori innainte de a apasa butonul “Save”. O sa te rog sa incerci sa iti aduci aminte unde ai salvat fisierul deoarece vom lucra cu acest fisier ceva mai tarziu.

    Vizualizarea primei pagini web – Browsers

    Pentru a putea vedea pagina, va trebuii sa folosesti un browser. Browser-ele sunt programele de internet care interpreteaza codurile HTML, asemanatoare cu acele pe care le-ai copiat si salvat in notepad. Acestea transforma codul HTML intr-o pagina web care poate fi citita de orice internaut. Cele mai folosite browsere sunt:

    • Chrome
    • FireFox
    • Safari
    • Opera
    • Internet Explorer

    Vizualizarea primei pagini

    Pentru a putea vizualiza pagina web, trebuie sa deschizi fisierul “index.html” intr-un browser. In acest sens, poti face clik dreapta pe fisier si selecta optiunea “Open with..” (deschide cu..), alegand unul din browser-ele enumerate mai sus.

    Felicitari! Tocmai ai vazut prima ta pagina web.


  14. În momentul în care intrați pe o pagină web, browser-ul citește pagina, iar primul lucru pe care îl face este să caute DOCTYPE-ul sau elementul care ajută la redarea corectă a siteului. Așadar DOCTYPE este un document care oferă browser-ului informația necesară pentru a afișa pagina corect.

    Iata mai jos tipurile de DOCTYPE:

    HTML 4.01 Transitional

    Spoiler
    
    <!DOCTYPE  HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">[/code]

     

     

    HTML 4.01 Strict

    Spoiler
    
    <!DOCTYPE  HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

     

     

    HTML 4.01 Frameset

    Spoiler
    
    <!DOCTYPE  HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

     


    XHTML 1.0 Strict

    Spoiler
    
    <!DOCTYPE  html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

     

     

    XHTML 1.0 Transitional

    Spoiler
    
    <!DOCTYPE  html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

     

     

    XHTML 1.0 Frameset

    Spoiler
    
    <!DOCTYPE  html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

     

     

    XHTML 1.1

    Spoiler
    
    <!DOCTYPE  html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

     

     


  15. Ghid de prezentare a site-urilor web

    Scopul acestei secțiuni este de a permite membrilor să prezinte site-urile lor pentru revizuire de către membrii site-ului nostru și staff. Acceptăm observații de la o mare varietate de platforme, inclusiv HTML, IP.Board, IPS vBulletin, Wordpress, PHPBB etc. Rețineți că aceste recenzii nu sunt întotdeauna pozitive, deci luați în considerare acest lucru înainte de a trimite site-ul dvs. spre examinare.
     



    Cerințe:

    Membrii trebuie să aibă cel puțin gradul Advanced Members, înainte de a trimite un site web pentru examinare.
     

    Prezentarea unui site trebuie să conțină următoarele informații: 

    • Link-ul
    • Data creării:
    • Descrierea siteului:
    • Numărul de membri:

     

    Reguli:

    1. Rețineți că secțiunea "Prezentare site web" nu este o zonă "Căutați membri" sau "Căutați staff". Observăm dacă cineva vizitează site-ul dvs. și îl consideră interesant, acesta se va alătura site-ului dvs.

    2. Nu trimiteți site-uri care au secțiuni similare și / sau au copiat / scos materiale din PCTecuci (probabil că veți fi suspendat / interzis de PCTecuci dacă faceți acest lucru).

     

    Opinii:
    Toți membrii au dreptul să examineze toate site-urile care au fost publicate în această categorie și sa-și dea cu părerea. Țineți cont de următoarele lucruri atunci când răspundeți la un subiect al unui site trimis:

    • Deși recenziile negative sunt acceptabile, ele ar trebui să fie constructive.
    • Postarea unor elemente, cum ar fi "Îmi place", "Site frumos" sau "Nu-mi place", nu sunt acceptabile. Ia-ți un moment să explici de ce îți place sau nu-ți place site-ul. (Comentariile pot fi foarte scurte, dar ar trebui să conțină anumite lucruri care vă plac sau nu vă plac)
    • După ce ați scris o recenzie, asigurați-vă că ați evaluat site-ul folosind "rate the topic" oferindu-i intre 1 si 5 stele în partea de sus a subiectului (acest lucru nu este necesar, dar poate fi de ajutor). Vă rugăm nu evaluați subiectele decât dacă ați oferit o recenzie.
    • Nu solicitați să deveniți membru staff la unul dintre site-urile postate în această categorie sau prin mesaje private. Dacă sunteți interesat să fiți în căutarea unui grad la unul dintre site-urile listate aici, vă rugăm să vă alăturați site-ului respectiv și să aplicați pentru orice post deschis de staff acolo.
    • Nu solicitați o copie a temei, a pluginurilor, a aplicațiilor sau a altui conținut al site-ului. Aceasta nu este o secțiune de suport.
      Rețineți că scrierea recenziilor bune - fie pozitive, fie negative - este unul dintre modurile în care vă vom evalua calitatea de membru aici pe PCTecuci.


    Aceste reguli pot fi modificate în orice moment de către administratorul PCTecuci.Ro.


  16. In primul rand avem nevoie de un host, unde sa putem urca fisierele scriptului IPS 4 si unde sa putem crea o baza de date si userul ei. (eu am folosit localhost (XAMPP). Voi puteti urca oriunde vreti :D 

    Apoi de fisierele IPS4 pe care le descarcati de aici. Daca nu sunteti client, puteti cumpara de aici suita.

    Odata urcate fisierele pe host, intram in folderul unde le-am urcat si ne va aparea asta:

    Spoiler

    ScJjzTn.png

    In primul camp completam licenta IPS. O puteti localiza aici . Daca aveti deja forum cu aceasta licenta, adaugati la sfarsit -TESTINSTALL, dupa tutorialul de aici. (O licenta IPS poate fi folosita pe un singur forum)

     

    Acceptam conditiile si apasam pe butonul Continue. Vom fi redirectionati pe aceasta pagina:

    Spoiler

    8dcLWa5.png

    Unde putem alege aplicatia default a forumului. Eu am ales Forums. Dupa ce dam click pe Continue, avem pagina unde introducem detaliile despre baza de date:

    Spoiler

    86OPyAM.png

     

    • Host: de obicei localhost. Sunt insa unele firme webhost unde trebuie sa introduci IP-ul serverului, sau ti se specifica ce trebuie sa introduci cand creezi baza de date (ex: la 000webhost)
    • Username: username-ul care are "Grand Privileges" la baza de date
    • Password: parola username-ului de mai sus
    • Database name: Numele bazei de date la care s-a adaugat utilizatorul de mai sus
    • Table prefix: puteti lasa gol, insa daca aveti pe aceeasi baza de date tabelele de la alt script si doriti sa diferentiati tabelele acelui script de cele ale IPS4, puneti ceva specific, de exemplu ips4_

     

    Dupa ce dam click pe continue, ne va aparea pagina unde introducem datele contului de administrator:

    Spoiler

    QCEx7fr.png

    Daca ceea ce am introdus e valid (parolele se potrivesc si adresa email este valida), dam click pe Continue si vor fi create tabelele bazei de  date:

    Spoiler

    BKSTZwH.png

    Dupa ce se incheie procesul de mai sus, si totul decurge normal, vom vedea aceasta pagina:

    Spoiler

    ZhgH0KK.png

    (sursa: pctroubleshooting.ro)

     

    Postati aici eventualele nelamuriri :) 


  17. Din init.php schimbati:

    Spoiler
    
    /**
    	 * Get license key data
    	 *
    	 * @param	bool	$forceRefresh	If TRUE, will get data from server
    	 * @return	array|NULL
    	 */
    	public static function licenseKey( $forceRefresh = FALSE )
    	{
    		/* Get the cached value */
    		$cached = NULL;
    		$setFetched = FALSE;
    		if ( isset( \IPS\Data\Store::i()->license_data ) )
    		{
    			$cached = \IPS\Data\Store::i()->license_data;
    
    			/* If it's younger than 21 days, just use that */
    			if ( $cached['fetched'] > ( time() - 1814400 ) and !$forceRefresh )
    			{
    				/* If the license is not expired, return the data */
    				if( !$cached['data']['expires'] OR strtotime( $cached['data']['expires'] ) > time() )
    				{
    					return $cached['data'];
    				}
    				/* Otherwise if the license is expired but we've automatically refetched, return the data */
    				else if( $cached['data']['expires'] AND strtotime( $cached['data']['expires'] ) < time() AND isset( $cached['refetched'] ) )
    				{
    					return $cached['data'];
    				}
    				/* Otherwise remember to set the 'refetched' flag */
    				else
    				{
    					$setFetched = TRUE;
    				}
    			}
    		}
    
    		/* Call the main server */
    		try
    		{
    			/* Prevent a race condition and set the next check cycle to be 10 mins from the 21 day cut off in case this request fails */
    			\IPS\Data\Store::i()->license_data	= array( 'fetched' => time() - 1813800, 'data' => NULL );
    			
    			$response = \IPS\Http\Url::ips( 'license/' . trim( \IPS\Settings::i()->ipb_reg_number ) )->request()->get();
    			if ( $response->httpResponseCode == 404 )
    			{
    				\IPS\Data\Store::i()->license_data	= array( 'fetched' => time() - 1728000, 'data' => NULL );
    				return $cached;
    			}
    			$response = $response->decodeJson();
    		}
    		catch ( \Exception $e )
    		{
    			/* If we can't access the license server right now, store something in cache to prevent a request on every page load. We
    				set fetched to 20 days ago so that this cache is only good for 1 day instead of 21 days however. */
    			if( $cached === NULL )
    			{
    				\IPS\Data\Store::i()->license_data	= array( 'fetched' => time() - 1728000, 'data' => NULL );
    			}
    			else
    			{
    				/* We wipe the data to prevent a race condition, but the license server failed so restore the data and set to try again in 1 day */
    				\IPS\Data\Store::i()->license_data	= array( 'fetched' => time() - 1728000, 'data' => ( isset( $cached['data'] ) ? $cached['data'] : NULL ) );
    			}
    
    			/* If the server is offline right now, use the cached value from above */
    			return $cached;
    		}
    		
    		/* Update the license info in the store */
    		$licenseData = array( 'fetched' => time(), 'data' => $response );
    
    		if( $setFetched )
    		{
    			$licenseData['refetched']	= 1;
    		}
    
    		\IPS\Data\Store::i()->license_data	= $licenseData;
    
    		/* Return */
    		return $response;
    	}
    	
    	/**
    	 * Check license key
    	 *
    	 * @param	string	The license key
    	 * @param	string	The site URL
    	 * @return	void
    	 * @throws	\DomainException
    	 */
    	public static function checkLicenseKey( $val, $url )
    	{
    		$test = FALSE;
    		if ( mb_substr( $val, -12 ) === '-TESTINSTALL' )
    		{
    			$test = TRUE;
    			$val = mb_substr( $val, 0, -12 );
    		}
    		$urlKey = $test ? 'test_url' : 'url';
    						
    		try
    		{
    			$response = \IPS\Http\Url::ips( 'license/' . $val )->setQueryString( $urlKey, $url )->request()->get();			
    			switch ( $response->httpResponseCode )
    			{
    				case 200:
    					$response = json_decode( $response, TRUE );
    					if ( $response['legacy'] )
    					{
    						throw new \DomainException( 'license_key_legacy' );
    					}
    					
    					if ( !$response[ $urlKey ] )
    					{
    						\IPS\Http\Url::ips( 'license/' . $val )->request()->post( array(
    							$urlKey	=> $url
    						) );
    					}
    					elseif ( $response[ $urlKey ] != $url )
    					{
    						if ( rtrim( preg_replace( '/^https?:\/\//', '', $response[ $urlKey ] ), '/' ) == rtrim( preg_replace( '/^https?:\/\//', '', $url ), '/' ) ) // Allow changing if the difference is http/https or just a trailing slash
    						{
    							\IPS\Http\Url::ips( 'license/' . $val )->request()->post( array(
    								$urlKey	=> $url
    							) );
    						}
    						else
    						{							
    							throw new \DomainException( $test ? 'license_key_test_active' : 'license_key_active' );
    						}
    					}
    					break;
    					
    				case 404:
    					throw new \DomainException( 'license_key_not_found' );
    				
    				default:
    					throw new \DomainException( 'license_generic_error' );
    			}
    		}
    		catch ( \IPS\Http\Request\Exception $e )
    		{
    			throw new \DomainException( sprintf( \IPS\Member::loggedIn()->language()->get( 'license_server_error' ), $e->getMessage() ) );
    		}
    	}

     

    (liniile 638 - 782) cu:

    Spoiler
    
    /**
    	 * Get license key data
    	 *
    	 * @param	bool	$forceRefresh	If TRUE, will get data from server
    	 * @return	array|NULL
    	 */
    	public static function licenseKey( $forceRefresh = FALSE )
    	{
    		/* We haven't license key saved in settings? Saving... */
    		if ( !\IPS\Settings::i()->ipb_reg_number ) {
    			\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => 'LICENSE KEY GOES HERE!-123456789' ), array( 'conf_key=?', 'ipb_reg_number' ) );
    			\IPS\Settings::i()->ipb_reg_number	= 'LICENSE KEY GOES HERE!-123456789';							
    		}
    
    		$response = array(
    				'key' => \IPS\Settings::i()->ipb_reg_number, //IPS Key
    				'active' => \IPS\Settings::i()->ipb_license_active, //License Active?
    				'cloud' => \IPS\Settings::i()->ipb_license_cloud, //We are "cloud" clients?
    				'url' => \IPS\Settings::i()->ipb_license_url, //Forum URL
    				'test_url' => \IPS\Settings::i()->ipb_license_test_url, //Test URL
    			 	'expires' => \IPS\Settings::i()->ipb_license_expires, //When our license will expire?
    			 	'products' => array( //Array of components. Can we use...
    			 	 	'forums' => \IPS\Settings::i()->ipb_license_product_forums, //...IP.Board // Forums?
    			 	 	'calendar' => \IPS\Settings::i()->ipb_license_product_calendar, //...IP.Calendar // Calendar?
    			 	 	'blog' => \IPS\Settings::i()->ipb_license_product_blog, //...IP.Blogs // Blogs?
    			 	 	'gallery' => \IPS\Settings::i()->ipb_license_product_gallery, //...IP.Gallery // Gallery?
    			 	 	'downloads' => \IPS\Settings::i()->ipb_license_product_downloads, //...IP.Downloads // Downloads?
    			 	 	'cms' => \IPS\Settings::i()->ipb_license_product_cms, //...IP.Content // Pages?
    			 	 	'nexus' => \IPS\Settings::i()->ipb_license_product_nexus, //...IP.Nexus // Commerce?
    			 	 	'spam' => FALSE, //...IPS Spam Service? No! Hardcoded to prevent requests to IPS servers.
    			 	 	'copyright' => \IPS\Settings::i()->ipb_license_product_copyright, //...remove copyright function?
    		 		),
    			 	'chat_limit' => \IPS\Settings::i()->ipb_license_chat_limit, //How many users can use IP.Chat?
    			 	'support' => \IPS\Settings::i()->ipb_license_support, //Can we use Support?
    			);
    
    		$cached = NULL;
    		if ( isset( \IPS\Data\Store::i()->license_data ) ) //License data exists in cache?
    		{
    			$cached = \IPS\Data\Store::i()->license_data;
    			/* Keep license data updated in cache store */
    			if ( $cached['fetched'] < ( time() - 1814400 ) )
    			{
    				/* Data older, than 21 days. Updating... */
    				unset( \IPS\Data\Store::i()->license_data );
    				\IPS\Data\Store::i()->license_data = array( //Add information to cache...
    					'fetched' => time(),
    					'data' => $response,
    				);
    				return $response;
    			} else {
    				return $cached['data'];
    			} 
    		}
    		else
    		{
    			/* Cached license data is missing? Creating... */
    			\IPS\Data\Store::i()->license_data = array( //Add information to cache...
    				'fetched' => time(),
    				'data' => $response,
    			);
    			return $response;
    		}
    	}
    	
    	/**
    	 * Check license key
    	 *
    	 * @param	string	The license key
    	 * @param	string	The site URL
    	 * @return	void
    	 * @throws	\DomainException
    	 */
    	public static function checkLicenseKey( $val, $url )
    	{
    		//Do Nothing
    	}

     

     

    (sursa codului: webflake.sx)

     


  18. Un nou sistem s-a adaugat pe comunitate, anume, aplicatiile pentru grad pe forum se fac intr-un formular dupa o anumita regula.

    Pentru a aplica pentru Helper, trebuie sa ai gradul Advanced Members pe care il poti obtine automat la 15 posturi.

    Advanced Members pot aplica pentru Helper si GFX Designer daca au minim 50 posturi.

    Helper si GFX Designer au deblocat accesul de a aplica pentru Moderator (minim 150 posturi)

    Moderatorul are deblocata optiunea de a aplica pentru Super-Moderator (300 posturi)

    Super-Moderatorii pot aplica pentru Supervizor daca au minim 500 posturi.

     

    Aplicatiile pentru grade se fac in meniu la Aplicatie Grad

    121111.png

    Comunitatea PCTecuci recruteaza pentru orice grad, va asteptam cu aplicatii.


  19. ASA TREBUIE SA ARATE LA FINAL

    a3b9d1d38b1cb06f019a96ba1534c46e.png

    1 - INSPECT ELEMENT PE CATEGORIA UNDE DORESTI SA AI UN BACKGROUND

    0d1f7492bd0f964b3b8627060e0af9e6.png

    IN CAZUL MEU ESTE: ZONA UTILIZATORILOR

    2 - CAUTAM CE ID ARE CATEGORIA RESPECTIVA | EX: la mine este category_2

    7bbc7d986ca916b2394c6c6c5f2edeec.png

    3 - CAUTAM PE CE LINIE ESTE ACEA CATEGORIE

    8957487a6dbb2c929b0ee6992f25ed46.png

    LA MINE ESTE: ZONA UTILIZATORILOR DECI   2  

    ACUM TREBUIE SA ADAUGATI +1

     DACA ATI ALES 1 adaugam +1 si este 2 sau am ales 3 si adaugam +1 si este 4 

    4 - ADAUGAM ACEST COD IN  style_css  

    #category_2 tr:nth-of-type(3) {
        background: url(https://i.imgur.com/G6wIRX4.png) no-repeat;
        height: 150px;
    }


    TREBUIE SA MODIFICATI:

    category_2  VOI ADAUGATI CE ID AVETI 

    nth-of-type(3)  EU AM ALES CATEGORIA 2 si am mai adaugat +1 deci 3 


  20. Titlul topicului trebuie sa fie: [Cerere (Grad Dorit) ] Nick (Nick= numele tau de pe forum)

    • Nume :
    • Prenume :
    • Vârstă :
    • Primele 5 cifre din CNP (optional):
    • Număr de postări(minim 50) :
    • Prezintă-te :
    • Ai moderat și alte forumuri ? :
    • Categoria pe care doreşti să o moderezi :
    • Crezi că eşti potrivit pentru aceasta categorie? (Argumentează) :
    • Cu ce poţi îmbunătăţii această categorie :
    • Cât timp îţi petreci pe forum? :
    • Experienta in IT (Da/Nu):
    • Alte lucruri de menţionat :
    • O poza cu tine(optional):
    • Prezinta-ne un tutorial:

     

    Regulament

    1. Cererile se fac odata la 1 saptamana.
    2. Inainte de toate. Tot ce cerem de la voi este sa aveti foarte multa seriozitate cand primiti functia si sa va dati interesul, sa nu faceti abuz la functia primita .Sa aveti la cunoastiinta Gramatica Limbii Romane.
    3. De asemenea sa aveti un limbaj adecvat si sa va comportati omeneste cu ceilalti. Ajutati playerii cand va cer ajutorul daca nu sunt in stare sa se descurce cu navigarea pe forum sau sa faca cerere admin, cerere unban sau reclamatii.
    5. Sa aveti la cunoastere regulamentul forumului.  La cereri doar Administratorii si Fondatorii au voie sa RESPINGA/APROBE.
    6. Moderatorii sunt obligati sa argumenteze cand dau PRO/CONTRA, nu gen : Idem, Ai tot ce iti trebuie, indeplinesti conditiile, all clear etc..
    7. Pentru a primii gradul respectiv, 50% din totalitatea posturilor trebuie facute altundeva inafara de Jocuri Forumiste (in cazul in care va gandeati sa spamati acolo cu posturi pentru a face mai repede).
    8. Trebuie sa aveti experienta necesara pentru a primi gradul respectiv, in general, gradele se dau in functie de experienta pe care o aveti, apoi se ia in considerare celelalte cerinte.