Tag Archives: php

new VPS for shared hosting

Dupa ce am instalat o copie noua de centos 5.5… hai sa o pregatesc pentru produs ๐Ÿ™‚

Urmeaza sa instalez pe ea:

  • MySql
  • MongoDB
  • Apache
  • PHP 5.3
  • mpm-itk
  • phpmyadmin

Si sa incep cu instalarea bazelor de date.

MySQL

1
2
3
4
5
# yum install mysql mysql-server
# chkconfig --levels 235 mysqld on
# /etc/init.d/mysqld start
# mysqladmin -u root password 'new-password'
# mysqladmin -u root -h my.hostname password 'new-password'

Continue reading new VPS for shared hosting

header pentru continut XML generat in PHP

Daca aveti un script care genereaza un XML ca output, atunci este necesar a zice browser-ului: “… iti trimit un XML”. Implict, un browser asteapta sa primeasca pagini HTML si daca nu se specifica faptul ca trimiti alt tip de continut, o sa il prelucreze ca un HTML simplu.

Pentru a anunta browserul despre continutul ce urmeaza sa il primeasca, se trimite un header special pentru pagina respectiva: “Content-Type” si diferite valori pentru el, de exemplu:

  • pentru HTML: Content-Type: text/html
  • pentru XML: Content-Type: text/xml
  • pentru PDF: Content-Type: application/pdf

Pentru a trimite aceste informatii din PHP se utilizeaza functia header :

1
2
3
4
void header ( string $string
      [, bool $replace = true
      [, int $http_response_code ] ]
    )

Si acum pentru cazul nostru, (file: xml.php):

1
2
3
4
5
6
<?php  
  header( "Content-Type: text/xml" );  
?>
<continut_XML>
  ...
</continut_XML>

NB: Trebuie sa specific faptul ca este necesar sa se trimita headerele paginei inainte de a se trimite continutul paginii si o sa aveti o eroare/warning daca trimiteti continut (chiar si un spatiu) dupa care trimiteti headerele. Un exemplu al acestui caz care trebuie sa il evitati:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
  echo " ";
  //deja e trimis un spatiu ca continut din pagina si
  // respectiv toate hederele paginii au fost trimise catre browser
  // ....
  // ceva prelucrari...
  // ....
  header( "Content-Type: text/xml" );
  // prea tarziu de a trimite headere custom,
  // ele deja au fost trimise.
?>
<continut_XML>
  ...
</continut_XML>

atat.

poky.ro : part 4… autoposting

Dupa ce am ajuns la procesul de copy+paste sa va zic cum am trecut peste acest proces… intr-un final se public automat articolele.

Publicarea unui articol nou se face foarte usor cu ajutorul functiei wp_insert_post()… cu parametrii bine setati.

Dar sa vedem mai detaliat.

Daca vrei sa faci un script (de la zero) care face ceva in wordpress este necesar sa incluzi urmatoarea linie de cod :

1
  require( dirname(__FILE__) . '/wp-load.php' );

wp-load.php e un script ce incarca (practic vorbind) tot frameworkul de wordpress, dupa care ai access cam la toate feature-urile ce ti le ofera wordpressul. Trebuie sa ii pozitionati corect directoriul astfel ca sa incarce fisierul. La mine scriptul ce publica posturile automat nu se afla in acelasi directoriu unde e instalat wordpressul, cu un un nod mai sus in arborele de directorii, deci la mine e ceva de genu (in www e blogul instalat) :

1
  require( dirname(__FILE__) . '/www/wp-load.php' );

Acum doar imi ramane sa pregatesc articolul si sa apelez wp_insert_post().

Articolele mele se afla in fisiere txt cu prima linie care contine titlul, iar restul e continutul articolului. Toate articolele sunt in fisiere txt intr-un folder NEW si mai am un directoriu OLD in care pun fisierele cu articolele deja afisate (ca sa nu sterg txt-urile magice). Ideea e sa ieu un fisier TXT din directoriul NEW -> il mut in OLD apoi il afisez pe blog.

Inainte de a trece la cod, vreau sa zic ca am o functie ce trimite mail pentru raportare (da… citesc rapoartele scriptului sa vad ce se intimpla)

1
2
3
4
    function send_mail123( $content = 'ping', $subject = 'publishing report' )
    {
        mail( 'report@gmail.com', $subject . ' ' . date( 'Y.m.d H:i:s' ), $content );
    }

e simpla… deci trecem fara multe comentarii peste.

Continue reading poky.ro : part 4… autoposting

poky.ro : part 3… the title…

copy + paste + reedit

Cam la asta se rezuma ceea ce faceam pe poky.ro : copy + paste + reedit

Reedit-ul cela il faceam la titlul postului. Posibil sa am un titlu : “TITLE” ( cu litere mari ) care, deobicei, este enervant si am zis sa normalizez acest titlu, sub forma : “Title” = prima litera din fiecare cuvant o fac uppercase.

Deci, am motiv sa imi simplific viata, astfel, am inceput la dezvoltarea pluginului ( mare plugin… 2 linii cod ๐Ÿ™‚ ).

Datorita faptului ca e putin cod, l-am scris in acelasi plugin ( prezentat in partea 1 ).

1
2
3
4
5
6
function clean_post_title( $title )
{  
    return ucwords( strtolower( $title ) );
}

add_filter( 'title_save_pre', 'clean_post_title' );

Functia clean_post_title e ceea care face toata treaba. Ia ca paremetru un string, il transforma in lowercase cu functia strtolower, dupa care cu functia ucwords transform primele litere a titlului din fiecare cuvant in litere mari. Dupa care adaug un filtru de wordpress inainte de a salva titlul in baza de date.

Acum e simpli, daca dau copy+paste la un titlu gen : “MAMA ARE MERE”, atunci cand se salveaza postul ( atunci cand dai Publish sau Update ) automat titlul se transforma in forma : “Mama Are Mere”.

Mie, cel putin mi se pare mai… placut.

PS: sa fac acest plugin si sa il submit celora de la wordpress.org ????

atat.