acf è il miogliore secondo me!
- Home
- enricocarli
- Post
enricocarli
@enricocarli
Post creati da enricocarli
-
consiglio classe php
Salve a tutti,
sto scrivendo una classe che mi aiuta a fare semplici operazioni sul db, tipo scrivere, modificare o eliminare record, paginazione dei dati etc. è ancora work in progress, la potete vedere qui:
poi la estendo
modificando/aggiungendo quello che mi serve, l'idea è di gestire più database contemporaneamente.
uso la classe nei miei script così:
Per inserire un record nel db
bitbucket.org/enricocarli/hal9000/src/7aaf5f0251653690d29d703de757c4e9376bfa7f/inserire-record-nel-db.php?at=masterPer modificarlo
bitbucket.org/enricocarli/hal9000/src/7aaf5f0251653690d29d703de757c4e9376bfa7f/modifica-record-del-db.php?at=master&fileviewer=file-view-defaultPer paginare dati
bitbucket.org/enricocarli/hal9000/src/7aaf5f0251653690d29d703de757c4e9376bfa7f/estrarre-dati-e-paginarli.php?at=mastertutti i file potete vederli qui
bitbucket.org/enricocarli/hal9000/src/7aaf5f025165?at=masterla mia domanda è: è corretto usare le classi così?
le visibilità delle proprietà come si usano? io le ho messe tutte "public", è corretto?
grazie a tutti per le risposte e buon week end
-
RE: Consigli php
Ciao enigma, grazie per la risposta intanto, scusa ma sono un novellino col php; scrivo php procedurale, uso le funzioni ma vorrei passare alla oop, credo sia meglio conoscere come funziona, comunque il codice sopra è un esempio, vorrei solo capire come e quando usare la oop. Grazie mille intanto e buona serata
-
RE: Consigli php
Anzi ancora meglio:
[PHP]
<?php
class Examples{
private $db;public function __construct(){ $this->db = new mysqli('localhost', 'root', 'hal9000', 'examples'); } public function wolly($myquery,$myfields){ $array_query = array(); $array_fields = explode(",", $myfields); $query = $this->db->query($myquery); $i = 0; while ($row = $query->fetch_array(MYSQLI_ASSOC)){ foreach ($array_fields as $field) { $array_query*[$field] = $row[$field]; } $i++; } return $array_query; } public function __destruct(){ mysqli_close($this->db); } } class Codeigniter{ private $db; public function __construct(){ $this->db = new mysqli('localhost', 'root', 'hal9000', 'myapp_moto'); } public function wolly($myquery,$myfields){ $array_query = array(); $array_fields = explode(",", $myfields); $query = $this->db->query($myquery); $i = 0; while ($row = $query->fetch_array(MYSQLI_ASSOC)){ foreach ($array_fields as $field) { $array_query*[$field] = $row[$field]; } $i++; } return $array_query; } public function __destruct(){ mysqli_close($this->db); } } $attori = new Examples(); echo "<pre>"; print_r($attori->wolly('SELECT * FROM actor LIMIT 5','actor_id,fullname,last_update')); echo "</pre>"; $news = new Codeigniter(); echo "<pre>"; print_r($news->wolly('SELECT * FROM articoli LIMIT 5','id,titolo,sottotitolo')); echo "</pre>";
?>
[/PHP]Così risparmio codice, meglio no?
-
RE: Consigli php
Grazie mille e scusate il ritardo nella risposta; sto sperimentando con php a oggetti; un esempio: vorrei fare un blog che pesca da 2 db; ho scritto queste classi:
myclass.php
[PHP]
<?php
class Examples{
private $db;public function __construct(){ $this->db = new mysqli('localhost', 'root', 'hal9000', 'examples'); } public function get_actors(){ $actors = array(); $query = $this->db->query('SELECT * FROM actor LIMIT 10'); while ($row = $query->fetch_array(MYSQLI_ASSOC)){ $actors[] = array( "id" => $row['actor_id'], "fullname" => $row['fullname'] ); } return $actors; } public function __destruct(){ mysqli_close($this->db); } } class Codeigniter{ private $db; public function __construct(){ $this->db = new mysqli('localhost', 'root', 'hal9000', 'myapp_moto'); } public function get_actors(){ $actors = array(); $query = $this->db->query('SELECT * FROM articoli LIMIT 10'); while ($row = $query->fetch_array(MYSQLI_ASSOC)){ $actors[] = array( "id" => $row['id'], "titolo" => $row['titolo'] ); } return $actors; } public function __destruct(){ mysqli_close($this->db); } } $attori = new Examples(); echo "<pre>"; print_r($attori->get_actors()); echo "</pre>"; $news = new Codeigniter(); echo "<pre>"; print_r($news->get_actors()); echo "</pre>";
?>
[/PHP]potrei includere la classe in tutte le view, e farmi un metodo per ogni view in base a quello che mi serve? è corretta una cosa del genere secondo voi?
grazie mille e buon week end
-
RE: passaggio da procedurale a oop
Ciao Jhon92,
ho una domanda, ma perchè estrai i dati con un metodo, e con un altro li stampi? Sicurezza?sto provando a scrivere delle classi, posto il codice così mi dici cosa ne pensei.
ciao e grazie!
[PHP]
<?php
class Examples{
private $db;public function __construct(){ $this->db = new mysqli('localhost', 'root', 'hal9000', 'examples'); } public function get_actors(){ $actors = array(); $query = $this->db->query('SELECT * FROM actor LIMIT 10'); while ($row = $query->fetch_array(MYSQLI_ASSOC)){ $actors[] = array( "id" => $row['actor_id'], "fullname" => $row['fullname'] ); } return $actors; } public function __destruct(){ mysqli_close($this->db); } } class Codeigniter{ private $db; public function __construct(){ $this->db = new mysqli('localhost', 'root', 'hal9000', 'myapp_moto'); } public function get_actors(){ $actors = array(); $query = $this->db->query('SELECT * FROM articoli LIMIT 10'); while ($row = $query->fetch_array(MYSQLI_ASSOC)){ $actors[] = array( "id" => $row['id'], "titolo" => $row['titolo'] ); } return $actors; } public function __destruct(){ mysqli_close($this->db); } } $attori = new Examples(); echo "<pre>"; print_r($attori->get_actors()); echo "</pre>"; $news = new Codeigniter(); echo "<pre>"; print_r($news->get_actors()); echo "</pre>";
?>
[/PHP] -
RE: Consigli php
io uso molto le funzioni, diciamo che è meglio usare classi e framework, ma nel frattempo posso pubblicare le mie pagine anche se sono in php procedurale giusto?
altra domanda, voi come strutturate le vostre applicazioni?
io faccio così:
nella root: index.php
[PHP]
<?php
include "inc/config.php";
include "inc/functions.php";if(isset($_GET['app'])){ if (in_array("views/".$_GET['app'].".php", $views)) { if (in_array("app/".$_GET['app'].".php", $app)) { include "app/".$_GET['app'].".php"; } include "views/".$_GET['app'].".php"; } else { echo "404"; } } else { if($current_url==$base_url){ if (in_array("app/".$default_view.".php", $app)) { include "app/".$default_view.".php"; } include "views/".$default_view.".php"; } else { echo "404"; } }
?>
[/PHP]in config.php
[PHP]
<?phpheader('Content-Type: text/html; charset=utf-8'); $views = glob('views/*.php'); $app = glob('app/*.php'); $default_view ="home"; function dbconn($type){ switch($type){ case "myapp_moto": ob_start(); ini_set('display_errors', 1); $db1 = mysql_connect("localhost", "root", "mysql"); mysql_select_db("myapp_moto", $db1); break; case "codeigniter": ob_start(); ini_set('display_errors', 1); $db2 = mysql_connect("localhost", "root", "mysql"); mysql_select_db("codeigniter", $db2); break; } }
?>
[/PHP]poi 2 cartelle "app" e "view" nella prima il codice php che estrae dati dal db e mette in un array,
e nella seconda le view che espongono i dati.Secondo voi è una strada corretta? come dovrei fare se volessi usare le classi?
grazie mille per le risposte
buona domenica -
RE: passaggio da procedurale a oop
Grazie mille x la risposta, scusa il ritardo ma non ho ricevuto la notifica. Do un occhio al codice e se ho dubbi ti chiedo. Buon week end e grazie ancora!
-
Consigli php
Salve a tutti,
Sono un appassionato di php, scrivo php procedurale, non so programmare a oggetti e non so usare framework.
La mia domanda è: pubblicare pagine web con php procedurale, è obsoleto? Sconsigliabile?
Grazie a tutti per le risposte
Buona serata -
passaggio da procedurale a oop
Buongiorno a tutti,
sono un appassionato dilettante di php, quel poco che ho fatto l'ho scritto sempre con php procedurale,
ora vorrei passare a php ad oggetti, per questo vorrei una delucidazione:prima scrivevo:
[PHP]
function utenti(){
$array_utenti = array();
$query_utenti = mysql_query("SELECT utenti.nome, utenti.cognome, utenti.foto, utenti.email, siti.url FROM utenti INNER JOIN utente_sito ON utenti.id = utente_sito.utente INNER JOIN siti ON siti.id = utente_sito.sito ORDER BY siti.url ASC");
while ($row = mysql_fetch_assoc($query_utenti)): $array_utenti[] = array(
"nome" => $row['nome'],
"cognome" => $row['cognome'],
"foto" => $row['foto'],
"email" => $row['email'],
"url" => $row['url']
);
endwhile;
$utenti = array();
foreach ($array_utenti as $utente) {
$utenti[] = array(
"nome" => $utente['nome'],
"cognome" => $utente['cognome'],
"foto" => $utente['foto'],
"email" => $utente['email'],
"url" => $utente['url']
);
}
return $utenti;
}
$utenti = utenti();
foreach ($utenti as $utente) {
echo $utente['url']."<br />";
echo $utente['nome']."<br />";
echo $utente['cognome']."<br />";
echo $utente['foto']."<br />";
echo $utente['email']."<hr>";
}
[/PHP]ora scrivo:
[PHP]
class Editor{
public function utenti(){
$array_utenti = array();
$query_utenti = mysql_query("SELECT utenti.nome, utenti.cognome, utenti.foto, utenti.email, siti.url FROM utenti INNER JOIN utente_sito ON utenti.id = utente_sito.utente INNER JOIN siti ON siti.id = utente_sito.sito ORDER BY siti.url ASC");
while ($row = mysql_fetch_assoc($query_utenti)): $array_utenti[] = array(
"nome" => $row['nome'],
"cognome" => $row['cognome'],
"foto" => $row['foto'],
"email" => $row['email'],
"url" => $row['url']
);
endwhile;
$utenti = array();
foreach ($array_utenti as $utente) {
$utenti[] = array(
"nome" => $utente['nome'],
"cognome" => $utente['cognome'],
"foto" => $utente['foto'],
"email" => $utente['email'],
"url" => $utente['url']
);
}
return $utenti;
}
}
$class_editor = new Editor();
$utenti = $class_editor->utenti();
foreach ($utenti as $utente) {
echo $utente['url']."<br />";
echo $utente['nome']."<br />";
echo $utente['cognome']."<br />";
echo $utente['foto']."<br />";
echo $utente['email']."<hr>";
}
[/PHP]secondo voi è corretto?
-
RE: unico login per più siti
Se facessi in questo modo secondo voi sarebbe un sistema sicuro?
sito primario:
[PHP]
<?php
/* UTENTE 1 */
$user_1 = "mario";
$password_1 = "1234";
$site1_1 = "localhost/TEST/sito1.com/";
$site2_1 = "localhost/TEST/sito2.com/";
$site3_1 = "localhost/TEST/sito3.com/";
echo sha1($user_1);
echo "<br />";
echo sha1($password_1);
echo "<br />";
echo sha1($site1_1);
echo "<br />";
echo sha1($site2_1);
echo "<br />";
echo sha1($site3_1);
echo "<hr>";/* UTENTE 2 */
$user_2 = "luigi";
$password_2 = "0000";
$site1_2 = "localhost/TEST/sito3.com/";
$site2_2 = "localhost/TEST/sito5.com/";
echo sha1($user_2);
echo "<br />";
echo sha1($password_2);
echo "<br />";
echo sha1($site1_2);
echo "<br />";
echo sha1($site2_2);
echo "<hr>";/* UTENTE 3 */
$user_3 = "toad";
$password_3 = "9999";
$site1_3 = "localhost/TEST/sito1.com/";
$site2_3 = "localhost/TEST/sito3.com/";
$site3_3 = "localhost/TEST/sito2.com/";
$site4_3 = "localhost/TEST/sito7.com/";
echo sha1($user_3);
echo "<br />";
echo sha1($password_3);
echo "<br />";
echo sha1($site1_3);
echo "<br />";
echo sha1($site2_3);
echo "<br />";
echo sha1($site3_3);
echo "<br />";
echo sha1($site4_3);?>
[/PHP]sito secondario:
[PHP]
<?php
$url = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
$uri = 'localhost/TEST/mysso';
$get = file_get_contents($uri);
$users = explode("<hr>", $get);
foreach ($users as $user) {
$users_ok = explode("<br />", $user);
$n_elementi = count($users_ok);
for ($i=0; $i < $n_elementi; $i++) {
if($i!=0 AND $i!=1){
if (sha1($url)==$users_ok*){
echo $users_ok*."<br>";
}
}
}
echo "<hr>";
}
?>
[/PHP]di fatto espongo tutti gli utenti con i siti a cui possono accedere nel sito primario,
usando sha1 così non mostro nulla, uso quel file per inserire nel db degli altri siti le coppie di user e password, magari usando un cron per tenerlo aggiornato.Secondo voi è corretto/sicuro?
ho scritto il codice in fretta ma dovrebbe capirsi in linea di massima,
poi inserirò form, sessioni e quello che manca.fatemi sapere
ciao -
unico login per più siti
Buongiorno,
volevo un'informazione: vorrei fare un unica pagina di login per più siti che risiedono in server diversi;
mi sembra si chiami sso questo sistema, qualcuno ha idea di come si possa fare una cosa del genere?Di fatto si crea un pannello d'inserimento di amministratori, con user e password,
se le credenziali sono corrette c'è un cookie per la sessione,
ma come si fa a fare in modo che entri anche negli altri siti che non risiedono nello stesso server?Si potrebbe memorizzare l'IP dell'amministratore una volta che le credenziali sono corrette ma poi?
Pensavo ma forse non è corretto, fare una pagina in php, che mostra gli IP degli amministratori una volta loggati,
poi con lo scrapping dagli altri siti fare un cookie che apra la sessione di login solo se hai l'IP corretto.è sbagliato vero? Qualcuno ha idee migliori?
grazie in anticipo
buon week end -
RE: problema insert query
ho risolto così:
[PHP]
$array_insert = array(); foreach ($array_col as $col) { if($col['key']!="PRI"){ $array_insert[] = $col['nome']; } } $array_value = array(); foreach ($array_col as $col) { if($col['key']!="PRI"){ $array_value[] = $_POST[$col['nome']]; } } $query_insert = mysql_query("INSERT INTO ".$_GET['table']." ( ".implode(',', $array_insert)." ) VALUES ( '". implode("','", $array_value). "')"); if($query_insert===1){ $insert = mysql_fetch_assoc($query_insert); }
[/PHP]
di fatto ho passato 2 array.
grazie mille per i suggerimenti
buona serata! -
problema insert query
Buongiorno a tutti,
ho questo codice:[PHP]
mysql_query("INSERT INTO ".$_GET['table']."(".
foreach ($array_col as $col) {
if ($col['key']!="PRI") {
echo $col['nome'].",";
}
}
.") values(".
foreach ($array_col as $col) {
echo $_POST[$col['nome']].",";
}
.")");
[/PHP]ma non inserisce nulla nel db;
sto facendo un piccolo crud, per quello il nome della tabella e i campi devono essere dinamici.
Qualcuno può aiutarmi?
grazie mille a tutti!
buona serata -
RE: Quesito
Grazie Pablito15,
ma allora che senso ha usare get?
quando si hanno richieste con tanti get ok,
ma se ne ho pochi, posso usare questa formula o sbaglio?
forse non è elegante?bho!
era così per curiositàgrazie mille
ciao!