Ir para conteúdo
  • Cadastre-se

Website Um probleminha com o Ajax... [atualizar página sem refresh]


Posts Recomendados

Diga em poucas palavras a base utilizada (Nome do servidor ou nome do website).

 

TFS 0.4

 

Base: 

 

Baiak New.

 

Qual erro está surgindo/O que você procura?

 

Bom, gostei do formato de construção de tópico para Suporte, portanto montarei nestes requisitos mesmo. Tentarei ser o mais sucinto possível..

 

Como o título do tópico já predispõe, estou com um pequeno problema (porém chato) no processo de desenvolvimento de meu Servidor, relacionado ao Ajax.

 

Com pouco conhecimento em PHP, mas com muita disposição para aprender o básico e esforço para não desistir em qualquer bug (rsrs) consegui obter um progresso de 70% no desenvolvimento do Server.

 

Acho até engraçado, que de tantos bug's que consegui resolver no Gesior que estou usando, logo esse bug do Ajax está me deixando impaciente.

 

Basicamente, no momento de criação de conta (e char também), me deparo com um problema nos "check's" dos requisitos do formulário. 

 

Para resumir, eu preencho o formulário de cadastro, porém só recebo uma resposta do site (em relação aos parâmetros válidos ou inválidos que podem conter em cada opção: Account Name, e-mail, Password, etc) depois de atualizar a página, ou seja, depois de clicar em "Submit" é que sou informado dos possíveis erros no preenchimento do formulário. Assim como também aqueles gif's do "X" e do "" que ficam ao lado de cada opção do formulário de cadastro (account name, e-mail, pass, etc) só mudam e se atualizam quando eu dou "Submit".

 

Com pouco tempo de pesquisa consegui chegar à informação de que é o "Ajax" o responsável por essa chamada em PHP que faz com que uma página "atualize" seu conteúdo sem que seja necessário dar "refresh" (F5) ou interagir com algum redirecionamento na mesma.

 

Você tem o código disponível? Se tiver publique-o aqui:

 

Tenho aqui no Gesior que estou usando, alguns arquivos relacionados ao Ajax, assim como os usuais createaccount.php e accountmanagement.php, são eles:

 

htdocs\pages\ajax_check_account.php

htdocs\pages\ajax_check_email.php

htdocs\pages\ajax_check_name.php

 

htdocs\account\ajax_accountname.php

htdocs\account\ajax_charactername.php

htdocs\account\ajax_email.php

htdocs\account\ajax_password.php

 

Como são muitos arquivos, diga-se de passagem, eu não vou quotar todos aqui já de começo de criação do tópico. Até porque não tenho o mínimo de informação necessária para ter por alto uma ideia de quais desses arquivos seriam os mais propícios a conter o problema/solução. Então deixarei para compartilhar tais arquivos quando algum membro do Forum se posicionar, e eventualmente pedir algum arquivo específico (ou todos rs).

 

Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.

 

Bom, para não deixar em branco essa parte do padrão de tópicos para Suporte, resolvi tirar uma screenshot básica (e pouco demonstrativa) da inércia do Ajax e por consequência dos "checkin's" da página de cadastro:

 

chato.thumb.png.b74e1148dda92ae37448a5b8b0183165.png

 

Não sei se fui inteligível na explicação do problema, até peço desculpas (estou sem dormir) por possíveis desleixos meus para com a prestatividade dos membros do Forum. Mas até que dá para ter uma noção objetiva do problema reparando nessa SS.. Nessa altura do campeonato (depois de colocar formatos inválidos no formulário de cadastro) eu já deveria obter uma resposta do sistema de "check" do site, né?

 

(OBS: No caso da screenshot, o "X" .gif ao lado das opções não está como está devido aos formatos inválidos que coloquei, mas desde o momento em que abro a página de cadastro ele já está lá, marcando invalidez onde não há nada também, tinha esquecido desse detalhe [que pode até ser ignorado caso se resolva a questão do refresh Ajax]) rs

 

Agradeço desde já à todos que se dispuserem a me ajudar nesse entrave. rs

 

Um bom final de semana à todos tibianos/programadores/desenvolvedores!

 

:bc33eb73e973094aabb3de74a61aa6df:

Link para o post
Compartilhar em outros sites
  • Respostas 11
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Tu precisas ver no teu createaccount.php qual função ele está executando em cada campo para descobrir o que o AJAX está recebendo como resposta do php. No gesior que eu tenho aqui, por exemplo, a funç

Posted Images

Tu precisas ver no teu createaccount.php qual função ele está executando em cada campo para descobrir o que o AJAX está recebendo como resposta do php. No gesior que eu tenho aqui, por exemplo, a função Javascript para a account name é checkAccount() e ela se comunica com o arquivo ajax_check_account.php, dentro da própria pasta de páginas do site.

                                                                     Ajudei? De nada \o/                                            Att Rusherzin

Link para o post
Compartilhar em outros sites

@Rusherzin  

 

Agradeço antecipadamente sua inclinação a me ajudar!

 

Então, amigo, eu havia pensado nisso! Revisei algumas vezes na tentativa de encontrar algo que fizesse a "ponte" entre o check e o createaccount... 

 

E novamente aqui, agora, dei mais uma olhada e ainda sinto certa distância de uma possível solução.

 

Ouso dizer aqui que, provavelmente, ou o meu createaccount.php está mal formatado em relação ao resto do Gesior que uso e ao Ajax, ou os arquivos Ajax estão com problemas.

 

Digo isso em relação ao createaccount porque basicamente contém já nele as mesmas composições de "requisitos" e "check's" dos arquivos Ajax! Não sei se pode ter algo a ver. Estou bem confuso.

 

Deixo aqui o meu createaccount.php para que me ajudem a analisá-lo em relação ao Ajax. (Espero não estar sendo muito inconveniente com a minha falta de experiência. Gostaria de deixar claro que não estou aqui querendo receber uma solução de "mão beijada", tampouco tenho pretensões de abusar das boas vontades, porém infelizmente eu não posso ir muito além dos meus limites cognitivos rs)

 

createaccount.php

  Citar
<?php
$location = array(
	'GER' =>'Europe',
	'USA' =>'North America'
);
$default = 'all';

$worlds = array();
$worlds[0] = array('GER', $config['server']['worldType']);
/*
$worlds[1] = array('GER', 'optional');
$worlds[2] = array('GER', 'hardcore');
$worlds[3] = array('USA', 'open');
$worlds[4] = array('USA', 'optional');
$worlds[5] = array('USA', 'hardcore');
*/

$town_array = $towns_list[0];
$town = $config['site']['newchar_towns'][0];
$voc = array(); // if empty, Rook Sample will be used
$voc[1] = 'Sorcerer';
$voc[2] = 'Druid';
$voc[3] = 'Paladin';
$voc[4] = 'Knight';

$suggestname = NULL; // not available
$version = '8060'; // for download link

foreach($worlds as $k =>$v) // remove invalid worlds
	if(!isset($location[$v[0]]) || !isset($config['site']['worlds'][$k]))
		unset($worlds[$k]);

$tmp = array();
foreach($location as $k =>$v) // remove invalid/unused locations
	foreach($worlds as $i =>$j)
		if($j[0] == $k) {
			$tmp[$k] = $v;
			break;
		}
$location = $tmp; unset($tmp);

if(isset($_POST['step']) && $_POST['step'] == 'docreate') {
	$e = array();
	$s = isset($_POST['accountname']) ? $_POST['accountname'] : '';
	if($s == '')
		$e['acc'] = 'Por favor, insira um Account Name de sua preferência para a sua conta!';
	elseif(strlen($s) < 6)
		$e['acc'] = 'O Account Name escolhido é muito curto!';
	elseif(strlen($s) > 10)
		$e['acc'] = 'O Account Name escolhido é muito grande!';
	else {
		$s = strtoupper($s);

		if(!ctype_alnum($s))
			$e['acc'] = 'Este Account Name contém um formato inválido. O Account Name deve consistir apenas de números (0-9) e letras (A-Z) (a-z)!';
		elseif(!preg_match('/[A-Z0-9]/', $s))
			$e['acc'] = 'É necessário que haja, em seu Account Name, pelo menos 1 (uma) letra (A-Z) (a-z)!';
		else {
			$acc = new Account($s, Account::LOADTYPE_NAME);
			if($acc->isLoaded())
				$e['acc'] = 'Este Account Name já está sendo utilizado por outra conta. Por favor, escolha outro Account Name!';
		}
	}

	if(!isset($_POST['world']) || empty($_POST['world']))
		$e['world'] = 'Selecione um World para seu Character!';

	$s = isset($_POST['email']) ? $_POST['email'] : '';

	if($s == '')
		$e['email'] = 'Por favor, insira um endereço de e-mail (válido) que você queira vincular à sua conta!';
	elseif(strlen($s) > 49)
		$e['email'] = 'O endereço de e-mail fornecido é muito grande!';
	elseif(!filter_var($s, FILTER_VALIDATE_EMAIL))
		$e['email'] = 'Este endereço de e-mail contém parâmetros irregulares. Por favor, insira um e-mail válido!';
	else {
		$accMailCheck = new Account($s, Account::LOADTYPE_MAIL);
		if($accMailCheck->isLoaded())
			$e['email'] = 'O endereço de e-mail citado já está vinculado à outra conta. Por favor, escolha outro endereço de e-mail para seu cadastro!';
	}
	

	$s1 = isset($_POST['password1']) ? $_POST['password1'] : '';
	$s2 = isset($_POST['password2']) ? $_POST['password2'] : '';

	if(empty($s2))
		$e['pass'] = 'Por razões de segurança, insira o Password novamente!';
	elseif($s1 != $s2)
		$e['pass'] = 'Os dois Password\'s fornecidos não estão iguais!';
	else {
		$err = array();
		if(strlen($s1) < 6 || strlen($s1) > 29)
			$err[] = 'O requisito de tamanho para o Password é de 8 à 30 caracteres!';
		if(!ctype_alnum($s1))
			$err[] = 'Este Password contém caracteres inválidos!';

		if(count($err) != 0) {
			$e['pass'] = '';
			for($i=0; $i < count($err); $i++)
				$e['pass'] .= ($i == 0 ? '' : '<br/>').$err[$i];
		}
	}

	if(!isset($_POST['agreerules']) || empty($_POST['agreerules']))
		$e['rules'] = 'Para concluir o seu cadastro, você precisa ler, e concordar, com os nossos termos, de nossas Regras de Conduta!';

	if(count($e) == 0) {
		$worldid = NULL;
		foreach($config['site']['worlds'] as $id =>$name)
			if($worlds[$id] && $name == $_POST['world']) {
				$worldid = $id;
				break;
			}
		if($worldid === FALSE)
			$e['world'] = 'Selecione um World válido.';
	}

	if(count($e) != 0) {
		$main_content = '<div class="SmallBox"><div class="MessageContainer"><div class="BoxFrameHorizontal" style="background-image:url('.$layout_name.'/images/content/box-frame-horizontal.gif)"/></div><div class="BoxFrameEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif)"/></div><div class="BoxFrameEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif)"/></div><div class="ErrorMessage"><div class="BoxFrameVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif)"/></div><div class="BoxFrameVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif)"/></div><div class="AttentionSign" style="background-image:url('.$layout_name.'/images/content/attentionsign.gif)"/></div><b>The Following Errors Have Occurred:</b><br/>';
		foreach($e as $error) $main_content .= $error.'<br/>';
		$main_content .= '</div><div class="BoxFrameHorizontal" style="background-image:url('.$layout_name.'/images/content/box-frame-horizontal.gif)"/></div><div class="BoxFrameEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif)"/></div><div class="BoxFrameEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif)"/></div></div></div><br/>';
	}
	else {

		$reg_account = new Account();
		$reg_account->setName($_POST['accountname']);
		$reg_account->setPassword($_POST['password1']);
		$reg_account->setEMail($_POST['email']);
		$reg_account->setGroupID(1);
		$reg_account->setCreateDate(time());
		$reg_account->setCreateIP(Visitor::getIP());
		$reg_account->setFlag(Website::getCountryCode(long2ip(Visitor::getIP())));
		if(isset($config['site']['newaccount_premdays']) && $config['site']['newaccount_premdays'] > 0)
		{
			$reg_account->set("premdays", $config['site']['newaccount_premdays']);
			$reg_account->set("lastday", time());
		}
		$reg_account->save();

		if($reg_account->getID() > 0) {
		}
		else die('Failed to create account.');
		$main_content = '<div class="SmallBox"><div class="MessageContainer"><div class="BoxFrameHorizontal" style="background-image:url('.$layout_name.'/images/content/box-frame-horizontal.gif)"/></div><div class="BoxFrameEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif)"/></div><div class="BoxFrameEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif)"/></div><div class="Message"><div class="BoxFrameVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif)"/></div><div class="BoxFrameVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif)"/></div><table><tr><td class="LabelV">Note:</td><td style="width:100%"><p>Your account and character have been created successfully.</p></td></tr></table></div><div class="BoxFrameHorizontal" style="background-image:url('.$layout_name.'/images/content/box-frame-horizontal.gif)"/></div><div class="BoxFrameEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif)"/></div><div class="BoxFrameEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif)"/></div></div></div><div class="BoxFrameHorizontal" style="background-image:url('.$layout_name.'/images/content/box-frame-horizontal.gif)"></div><div class="BoxFrameEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif)"></div><div class="BoxFrameEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif)"></div><br/><div class="TableContainer"><table class="Table4" cellpadding="0" cellspacing="0"><div class="CaptionContainer"><div class="CaptionInnerContainer"><span class="CaptionEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif)"/></span><span class="CaptionEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif)"/></span><span class="CaptionBorderTop" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif)"></span><span class="CaptionVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif)"/></span><div class="Text">Download Client</div><span class="CaptionVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif)"/></span><span class="CaptionBorderBottom" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif)"></span><span class="CaptionEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif)"/></span><span class="CaptionEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif)"/></span></div></div><tr><td><div class="InnerTableContainer"><table style="width:100%"><tr><td><table width="100%" cellpadding=0 cellspacing=0><tr><td style="vertical-align:top"><div class="TableShadowContainerRightTop"><div class="TableShadowRightTop" style="background-image:url('.$layout_name.'/images/content/table-shadow-rt.gif)"></div></div><div class="TableContentAndRightShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-rm.gif)"><div class="TableContentContainer"><table class="TableContent" width="100%"><tr><td><table style="width:100%;text-align:center"><tr><td><a href="http://www.mediafire.com/download/fzrl3j7epb279i0/tibia860.exe" type="application/octet-stream" target="_top"><img style="width:180px;height:180px;border:0px" src="account/download_windows.png"/></a></td><td><a href="http://www.mediafire.com/download/ijwdguz53qn7h11/OtLandIPChanger.rar" type="application/octet-stream" target="_top"><img style="width:180px;height:180px;border:0px" src="account/download_linux.png"/><br/></a></td></tr><tr><td valign="top"><a href="http://www.mediafire.com/download/fzrl3j7epb279i0/tibia860.exe" type="application/octet-stream" target="_top">Windows Tibia Client 8.60</a></td><td valign="top"><a href="http://www.mediafire.com/download/ijwdguz53qn7h11/OtLandIPChanger.rar" type="application/octet-stream" target="_top">IP Changer</a></td></tr><tr><td colspan="2">[<span class="HelpLink" onClick="window.open(\'http://www.tibia.com/support/content/help.php?subtopic=requirementes\', \'Help\', \'width=380px, height=310px, scrollbars=yes\')"><a>system requirements</a></span>]</td></tr></table></td></tr></table></div></div><div class="TableShadowContainer"><div class="TableBottomShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bm.gif)"><div class="TableBottomLeftShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bl.gif)"></div><div class="TableBottomRightShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-br.gif)"></div></div></div></td><td style="vertical-align:top"><div class="TableShadowContainerRightTop"><div class="TableShadowRightTop" style="background-image:url('.$layout_name.'/images/content/table-shadow-rt.gif)"></div></div><div class="TableContentAndRightShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-rm.gif)"><div class="TableContentContainer"><table class="TableContent" width="100%"><tr><td style="text-align:center"><img style="width:254px;height:218px;margin:7px" src="account/successful_download.jpg"/></td></tr></table></div></div><div class="TableShadowContainer"><div class="TableBottomShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bm.gif)"><div class="TableBottomLeftShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bl.gif)"></div><div class="TableBottomRightShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-br.gif)"></div></div></div></td></tr></table><tr><td><div class="TableShadowContainerRightTop"><div class="TableShadowRightTop" style="background-image:url('.$layout_name.'/images/content/table-shadow-rt.gif)"></div></div><div class="TableContentAndRightShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-rm.gif)"><div class="TableContentContainer"><table class="TableContent" width="100%"><tr><td class="LabelV">Disclaimer</td></tr><tr><td>The software and any related documentation is provided "as is" without warranty of any kind. The entire risk arising out of use of the software remains with you. In no event shall CipSoft GmbH be liable for any damages to your computer or loss of data.</td></tr></table></div></div><div class="TableShadowContainer"><div class="TableBottomShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bm.gif)"><div class="TableBottomLeftShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bl.gif)"></div><div class="TableBottomRightShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-br.gif)"></div></div></div></td></tr></table></div></table></div></td></tr>';
		return;
	}
} else $_POST['step'] = '';

$main_content .= '<script type="text/javascript" src="account/jquery.js"></script>
<script type="text/javascript" src="account/create_character.js"></script>
<script type="text/javascript">var PreselectServerLocation="'.$default.'";var g_FormName="CreateAccountAndCharacter";var g_FieldName="accountname";document.getElementById("ActiveSubmenuItemIcon_createaccount").style.visibility = "visible";';
foreach($worlds as $k =>$v) // create dynamic server list
	$main_content .= 'ServerList.push(new Array(\''.$config['site']['worlds'][$k].'\', \''.$v[0].'\', \''.$v[1].'\'));';
$main_content .= '</script><div style="position:relative;top:0px;left:0px"><form action="?subtopic=createaccount" method=post name="CreateAccountAndCharacter"><div class="TableContainer"><table class="Table5" cellpadding="0" cellspacing="0"><div class="CaptionContainer"><div class="CaptionInnerContainer"><span class="CaptionEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif)"></span><span class="CaptionEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif)"></span><span class="CaptionBorderTop" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif)"></span><span class="CaptionVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif)"></span><div class="Text">Create New Account</div><span class="CaptionVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif)"></span><span class="CaptionBorderBottom" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif)"></span><span class="CaptionEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif)"></span><span class="CaptionEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif)"></span></div></div><tr><td><div class="InnerTableContainer"><table style="width:100%"><tr><td><div class="TableShadowContainerRightTop"><div class="TableShadowRightTop" style="background-image:url('.$layout_name.'/images/content/table-shadow-rt.gif)"></div></div><div class="TableContentAndRightShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-rm.gif)"><div class="TableContentContainer"><table class="TableContent" width="100%"><tr><td class="LabelV150" width="20%"><span id="accountname_label"'.(isset($e['acc']) ? ' class="red"' : '').'><b>Account Name:</b></span></td><td><input id="accountname" name="accountname" autocomplete="off" class="CipAjaxInput" style="width:206px;float:left" value="'.(isset($_POST['accountname']) ? htmlspecialchars(substr($_POST['accountname'], 0, 30)) : '').'" size="30" maxlength="30" onBlur="SendAjaxCip({DataType: \'Container\'}, {Href: \'account/ajax_accountname.php\',PostData: \'a_AccountName=\'+this.value,Method: \'POST\'})"/><div id="accountname_indicator" class="InputIndicator" style="background-image:url(account/'.($_POST['step'] != 'docreate' || isset($e['acc']) ? 'n' : '').'ok.gif)"></div></td></tr><tr><td></td><td><span id="accountname_errormessage" class="FormFieldError">'.(isset($e['acc']) ? $e['acc'] : '').'</span></td></tr><tr><td class="LabelV150"><span id="email_label"'.(isset($e['email']) ? ' class="red"' : '').'><b>Email Address:</b></span></td><td><input id="email" name="email" class="CipAjaxInput" style="width:206px;float:left" value="'.(isset($_POST['email']) ? htmlspecialchars(substr($_POST['email'], 0, 50)) : '').'" autocomplete="off" size="30" maxlength="50" onBlur="SendAjaxCip({DataType: \'Container\'}, {Href: \'account/ajax_email.php\',PostData: \'a_EMail=\'+this.value,Method: \'POST\'})"/><div id="email_indicator" class="InputIndicator" style="background-image:url(account/'.($_POST['step'] != 'docreate' || isset($e['email']) ? 'n' : '').'ok.gif)"></div></td></tr><tr><td></td><td><span id="email_errormessage" class="FormFieldError">'.(isset($e['email']) ? $e['email'] : '').'</span></td></tr><tr><td class="LabelV150"><span id="password1_label"'.(isset($e['pass']) ? ' class="red"' : '').'><b>Password:</b></span></td><td><input id="password1" type="password" autocomplete="off" name="password1" style="width:206px;float:left" value="'.(isset($_POST['password1']) ? htmlspecialchars(substr($_POST['password1'], 0, 30)) : '').'" size="30" maxlength="30" onBlur="SendAjaxCip({DataType: \'Container\'}, {Href: \'account/ajax_password.php\',PostData: \'a_Password1=\'+getElementById(\'password1\').value+\'&a_Password2=\'+getElementById(\'password2\').value,Method: \'POST\'})"/><div id="password1_indicator" class="InputIndicator" style="background-image:url(account/'.($_POST['step'] != 'docreate' || isset($e['pass']) ? 'n' : '').'ok.gif)"></div></td></tr><tr><td class="LabelV150"><span id="password2_label"'.(isset($e['pass']) ? ' class="red"' : '').'><b>Password Again:</b></span></td><td><input id="password2" type="password" name="password2" style="width:206px;float:left" value="'.(isset($_POST['password2']) ? htmlspecialchars(substr($_POST['password2'], 0, 30)) : '').'" size="30" maxlength="30" onBlur="SendAjaxCip({DataType: \'Container\'}, {Href: \'account/ajax_password.php\',PostData: \'a_Password1=\'+getElementById(\'password1\').value+\'&a_Password2=\'+getElementById(\'password2\').value,Method: \'POST\'})"/><div id="password2_indicator" class="InputIndicator" style="background-image:url(account/'.($_POST['step'] != 'docreate' || isset($e['pass']) ? 'n' : '').'ok.gif)"></div></td></tr><tr><td></td><td><span id="password_errormessage" class="FormFieldError">'.(isset($e['pass']) ? $e['pass'] : '').'</span></td></tr></table></div></div><div class="TableShadowContainer"><div class="TableBottomShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bm.gif)"><div class="TableBottomLeftShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bl.gif)"></div><div class="TableShadowContainerRightTop"><table class="TableContent" width="100%">';
$main_content .= '</table></div></div><tr><td><div class="TableShadowContainerRightTop"><div class="TableShadowRightTop" style="background-image:url('.$layout_name.'/images/content/table-shadow-rt.gif)"></div></div><div class="TableContentAndRightShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-rm.gif)"><div class="TableContentContainer"><table class="TableContent" width="100%">';
if(count($location)>1) { // show server location filter
	$main_content .= '<tr id="filterbox_location"><td class="LabelV150"><span'.(isset($e['world']) ? ' class="red"' : '').'>Localização do World:</span></td><td><table width="100%"><tr><td width="33%" valign="top"><script>CreateFilterOption(\'server_location\', \'all\', \'all\')</script>&nbsp;&nbsp;</td>';
	$i=0;
	foreach($location as $k =>$v) {
		$i++;
		$main_content .= '<td '.($i == count($location) ? '' : 'width="33%" ').'valign="top"><script>CreateFilterOption(\'server_location\', \''.$k.'\', \''.$v.'\')</script>&nbsp;&nbsp;</td>';
	}
	$main_content .= '</tr></table></td></tr>';
}
$main_content .= '<tr id="filterbox_pvp"><td class="LabelV150"><span'.(isset($e['world']) ? ' class="red"' : '').'><b>Modelo de World:</b></span></td><td><div>';

$optional=true; $open=true; $hardcore=true;

foreach($worlds as $k =>$v) { // remove selection if there's no valid worlds
	if($optional && $v[1] == 'optional')
		unset($optional);
	elseif($open && $v[1] == 'open')
		unset($open);
	elseif($hardcore && $v[1] == 'hardcore')
		unset($hardcore);
	elseif(!$optional && !$open && !$hardcore)
		break;
}

$n = 0;
foreach(array($optional, $open, $hardcore) as $k)
	if(!$k)
		$n++;
$main_content .= '<table width="'.round(33.33 *  $n).'%"><tr>';
if(!$optional)
	$main_content .= '<td width="'.(100 / $n).'%" align="center" valign="top"><b><script>CreateFilterOption(\'server_pvp_type\', \'optional\', \'Optional PvP\')</script></b>&nbsp;&nbsp;Only if both sides agree, characters can be fought<br/><br/></td>';
if(!$open)
	$main_content .= '<td width="'.(100 / $n).'%" align="center" valign="top"><b><script>CreateFilterOption(\'server_pvp_type\', \'open\', \'Open PvP\')</script></b>&nbsp;&nbsp;Killing other characters is possible, but restricted<br/><br/></td>';
if(!$hardcore)
	$main_content .= '<td align="center" valign="top"><b><script>CreateFilterOption(\'server_pvp_type\', \'hardcore\', \'Hardcore PvP\')</script></b>&nbsp;&nbsp;Killing other characters is not restricted at all<br/><br/></td>';

$main_content .= '</tr></table></div></td></tr><tr><td class="LabelV150"><span'.(isset($e['world']) ? ' class="red"' : '').'><b>Nome do World:</b></span></td><td><div id="js_world_box" style="display:none"><table width="100%"><tr id="world_list_tr" style="text-align:left"></tr></table><span onClick="ToggleVisibility(\'js_world_box\', \'suggested_world_box\'); UpdateServerList(); "><small>[<a style="cursor:pointer">suggest game world</a>]</small></span></div><div id="suggested_world_box">Suggested world: <span id="suggested_world_div"></span><br/><span onClick="ToggleVisibility(\'suggested_world_box\', \'js_world_box\'); "><small>[<a style="cursor:pointer">change game world</a></span>]</small></div></td></tr><tr><td><table id="js_world_box" width="100%"><tr id="world_list_tr"></tr></table><table id="plain_world_box" width="100%"><tr><td>';
foreach($worlds as $k =>$v)
	$main_content .= '<input id="server_static_'.$config['site']['worlds'][$k].'" type="radio" name="world" value="'.$config['site']['worlds'][$k].'"'.($config['site']['worlds'][$k] == $_POST['world'] ? ' checked="checked"' : '').'><label for="server_static_'.$config['site']['worlds'][$k].'">'.$config['site']['worlds'][$k].'</label><br/>';
$main_content .= '</td></tr></table></td></tr>'.(isset($e['world']) ? '<tr><td></td><td><span class="FormFieldError">'.$e['world'].'</span></td></tr>' : '').'</table></div></div><div class="TableShadowContainer"><div class="TableBottomShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bm.gif)"><div class="TableBottomLeftShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bl.gif)"></div><div class="TableBottomRightShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-br.gif)"></div></div></div></td></tr><tr><td><div class="TableShadowContainerRightTop"><div class="TableShadowRightTop" style="background-image:url('.$layout_name.'/images/content/table-shadow-rt.gif)"></div></div><div class="TableContentAndRightShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-rm.gif)"><div class="TableContentContainer"><table class="TableContent" width="100%"><tr><td><b>Please select all of the following check boxes:</b></td></tr><tr><td><input type="checkbox" name="agreerules" value="true"  onClick="if(this.checked == true) {  document.getElementById(\'agreerules_errormessage\').innerHTML = \'\';} else {  document.getElementById(\'agreerules_errormessage\').innerHTML = \'You have to agree to the Tibia Rules in order to create an account!\';}"'.($_POST['step'] == 'docreate' && !isset($e['rules']) ? ' checked="checked"' : '').'/>I agree to the <a href="?subtopic=legaldocuments&page=rules" target="_blank">Tibia Rules</a>.</td></tr><tr><td><span id="agreeprivacy_errormessage" class="FormFieldError">'.(isset($e['privacy']) ? $e['privacy'] : '').'</span></td></tr></table></div></div><div class="TableShadowContainer"><div class="TableBottomShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bm.gif)"><div class="TableBottomLeftShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bl.gif)"></div><div class="TableBottomRightShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-br.gif)"></div></div></div></td></tr><script type="text/javascript">PreselectWorld="';
if(isset($_POST['world']) && !empty($_POST['world']))
	foreach($config['site']['worlds'] as $id =>$name)
		if($worlds[$id] && $name == $_POST['world']) {
			$main_content .= $name;
			break;
		}
$main_content .= '";InitializeCharacterCreator(PreselectServerLocation, \''.(!$optional ? 'optional' : (!$open ? 'open' : 'hardcore')).'\')</script></table></div></table></div></td></tr><br/></div><center><table border="0" cellspacing="0" cellpadding="0"><tr><td style="border:0px"><input type="hidden" name=step value=docreate><input type="hidden" name=noframe value=""><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)"><div onMouseOver="MouseOverBigButton(this)" onMouseOut="MouseOutBigButton(this)"><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif)"></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="'.$layout_name.'/images/buttons/_sbutton_submit.gif"></div></div></td><tr></form></table></center><script type="text/javascript" language="javascript">document.forms[\'CreateAccountAndCharacter\'].elements[\'accountname\'].focus();</script><script type="text/javascript" src="account/generic.js"></script><script type="text/javascript" src="account/ajaxcip.js"></script>';
Mostrar mais  

 

Mais uma vez, obrigado! Estou ficando chateado já! hahahaha

 

Abraços.

Editado por Enijota
ajustar a formatação do quote do createaccount.php (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Bom, a tua versão de gesior é diferente da minha, mas creio que o que tu está procurando é essa parte:
 

onBlur="SendAjaxCip({DataType: \'Container\'}, {Href: \'account/ajax_accountname.php\',PostData: \'a_AccountName=\'+this.value,Method: \'POST\'})

Acredito que esteja enviando para o arquivo de nome ajax_accountname.php presente na pasta /account/ (é um dos que tu citou no post). Aconselho que abra ele e tente editar os valores que ele retorna para tentar descobrir o que está errado. Se precisar de ajuda, pode postar os arquivos que eu tento te orientar.

                                                                     Ajudei? De nada \o/                                            Att Rusherzin

Link para o post
Compartilhar em outros sites

@Rusherzin 

 

Olá amigo!

 

Eu havia viajado para resolver alguns assuntos.. Peço desculpas pela demora.

 

Tentei solucionar a falha em questão, a partir da dica de diretório que deu, e infelizmente, com meu atual nível em PHP, não fui capaz de encontrar nada que pudesse estar impedindo o ajax de funcionar normalmente..

 

Inclusive, minha dúvida quanto ao problema estar na createaccount.php e não nos arquivos ajax_ aumentou...

 

Já que quando vou criar uma conta com parâmetros errados, após clicar em Submit e a página atualizar (já que pelo mal funcionamento do ajax as condições não se atualizam sozinhas), ela chama o padrão de resposta que coloquei no createaccount.php e não nos ajax_...

 

Muito estranho!

 

-----------------------------

 

Anyway, estarei deixando alguns dos arquivos, na esperança de que haja ainda alguma luz pra esse entrave, serão os ajax_ (do diretório htdocs/account, que são eles: ajax_accountname, ajax_charactername, ajax_email, ajax_password. Já no diretório htdocs/pages também há arquivos de prefixo ajax_ [que caso pareça/seja insuficiente os que aqui deixarei agora, compartilho depois], são eles: ajax_check_account, ajax_check_email, e ajax_check_name)       [particularmente acho bem confuso! rs]

 

 

htdocs/account/ajax_accountname.php -

 

  Citar
<?PHP
date_default_timezone_set('America/Sao_Paulo');
ob_start('ob_gzhandler');
header('Connection: close');
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest')
	exit();

header('X-Ajax-Cip-Response-Type: Container');

function f($e) {
	die('{"AjaxObjects": [{"DataType": "Attributes","Data": "style=background-image:url(account/nok.gif)","Target": "#accountname_indicator"},{"DataType": "HTML","Data": "'.$e.'","Target": "#accountname_errormessage"},{"DataType": "Attributes","Data": "class=red","Target": "#accountname_label"}]}');
}

$s = isset($_POST['a_AccountName']) ? $_POST['a_AccountName'] : '';

if($s == '')
	f('Please enter an account name!');
elseif(strlen($s) < 6)
	f('This account name is too short!');
elseif(strlen($s) > 30)
	f('This account name is too long!');

$s = strtoupper($s);

if(!ctype_alnum($s))
	f('This account name has an invalid format. Your account name may only consist of numbers 0-9 and letters A-Z!');
#elseif(!preg_match('/[A-Z]/', $s))
#f('Your account name must include at least one letter A-Z!');

require_once "../config/config.php";

$serverConfig = parse_ini_file($config['site']['serverPath'].'config.lua');

$conn = mysql_pconnect($serverConfig['sqlHost'], $serverConfig['sqlUser'], $serverConfig['sqlPass']) or die();
mysql_select_db($serverConfig['sqlDatabase']);

if(mysql_num_rows(mysql_query('SELECT id FROM accounts WHERE name=\''.mysql_escape_string($s).'\' LIMIT 1')) != 0)
	f('This account name is already used. Please select another one!');

echo '{"AjaxObjects": [{"DataType": "Attributes","Data": "style=background-image:url(account/ok.gif);","Target": "#accountname_indicator"},{"DataType": "HTML","Data": "","Target": "#accountname_errormessage"},{"DataType": "Attributes","Data": "class=","Target": "#accountname_label"}]}';
ob_end_flush();
?>
Mostrar mais  

 

 

htdocs/account/ajax_charactername.php -

 

  Citar
<?PHP
date_default_timezone_set('America/Sao_Paulo');
$t=time();
ob_start('ob_gzhandler');
header('Connection: close');
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest')
	exit();

header('X-Ajax-Cip-Response-Type: Container');

function f($e) {
	die('{"AjaxObjects": [{"DataType": "Attributes","Data": "style=background-image:url(account/nok.gif)","Target": "#charactername_indicator"},{"DataType": "HTML","Data": "'.$e.'","Target": "#charactername_errormessage"},{"DataType": "Attributes","Data": "class=red","Target": "#charactername_label"}]}');
}

$s = isset($_POST['a_CharacterName']) ? $_POST['a_CharacterName'] : '';

if(empty($s))
	f('Please enter a name for your character!');
elseif(strlen($s) < 2 || strlen($s) > 20)
	f('A name must have at least 2 but no more than 20 letters!');
	elseif(strlen($s) < 2 || strlen($s) < 5)
	f('Your name is mutch short!');
elseif(preg_match('/[^a-zA-Z ]/', $s))
	f('This name contains invalid letters. Please use only A-Z, a-z and space!');
elseif($s[0] == ' ')
	f('This name contains a space at the beginning. Please remove this space!');
elseif(substr($s, -1) == ' ')
	f('This name contains a space at the end. Please remove this space!');
elseif(!ctype_upper($s[0]))
	f('The first letter of a name has to be a capital letter!');
elseif(strpos($s, '  ') !== false)
	f('This name contains more than one space between words. Please use only one space between words!');

foreach(explode(' ', $s) as $k => $v) {
	$words[$k] = str_split($v);
	$len = strlen($v);
	if($len == 1)
		f('This name contains a word with only one letter. Please use more than one letter for each word!');
	elseif($len > 14)
		f('This name contains a word that is too long. Please use no more than 14 letters for each word!');
	$total=0;
	foreach($words as $k => $p) {
		$total++;
		if($total > 3)
			f('This name contains more than 3 words. Please choose another name!');
		$len=0;
		foreach($p as $i => $j) {
			$len++;
			if($i != 0 && ctype_upper($j))
				f('In names capital letters are only allowed at the beginning of a word!');
			elseif($i == $len-1) {
				$ff=null;
				for($h=0;$h<strlen($v); $h++) {
					if(in_array(strtolower($v[$h]), array('a','e','i','o','u')) !== false) {
						$ff=true;
						break;
					}
				}
				if(!$ff)
					f('This name contains a word without vowels. Please choose another name!');
			}
		}
	}
}
$s = strtolower($s);
for($i = 0; $i < strlen($s); $i++)
	if($s[$i] == $s[($i+1)] && $s[$i] == $s[($i+2)])
		f('This character name is already used. Please select another one!');
foreach(array('aa ', 'ee', 'ii', 'oo', 'uu', 'gm','cm', 'aff ', 'god ', 'abc', 'tutor', 'game', 'admin', 'the ') as $v)
	if($v == substr($s, 0, strlen($v)))
		f('This character name is already used. Please select another one!');
foreach(array('game', 'customer', 'support', 'fuck', 'haha', 'sux', ' abc', 'suck', 'noob', 'tutor', 'admin', 'account', 'gay', 'password', 'manager') as $v)
	if(strpos($s, $v) !== false)
		f('This character name is already used. Please select another one!');

require_once "../config/config.php";

$serverConfig = parse_ini_file($config['site']['serverPath'].'config.lua');

$conn = mysql_pconnect($serverConfig['sqlHost'], $serverConfig['sqlUser'], $serverConfig['sqlPass']) or die();
mysql_select_db($serverConfig['sqlDatabase']);

if(mysql_num_rows(mysql_query('SELECT id FROM players WHERE name=\''.mysql_escape_string($s).'\' LIMIT 1')) != 0)
	f('This character name is already used. Please select another one!');

echo '{"AjaxObjects": [{"DataType": "Attributes","Data": "style=background-image:url(account/ok.gif);","Target": "#charactername_indicator"},{"DataType": "HTML","Data": "","Target": "#charactername_errormessage"},{"DataType": "Attributes","Data": "class=","Target": "#charactername_label"}]}';
?>
Mostrar mais  

 

 

htdocs/account/ajax_email.php -

 

  Citar
<?PHP
date_default_timezone_set('America/Sao_Paulo');
ob_start('ob_gzhandler');
header('Connection: close');
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest')
	exit();

header('X-Ajax-Cip-Response-Type: Container');

function f($e) {
	die('{"AjaxObjects": [{"DataType": "Attributes","Data": "style=background-image:url(account/nok.gif)","Target": "#email_indicator"},{"DataType": "HTML","Data": "'.$e.'","Target": "#email_errormessage"},{"DataType": "Attributes","Data": "class=red","Target": "#email_label"}]}');
}

$s = isset($_POST['a_EMail']) ? $_POST['a_EMail'] : '';

if($s == '')
	f('Please enter your email address!');
elseif(strlen($s) > 49)
	f('Your email address is too long!');
elseif(!filter_var($s, FILTER_VALIDATE_EMAIL))
	f('This email address has an invalid format. Please enter a correct email address!');

require_once "../config/config.php";

$serverConfig = parse_ini_file($config['site']['serverPath'].'config.lua');

$conn = mysql_pconnect($serverConfig['sqlHost'], $serverConfig['sqlUser'], $serverConfig['sqlPass']) or die();
mysql_select_db($serverConfig['sqlDatabase']);

if(mysql_num_rows(mysql_query('SELECT id FROM accounts WHERE email=\''.mysql_escape_string($s).'\' LIMIT 1')) != 0)
	f('This email address is already used. Please enter another email address!');

echo '{"AjaxObjects": [{"DataType": "Attributes","Data": "style=background-image:url(account/ok.gif);","Target": "#email_indicator"},{"DataType": "HTML","Data": "","Target": "#email_errormessage"},{"DataType": "Attributes","Data": "class=","Target": "#email_label"}]}';
ob_end_flush();
?>
Mostrar mais  

 

 

htdocs/account/ajax_password.php -

 

  Citar
<?PHP
date_default_timezone_set('America/Sao_Paulo');
ob_start('ob_gzhandler');
header('Connection: close');
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest')
	exit();

header('X-Ajax-Cip-Response-Type: Container');

function f($e) {
	die('{"AjaxObjects": [{"DataType": "Attributes","Data": "style=background-image:url(account/nok.gif)","Target": "#password1_indicator"},{"DataType": "Attributes","Data": "style=background-image:url(account/nok.gif)","Target": "#password2_indicator"},{"DataType": "HTML","Data": "'.$e.'","Target": "#password_errormessage"},{"DataType": "Attributes","Data": "class=red","Target": "#password1_label"},{"DataType": "Attributes","Data": "class=red","Target": "#password2_label"}]}');
}

$s1 = isset($_POST['a_Password1']) ? $_POST['a_Password1'] : '';
$s2 = isset($_POST['a_Password2']) ? $_POST['a_Password2'] : '';

if(empty($s2))
	f('Please enter the password again!');
elseif($s1 != $s2)
	f('The two passwords do not match!');

$err = array();
if(strlen($s1) < 8 || strlen($s1) > 29)
	$err[] = 'The password must have at least 8 and less than 30 letters!';
if(!ctype_alnum($s1))
	$err[] = 'The password contains invalid letters!';
if(!preg_match('/[a-zA-Z]/', $s1))
	$err[] = 'The password must contain at least one letter A-Z or a-z!';
elseif(!preg_match('/[0-9]/', $s1))
	$err[] = 'The password must contain at least one letter other than A-Z or a-z!';

if(count($err) != 0) {
	$s = '';
	for($i=0; $i < count($err); $i++)
		$s .= ($i == 0 ? '' : '<br/>').$err[$i];
	f($s);
}

echo '{"AjaxObjects": [{"DataType": "Attributes","Data": "style=background-image:url(account/ok.gif);","Target": "#password1_indicator"},{"DataType": "Attributes","Data": "style=background-image:url(account/ok.gif);","Target": "#password2_indicator"},{"DataType": "HTML","Data": "","Target": "#password_errormessage"},{"DataType": "Attributes","Data": "class=","Target": "#password1_label"},{"DataType": "Attributes","Data": "class=","Target": "#password2_label"}]}';
ob_end_flush();
?>
Expand   Mostrar mais  

-----------------------------------------------------------------

 

Novamente, agradeço antecipadamente a ajuda de todos que puderem colaborar com essa situação chata...

 

Um bom domingo à todos!

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Andersontatuador
      .Qual servidor ou website você utiliza como base? 
      Global Full 8.60 + Zao
      Qual o motivo deste tópico? 
      O site não esta adicionando os pontos na conta dos plays.
       
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       



    • Por A.Mokk
      .Qual servidor ou website você utiliza como base? 
      TFS 0.4
      Qual o motivo deste tópico? 
      Estou tendo um probleminha indelicado no meu site, gostaria de obter respostas aqui com voces que sao sempre muito eficientes e praticos.
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
       
    • Por thunmin
      .Qual servidor ou website você utiliza como base? 
      Canary
      Qual o motivo deste tópico? 
      Não consigo deixar ele automatico os players tem que confirmar o pagamento depois eu tenho que verificar se caiu pra depois eu confirmar e colocar as coins
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
    • Por Jordan422
      Faala Deuses do Tibia! Estou com um projeto sólido de um global old, mas to preso nessa parte do website viu.. Eu dou meu jeitinho mas ta chegando nas coisas avançadas que precisa daquele freelancer bacana para ajeitar umas páginas para mim! Já tenho as ideias, basta somente botar a mão na massa.. Quem estiver interessado por favor entrar em contato por mensagem aqui no Tibiaking mesmo ou preferencialmente pelo discord mythh9257 
       
    • Por moleza
      Para quem quer abrir um servidor antigo que roda em php5 e está com dificuldade com a configuração do linux, pode contratar um cpanel que contenha o php5 que facilita a configuração do site!!
       
      essa foi a minha solução!
       
      Resolvido !!
  • Estatísticas dos Fóruns

    96852
    Tópicos
    519617
    Posts



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo