Newsgroup: it.comp.www.php
Titolo: primi esperimenti con php e mysql

ciao, mi sto cimentando in questo script che dovrebbe semplicemente 
controllare nel db locale se username e password sono nel db.
 
in altro file c'è solo il form html che raccoglie i dati in $_POST
 
questo è il codice:
 
<html>
<head>
	<title>accesso al DB mySql</title>
</head>
<body>
 
<?php
	// recupero i dati e li metto nelle due variabili
	$userName = $_POST["userName"];
	$pwd =  $_POST["pwd"];
 
	// testo la connessione al db con la seguente funz che restituisce true 
o false
	// e lo memorizzo nella variabile $conn
 
	$conn = mysql_connect("localhost","root","root");
 
	if (!$conn) {
		die("connessione al server non riusciuta, riprova tra poco.");
	}
	else {
		echo "<br />connessione al DB riuscita<br />";
		$sql = "select * from accesso where userName='$userName' and pws='$pwd'";
		$result = mysql_query($sql);
 
		echo "<br />hai inserito $userName e $pwd. Ora controllo se sono 
ok...<br />";
 
		echo "$sql";
 
		print_r($result);
 
 
		if (mysql_select_db('utenti')) {
			if (mysql_num_rows($result) > 0) {
				echo "Login avvenuto con successo. Puoi proseguire...";
			}
			else {
				echo "ATTENZIONE: username o password errate. Riprovare.";
			}
		}
	}
 
  ?>
 
</body>
</html>
 
 
 
 
 
 
 
questo il risultato dell'esecuzione:
 
 
 
Deprecated: mysql_connect(): The mysql extension is deprecated and will 
be removed in the future: use mysqli or PDO instead in 
/Applications/MAMP/htdocs/sfida/accessoDB/controlloDB.php on line 15
 
connessione al DB riuscita
 
hai inserito ae e albertino. Ora controllo se sono ok...
select * from accesso where userName='ae' and pws='albertino'
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean 
given in /Applications/MAMP/htdocs/sfida/accessoDB/controlloDB.php on 
line 33
ATTENZIONE: username o password errate. Riprovare.
 
 
 
La mia domanda è la seguente: ma il warning che cosa significa?
Inoltre, visto che username e password inseriti sono corretti, perchè mi 
dice che non lo sono?
 
 
 
grazie.
 
D4
 

ti dovresti concentrare sulla risposta:
Deprecated: mysql_connect()
Per i tuoi primi esperimenti stai utilizzando manuali obsoleti.
Per warning sembra che alla linea 33 aspetti un valore booleniano.
Saluti
Leonardo

-- 
Non sono su facebook
Se anche tu vuoi cancellarti
http://www.giardiniblog.com/come-cancellarsi-da-facebook-eliminare-account/
 

 
 
In pratica la mysql_query ha fallito e ritornato FALSE. Devi spostare la
if (mysql_select_db('utenti'))
prima della
$result = mysql_query($sql);
(e cambiare mysql_connect con PDO, vedere la documentazione su 
php.net
).
 

 /Applications/MAMP/htdocs/sfida/accessoDB/controlloDB.php on line 15
 
E questo è il motivo della lezione 2 :)
Oltre che, come vedi, il codice è molto più pulito e sicuro senza molto 
impegno.
 
Bye.

 Per i tuoi primi esperimenti stai utilizzando manuali obsoleti.
 
sì, me ne sono accorto e sto cercando di recuperare.
Ma oltre a 
php.net
 ci sono altre risorse?
 
Il mio obiettivo non è diventare un esperto sviluppatore php, vorrei 
solo capire certe logiche dietro a wordpress.
 
grazie

 5: non salvare le password in chiaro. E nemmeno in md5
 
cioè? intendi dire che il valore della stringa non dovrebbe essere 
memorizzato in una variabile come ho fatto? dove posso approfondire?

Ti ringrazio, sono purtroppo ancora agli inizi e non mi è chiaro tutto 
quel codice. Dovrei tornare a studiare ma a questo punto mi chiedo da 
dove iniziare...
 
Grazie mille dei consigli
 
 

 solo capire certe logiche dietro a wordpress.
 
Occhio a non presupporre la conoscenza di Wordpress sulla conoscenza di PHP.
Wordpress Ãš un CMS il cui codice Ãš, come dire, certamente non
adatto a chi non mastica PHP non bene ma benissimo. Ergo,
meglio imparare bene prima il linguaggio con cui Ãš
codificato il software in analisi, e poi si puÃ² procedere
a capire come modificarlo.
 
 


 
Se davvero vuoi "diventare un esperto sviluppatore php" la prima cosa da 
fare è lasciare perdere wordpress.
wordpress è un CMS.
In informatica un Content Management System, in acronimo CMS (in 
italiano sistema di gestione dei contenuti), è uno strumento software, 
installato su un server web, il cui compito è facilitare la gestione dei 
contenuti di siti web, svincolando il webmaster da conoscenze tecniche 
specifiche di programmazione Web.
In pratica, con wordpress, ti danno dei moduli già pronti, più o meno 
sofisticati, li monti ed il gioco è fatto.
Al limito puoi anche non sapere che linguaggi usano.
I veri esperti in informatica sono coloro che questi questi moduli li 
scrivono e quegli sviluppatori che fanno siti in php/mysql di sana 
pianta senza CMS.
Semmai, poi adoperano dei pezzi precostruiti nei propri siti, ma con 
cognizione di causa.
Il discorso sarebbe lungo.
Saluti
Leonardo


 wordpress è un CMS.
 
Avevo scritto "non è diventare..."  ;)
Comunque il tuo discorso è chiarissimo.
 
Grazie.
 

 }
 
ok
 
 
 


Quello che inizialmente dovresti fare, se già non lo hai fatto, è capire 
e gestire i database.
Questo indipendentemente del tipo di db, non c'è solo MySql.
Per esempio il mio primo approccio, anni fa, fu con Access, ma la logica 
è la stessa.


 }
 
copiato paro paro, mi da questo errore:
Parse error: syntax error, unexpected '{'  ...nella riga seguente


 solo capire certe logiche dietro a wordpress.
 
Se vuoi capire veramente wordpress, prima dovresti diventare almeno un 
"semi-esperto programmatore php".
 
Per quanto abbia fama di essere un accrocchio che sta in piedi con lo 
sputo, in realtà ha una sua logica e un suo sistema di programmazione 
dietro.
 
Se ti interessa capire come creare estensioni, ti conviene leggerti le 
pagine per sviluppatori sul sito wordpress.
 
Mi pare che WP astragga l'accesso al DB tramite sue funzioni, in modo da 
mantenere coerenza dei dati.
 
Bye.

 Non si poteva fare la stessa cosa su $result ?
 
No, result ti torna solo lo stato della chiamata. Il codice di errore, in 
pratica.
 
Bye.

> if (password_verify($_POST['pwd'], $users[0]['psw']) {
 
Ho dimenticato di chiudere una parentesi tonda alla fine
 
if (password_verify($_POST['pwd'], $users[0]['psw'])) {
 
Bye.