Domanda Pagina di registrazione

Stato
Discussione chiusa ad ulteriori risposte.

GoddinoUD2

Utente Electrum
4 Luglio 2017
355
37
55
155
Salve community
come da titolo sono alla ricerca di una pagina di registrazione per il mio server
ho uno script per la pagina di registrazione
ma ogni dato che metto
anche se accedendo con navicat vedo che l'account non esiste
mi dice
"questo id esiste già"
è un semplice script di connessione al database con inserimento dati..
vi posto lo script
<html>
<head>
<link rel="shortcut icon" href="/images/favicon.png">
<title>CompanyLOTS - Registrazione</title>
</head>
<body style="background: [HASHTAG]#000000[/HASHTAG] url('background.jpg') 50% 0 no-repeat;">
<?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='IP DEL MIO SERVER DEDICATO';
$Login_db='root';
$pwd_db='PASSWORD DEL MIO DATABASE';
$bdd_name='account';
/* end of Configuration */
/**********Bonus********/
$create_time=date('Y-m-d H:i:s');
$cash='999999';
$gold_expire=(date("Y")+100)."-".date("m")."-".date("d")." ".date("H").":".date("i").":".date("s");
$silver_expire=(date("Y")+100)."-".date("m")."-".date("d")." ".date("H").":".date("i").":".date("s");
$safebox_expire=(date("Y")+100)."-".date("m")."-".date("d")." ".date("H").":".date("i").":".date("s");
$autoloot_expire=(date("Y")+100)."-".date("m")."-".date("d")." ".date("H").":".date("i").":".date("s");
$fish_mind_expire=(date("Y")+100)."-".date("m")."-".date("d")." ".date("H").":".date("i").":".date("s");
$marriage_fast_expire=(date("Y")+100)."-".date("m")."-".date("d")." ".date("H").":".date("i").":".date("s");
$money_drop_rate_expire=(date("Y")+100)."-".date("m")."-".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 "Benvenuto su CompanyLOTS";
}
}else{
echo"Questo ID Esiste gia'";
}
}else{
echo "Password Errata";
}
}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'>Registrati</button></td></center>
</FORM>";
}
?>
</body>
</html>
 
Significa che non va a buon fine la query. Dopo il mysql_query mettici anche un echo(mysql_error()); temporaneo per vedere l'errore e prosegui.
 
Premettendo che non conosco il php , ti do una dritta giusto per sapere se almeno la connessione al server mysql avviene con successo.

PHP:
Sotituisci:

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

con :

if(mysql_connect($host_db,$Login_db,$pwd_db))
{
    echo "Sei connesso al server mysql.";
}
else
{
    echo "Non sei riuscito a connetterti al server mysql";
}
 
Cattura.webp
neanche so di chi è quell'ip..
dato che non è ne il mio, ne del server
mi risulta che è un ip di londra...
 
Ultima modifica:
Per connettersi tramite un user mysql bisogna rispettare 3 parametri.

User corretto
Password corrispondente a quel' user
Ip concesso a quel'user.
Per rendere utilizzabile da un dato user qualsiasi ip , basta inserire "%" al posto dell ip nella tabella user del database mysql (puoi farlo da navicat)
Sarebbe preferibile creare un apposito user da usare per il sito , con ip utilizzabile inserisci l ip del sito
 
Per connettersi tramite un user mysql bisogna rispettare 3 parametri.

User corretto
Password corrispondente a quel' user
Ip concesso a quel'user.
Per rendere utilizzabile da un dato user qualsiasi ip , basta inserire "%" al posto dell ip nella tabella user del database mysql (puoi farlo da navicat)
già fatto
e ho anche concesso tutti i privilegi al db "account" a root@%
ma niente da fare
mi da
"Questo ID esiste già"
 
l'IP che ti usciva era quello del gateway del webhost che stai usando.
Comunque, hai messo l'istruzione che ti ho suggerito prima? Non ti esce niente?
Hai provato a guardare nell'error_log?
 
mi esce quella stringa di accesso negato
Allora sistema i permessi per l'account che stai usando per connetterti e verifica che la password sia corretta.
Devi fare in modo che esista un'account mysql che possa collegarsi dal tuo sito.

gli error_log li trovo nella cartella db di winscp?
Non vedo cosa c'entri una cartella winscp. L'error_log del webserver lo dovresti trovare da qualche parte nel webhost, dipende da come l'ha configurato il tuo provider. Non ti compare magicamente in una cartella di un software installato sul tuo PC.
 
i permessi li ho sistemati ieri
mi dava infatti che sono riuscito a collegarmi al database mysql
ma mi dava comunque "Questo ID esiste già"

Per quanto riguarda gli error logs
non mi trova error logs sul mio webhost
nel senso
la sezione per gli error log c'è
ma vuota
 
Se non ti esce altro significa che non hai messo l'istruzione che ti avevo detto al posto giusto. Mi sembra ovvio che il problema è in questa query:

$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', '');";

Metti
echo(mysql_error());
Prima di
echo"Questo ID Esiste gia'";
 
Posta la struct della tabella account , potrebbe darsi che la query non riesce perchè una delle colonne della query non esiste oppure manca l'assegnazione di una colonna che non possiede un valore di default (e quindi va per forza indicato nella query insert).

Il vero modo di conoscere l'errore è farselo printare come detto da iltizio
 
Sei connesso al server mysql.
Field 'last_play' doesn't have a default value
Questo ID Esiste gia
ecco l'errore che mi da, last play, come lo risolvo?
 
Posta la struct della tabella account , potrebbe darsi che la query non riesce perchè una delle colonne della query non esiste oppure manca l'assegnazione di una colonna che non possiede un valore di default (e quindi va per forza indicato nella query insert).

Il vero modo di conoscere l'errore è farselo printare come detto da iltizio
(`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`, `last_play`, `coins`, `drs`, `web_admin`, `web_ip`, `web_aktiviert`, `passlost_token`, `passchange_token`, `emailchange_token`, `new_email_change`, `new_email_change2`, `stergere_account`, `unban_date`, `motiv_ban`, `jcoins`, `reason`, `kwix_coins`, `kwix_admin`, `kwix_chm`, `kwix_chm_code`, `donation`, `type1_active`)
 
Lascia stare questa pagina di registrazione.. è più vulnerabile di DVWA

Usa questa che feci tempo fa: https://www.inforge.net/xi/threads/aiuto-uppare-solo-account_create-php.444451/#post-4394635
Fa un po' schifo il modo in cui è scritto ma meglio di questa e del resto presente in giro.

PS: comunque il problema è sicuramente dovuto dal fatto che non trova tutte le nuove colonne come ttl_cash, ttl_mileage, channel_company, newsletter ecc non presenti nella struttura base della tabella account.
 
Lascia stare questa pagina di registrazione.. è più vulnerabile di DVWA

Usa questa che feci tempo fa: https://www.inforge.net/xi/threads/aiuto-uppare-solo-account_create-php.444451/#post-4394635
Fa un po' schifo il modo in cui è scritto ma meglio di questa e del resto presente in giro.

PS: comunque il problema è sicuramente dovuto dal fatto che non trova tutte le nuove colonne come ttl_cash, ttl_mileage, channel_company, newsletter ecc non presenti nella struttura base della tabella account.
testato, ma non funge
mi porta a una pagina
Errore HTTP 500
 
Abilita la modalità debug rimuovendo i commenti nelle prime righe della pagina, ovvero, cerca:

PHP:
/*
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
*/

sostituisci con:

PHP:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

e vedi che errore da
 
Abilita la modalità debug rimuovendo i commenti nelle prime righe della pagina, ovvero, cerca:

PHP:
/*
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
*/

sostituisci con:

PHP:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

e vedi che errore da
Cattura.webp
 
Hai fatto le modifiche che ti ho detto? Dovrebbe darti l'errore specifico. Se no controlla se è presente un file chiamato error_log tra i file del tuo spazio web
 
Stato
Discussione chiusa ad ulteriori risposte.
Indietro
Top Bottom