[hack] PHP
Giorgia
isaacasimov_sf@tin.it
Mer 12 Maggio 2004 11:10:33 CEST
Alle 19:40, martedì 11 maggio 2004, John Doe ha scritto:
> > Giorgia <isaacasimov_sf@tin.it> ha scritto:
> > > Ragazzi c'è qualcuno in lista che sa programmare in PHP e può dare
> > > qualche consiglio ad una newbie imbranata che si sta incasinando la
> > > vita?
> >
> > Io nn lo conosco bene, però se posti il problema magari una dritta
> > qualcuno riesce a dartela.
> >
> Dipende da cosa devi fare, ho delle conoscenze ma limitate a "devo fare
> questo, come faccio?" :P
Ci provo. Dovrebbe essere una cosa abbastanza banale.
Però questa mail sarà lunghina (ehm).
Allora: devo fare un sito dinamico dove si accede tramite login (eh :)).
I vari script sono ovviamente incasinati da una serie di roba HTML, quindi vi
posto solo le cose importanti.
Questo è il "sunto" dello script che viene incluso in quasi tutte le pagine e
che contiene poi tutti i dati per la connessione al DB. Troverete un user
"controllore" che ha solo i privilegi necessari per controllare user e
password e di cui poi non ci interessa più nulla e la cui connessione verrà
chiusa. clname è il cliente e owname è un owner con qualche privilegio in più
sul DB.
(file di nome include/secret.php)
<?php
function connetti($permessi)
{
$genUser="genuser";
$genPass="genpass";
$ClName="clname";
$ClPass="clpass";
$OwName="owname";
$OwPass="owpass";
switch($permessi)
{
case "controllore":
$con=@mysql_connect($HTTP_HOST,$genUser,$genPass);
break;
case "cliente":
$con=@mysql_connect($HTTP_HOST,$ClName,$OwName);
break;
case "owner":
$con=@mysql_connect($HTTP_HOST,$OwName,$OwPass);
break;
default:
$con=-1;
break;
}
if($con!=-1)
@mysql_select_db("aidaVideo");
return $con;
}
?>
Ecco la sezione per il login, che funziona alla perfezione:
(file di nome login.php)
<?php
session_start();
require("include/secret.php");
if(!$nome || !$password)
{
Qui implemento un messaggino d'errore, cmq il vero controllo iniziale
avverrà a livello JavaScript
}
else
{
$nome=addslashes("$nome");
$password=addslashes("$password");
$k0=connetti("controllore");
if($k0==-1)
{
Implemento un altro messaggio di errore, vabbé :)
}
else
{
$sql='SELECT username,password,tipologia,id FROM clienti WHERE
username="'.$nome.'" AND password="'.$password.'"';
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
if($row[0]==$nome && $row[1]==$password)
{
if($row[2]=="cliente" || $row[2]=="fornitore")
{
$k1=connetti("cliente");
if($k1==-1)
{
Ennesimo messaggino d'errore...
}
... insomma continua, e funziona: assegna poi a $_SESSION varie cose che
voglio mantenermi durante la sessione, così:
$_SESSION['loggato']=1;
$_SESSION['permessi']="cliente";
$_SESSION['id']=$row[3];
$_SESSION['user']=$row[0];
Eccoci adesso alla parte incriminata.
Qui ci sono due script, uno che è chome.php, dove in realtà c'è solo uno
"scheletro" html con qualche funzioncina che mi serve per scrivere Benvenuto
Tizio e cavolate del genere. Vi posto l'incipit giusto per conoscenza:
(file di nome chome.php)
session_start();
if($_SESSION['loggato']==1 && $_SESSION['permessi']=="cliente")
{
echo '<div class="intestazionesx"><p>Benvenuto
'.$_SESSION['user'].'!</p></div>
require("cvideo.php");
}
else
{
Messaggino che avverte che non si hanno i permessi per accedere all'area
riservata... ok, niente di che :)
}
Ma eccoci allo script che mi dà problemi, e che è incluso nel precedente
ovvero il cvideo.php:
(file di nome cvideo.php)
<?php
if($_SESSION['loggato']==1)
{
session_start();
require("include/secret.php");
$k=connetti("cliente");
$sql="SELECT video.titolo, testata.descrizione, testata.edizione,
edizione.data, video.coda, video.path FROM video, testata, edizione,
cntr_video WHERE video.id_cliente=".$_SESSION['id']." AND
video.id_testata=testata.id AND video.id_edizione=edizione.id AND
cntr_video.id_cliente=".$_SESSION['id']." ORDER BY edizione.data";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
}
//c'è tanta altra roba implementata, ma si tratta di html e comunque
funzionano tutte.
Ecco, in quest'ultimo script ci dovrebbe essere l'errore. Facendo login e
entrando nella pagina, mi viene scritto:
Warning: mysql_query(): Access denied for user: 'apache@localhost' (Using
password: NO) in /var/www/html/aida/cvideo.php on line 17
Warning: mysql_query(): A link to the server could not be established in
/var/www/html/aida/cvideo.php on line 17
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result
resource in /var/www/html/aida/cvideo.php on line 18
Perchè? Dove sbaglio? Lo so che è di sicuro una cavolata immonda...
Voi sapete?
Invece di farmi la connessione prendendo connetti("cliente"), tenta di
connettermi con Apache. Ho fatto diverse prove, cambiando tante cose (prima
tentavo una pconnect e via dicendo) ma l'errore è sempre il solito e quindi
lo sbaglio è il MIO!
Che rabbia :)
--
Giorgia
_________________________________________________
La letteratura è ciò che amo di più.
Ma in questo momento avverto una
sorta di panico, di urgenza.
Sento il bisogno impellente di dare il
mio contributo contro la globalizzazione.
Per cambiare questo mondo.
(Arundhati Roy)
_________________________________________________
Maggiori informazioni sulla lista
golem-hack