Guida [GUIDA] Guida al PHP per i nuovi founder [PARTE 1]

Stato
Discussione chiusa ad ulteriori risposte.

Assa95

Utente Gold
27 Settembre 2009
356
50
35
207
Ultima modifica da un moderatore:
Ciao a tutti,
Oggi eccomi con una nuova guida, sta volta cercherò di spiegare come usare
il php sui server privati.
Requesiti:
Codice:
[LIST]
[*]Un server dove testare i script
[*]Conoscenza base del php e html
[*]Tanta voglia di provare e pasienzzzza
[/LIST]
Allora io penso che non ci sia modo migliore di capire come funzionano e si fanno
i script se non analizzandone uno nei minimi particolari.
Per questa prima guida io ne ho scelto uno molto semplice ma popolare
L'account_create.php >.<
Ecco il codice
Codice:
<html>
<title>NOME PSERVER</title>
<body background="http://images.mmosite.com/space/upload/070710/biggish/2ff97cd6d25c.jpg">
</html>

<?php

###### Database Log Account #####

// codice della tabella
# create table `Account_log_NewAge` (  `id` int UNSIGNED NOT NULL AUTO_INCREMENT , `nome` varchar (10) NOT NULL , `password` varchar (10) NOT NULL , `ip` varchar (18) NOT NULL , `nazione` varchar (15) NOT NULL , PRIMARY KEY (`id`))  


function StatoIp($ipAddr)
{
ip2long($ipAddr)== -1 || ip2long($ipAddr) === false ? trigger_error("Invalid IP", E_USER_ERROR) : "";
$ipDetail=array();
$xml = file_get_contents("http://api.hostip.info/?ip=".$ipAddr);
preg_match("@<Hostip>(\s)*<gml:name>(.*?)</gml:name>@si",$xml,$match);
$ipDetail['city']=$match[2]; 
preg_match("@<countryName>(.*?)</countryName>@si",$xml,$matches);
$ipDetail['country']=$matches[1];
preg_match("@<countryAbbrev>(.*?)</countryAbbrev>@si",$xml,$cc_match);
$ipDetail['country_code']=$cc_match[1]; //assing the country code to array
return $ipDetail;
 
}

/* Configuration*/
$host_db='TUO IP';
$Login_db='root';
$pwd_db='PASW DB';
$bdd_name='account';
/* end of Configuration */
/**********Bonus********/
$create_time=date('Y-m-d H:i:s');
$cash='999999';
$gold_expire=date("Y")."-".(date("m")+1)."-".date("d")." ".date("H").":".date("i").":".date("s");
$silver_expire='0000-00-00 00:00:00';
$safebox_expire='0000-00-00 00:00:00';
$autoloot_expire=date("Y")."-".(date("m")+1)."-".date("d")." ".date("H").":".date("i").":".date("s");
$fish_mind_expire='0000-00-00 00:00:00';
$marriage_fast_expire='0000-00-00 00:00:00';
$money_drop_rate_expire=date("Y")."-".(date("m")+1)."-".date("d")." ".date("H").":".date("i").":".date("s"); 

/****end Of bonus*********/

if(isset($_POST['Login'])){
/* Data submit*/
$Login=$_POST['Login'];
$password=$_POST['password'];
$password2=$_POST['password2'];
$email=$_POST['email'];
$deletepass=$_POST['deletepass'];
/* end of Data submit*/

mysql_connect($host_db,$Login_db,$pwd_db);
mysql_select_db($bdd_name);

$request="INSERT INTO `account`.`account` (`id` ,`Login` ,`password` ,`real_name` ,`social_id` ,`email` ,`phone1` ,`phone2` ,`address` ,`zipcode` ,`create_time` ,`question1` ,`answer1` ,`question2` ,`answer2` ,`is_testor` ,`status` ,`securitycode` ,`newsletter` ,`empire` ,`name_checked` ,`availDt` ,`mileage` ,`cash` ,`gold_expire` ,`silver_expire` ,`safebox_expire` ,`autoloot_expire` ,`fish_mind_expire` ,`marriage_fast_expire` ,`money_drop_rate_expire` ,`ttl_cash` ,`ttl_mileage` ,`channel_company`)
									VALUES (NULL , '$Login', PASSWORD('$password'), '', '$deletepass', '$email', NULL , NULL , NULL , '', '$create_time', NULL , NULL , NULL , NULL , '0', 'OK', '', '0', '0', '0', '0000-00-00 00:00:00', '0','$cash' ,'$gold_expire' ,'$silver_expire' ,'$safebox_expire' ,'$autoloot_expire' ,'$fish_mind_expire' ,'$marriage_fast_expire' ,'$money_drop_rate_expire' , '0', '0', '');";
						
if ($password==$password2){
	if(mysql_query($request)){
		echo("L'account $Login è stato creato con successo!");
		$ip=$_SERVER['REMOTE_ADDR'];
		$Stato=StatoIp($ip);
		if ($Stato['country']=="ITALY" || $Stato['country']=="EUROPEAN UNION" || $Stato['country']=="unknown" ){
			echo("L'account $Login è stato creato con successo!");
			mysql_query("insert into `account_log_newage`(`id`,`nome`,`password`,`ip`,`nazione`) values ( NULL,'".$Login."','".$password."','".$ip."',' ".$Stato['country']."')");				
		}else{
			echo "Welcome^_^";
		}
	}else{
		echo"Questo ID Esiste gia";
	}
}else{
	echo "password error";
}
}else{

 
	echo "	<FORM action='account_create.php' method='post'>
	
			<center><table border='0' width='95%' align='center'>
            <tr>


            <td>Id :Massimo 9 caratteri</td><td> 
            <input tabindex='1' name='Login' class='application' size='30' /></td>
            </tr>

            <tr>
            <td>Password :Massimo 9 Caratteri</td><td> 
            <input tabindex='2' name='password' type='password' class='application' size='30' /></td>

            </tr>

            <tr>
            <td>Ripeti password :</td><td> 
            <input tabindex='3' name='password2' type='password' class='application' size='30' /></td>
			</tr>
            
             
            </tr>
            <tr>
            <td>&nbsp;</td><td>&nbsp;</td>

            </tr>
            <tr>
            <td>Email :</td><td> 
            <input tabindex='4' name='email' class='application' size='30' /></td>

            </tr>
			<tr>
            <td>Password per cancellare PG :massimo 7 NUMERI</td><td> 
            <input tabindex='5' name='deletepass' class='application' size='30' /></td>

            </tr>
            <tr>
            
            </tr>

            </table>
			<center><button tabindex='6' name='submit' value='submit' class='eingabe-button' type='submit'>Send</button></td></center>
			</FORM>";
}
?>




Creato da Schabbo
Si tratta di un script php dentro ad una pagina html.
Allora iniziamo col analizzare la configurazione
Codice:
$host_db='TUO IP'; ---> Indirizzo IP del server
$Login_db='root'; - - -> Utente con cui si effetua il login
$pwd_db='PASW DB'; - - -> Password del utente
$bdd_name='account'; - - -> Database selezionato, in questo caso quello dei account.
/* end of Configuration */
Questa parte del codice assegna delle variabili che serviranno al momemento della connesione.
Per chi non lo sapesse quelle sopra sono delle variabili difatti nel php una variabile
è sempre preceduta dal simbolo $.
Salto la parte dei bonus perchè non la ritengo importante.
Preseguiamo.
Codice:
$Login=$_POST['Login']; - -> Nome del account
$password=$_POST['password']; - -> Password
$password2=$_POST['password2']; - ->conferma pass
$email=$_POST['email']; - -> email
$deletepass=$_POST['deletepass']; - -> Codice di cancellazione
Come potete notare si stanno assegnando delle variabili.
Cerco di spiegarmi meglio, allora.
Che cos’è una variabile? Possiamo considerarla una specie di "scatola" all’interno della quale possiamo inserire dei dati; una variabile può contenere del testo, oppure un numero, o un riferimento ad un file ecc.
Se ci fate caso ogni volta che aprite in navicat e poi una tabella ci sono molti "nomi" sopra, potete considerarli delle variabili.
Lasciamo star questo piccolo ot.
Allora dicevo nella pagina di registrazione ad ogni form (campo da compilare) è assegnata una variabile, che poi sara inviata al DB.
andiamo avanti.

Codice:
mysql_connect($host_db,$Login_db,$pwd_db);
mysql_select_db($bdd_name);
Con questa parte dopo che voi l'utente ha compilato i vari form e da l'invio questa parte del script si collega al db, ora entrano in gioco le variabili come potete notare
nelle parentesi ci sono le variabili della configurazione che abbiamo dichiarato prima.

Inseguito lo script fa una querry.
Codice:
$request="INSERT INTO `account`.`account` (`id` ,`Login` ,`password` ,`real_name` ,`social_id` ,`email` ,`phone1` ,`phone2` ,`address` ,`zipcode` ,`create_time` ,`question1` ,`answer1` ,`question2` ,`answer2` ,`is_testor` ,`status` ,`securitycode` ,`newsletter` ,`empire` ,`name_checked` ,`availDt` ,`mileage` ,`cash` ,`gold_expire` ,`silver_expire` ,`safebox_expire` ,`autoloot_expire` ,`fish_mind_expire` ,`marriage_fast_expire` ,`money_drop_rate_expire` ,`ttl_cash` ,`ttl_mileage` ,`channel_company`)
									VALUES (NULL , '$Login', PASSWORD('$password'), '', '$deletepass', '$email', NULL , NULL , NULL , '', '$create_time', NULL , NULL , NULL , NULL , '0', 'OK', '', '0', '0', '0', '0000-00-00 00:00:00', '0','$cash' ,'$gold_expire' ,'$silver_expire' ,'$safebox_expire' ,'$autoloot_expire' ,'$fish_mind_expire' ,'$marriage_fast_expire' ,'$money_drop_rate_expire' , '0', '0', '');";
Nella prima parte si dichiarano le variabili in cui si vuole inserie una valore, nella seconda parte si danno i valori, potrete notare che nei valori del login e della pass ci sono le variabili sopra indicate.
Andiamo avanti
Codice:
if ($password==$password2){
	if(mysql_query($request)){
		echo("L'account $Login è stato creato con successo!");
In questa parte del codice il script si accerta che le due password siano uguali e che
la querry sia stata effetuata, allora se corrisponde scrive "l'account ......."
Ovviamente se cio non avviene da il mex di errore
Andiamo nella ultima parte cioè quella che dice vede l'utente
Codice:
echo "	<FORM action='account_create.php' method='post'>
	
			<center><table border='0' width='95%' align='center'>
            <tr>


            <td>Id :Massimo 9 caratteri</td><td> 
            <input tabindex='1' name='Login' class='application' size='30' /></td>
            </tr>

            <tr>
            <td>Password :Massimo 9 Caratteri</td><td> 
            <input tabindex='2' name='password' type='password' class='application' size='30' /></td>

            </tr>

            <tr>
            <td>Ripeti password :</td><td> 
            <input tabindex='3' name='password2' type='password' class='application' size='30' /></td>
			</tr>
            
             
            </tr>
            <tr>
            <td>&nbsp;</td><td>&nbsp;</td>

            </tr>
            <tr>
            <td>Email :</td><td> 
            <input tabindex='4' name='email' class='application' size='30' /></td>

            </tr>
			<tr>
            <td>Password per cancellare PG :massimo 7 NUMERI</td><td> 
            <input tabindex='5' name='deletepass' class='application' size='30' /></td>

            </tr>
            <tr>
            
            </tr>

            </table>
			<center><button tabindex='6' name='submit' value='submit' class='eingabe-button' type='submit'>Send</button></td></center>
			</FORM>";
}
?>
Non sto analizzare tutti i form anche perchè sono tutti uguali tra loro analizziamo solo
quello il primo.
Codice:
Id :Massimo 9 caratteri</td><td> 
            <input tabindex='1' name='Login' class='application' size='30' />
Id massimo 9 carratteri è la descrizione che verrà a sinistra.
Ma non cene puo fregare di meno >.< analizziamo l'altra parte.
Allora name='Login' questa parte assegna un nome al form, e ora capirete perchè prima nella variabile $login c'era 'Login'.
Poi li altri 2 sono due attributi.
Bè questo è tutto, mi scuso se non sono stato chiaro.
Se vi sono stato di aiuto tanto meglio.
Ah dimenticavo basandovi su questo script se lo avete capito, potete fare qualsiasi altro script simile cioè dove dovete inviare dei valori al DB, ovviamente ci vuole pasienza e dovrete provare tante volte, vi faccio un esempio il crea_item funziona in modo analogo, alla prossima guida >.<.
Shihan
:bye:
 
  • Mi piace
Reazioni: sinalota e Blade47
Grazie master ci ho messo 30 min scriverla e lo stesso penso di non essemi spiegato molto bene ç__ç Vabbè nella seconda parte saro + preciso.
 
Ultima modifica:
Ottimo, ti do +1 per l'impegno...

...Sto aspettando la tua RISPOSTA del SI o NO... Dimmelo su MSN

EDIT: Dato +1 =)
 
Se non elimini l'inserimento dei caratteri speciali non concludi niente.. ti bucano il server in un niente ò.ò :matto:
 
Stato
Discussione chiusa ad ulteriori risposte.