Jump to content


Photo

Referência


  • Faça o login para participar
13 replies to this topic

#1 TiagoArabe

TiagoArabe

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Masculino
  • Localidade:BH

Posted 15/01/2012, 14:17

Olá pessoal, é o seguinte:
Sou novo em PHP, estou aprendendo, mas preciso fazer o seguinte:
Tenho um site, com algumas informações, vamos dizer que temos descrição1 e descrição2 além de todos os outros itens do site.
Pois bem, o que quero é um formulário onde a pessoa possa colocar suas informações e assim mudar informação1 e informação2 além de criar um usuário, quando este acessar o site www.exemplo.com.br/?ref=usuario essas informações sejam mostradas auotmaticamente conforme a pessoa colocou no formulário.

Espero que tenham entendido, caso contrário posso dar mais detalhes sobre.

Muito obrigado e se puderem me dar detalhes de como posso fazer isso ficaria agradecido, uma vez que estou ainda começando a programar em PHP.

#2 --The Matrix--

--The Matrix--

    Normal

  • Usuários
  • 118 posts
  • Sexo:Masculino
  • Localidade:Avaré - SP

Posted 16/01/2012, 07:51

Bom dia Tiago,

acho difícil alguém te ajudar dessa maneira, afinal a intenção do fórum é te ajudar com suas dúvidas, não fazer o seu site, afinal nós cobramos para isso :), então eu sugiro que você comece estudando PHP e assim que tiver alguma dúvida você vem e coloca aqui no fórum para que nós possamos te ajudar.

Eu sugiro que você comece por aqui:

http://www.php.net/m...BR/tutorial.php

e depois leia os artigos e apostilas que estão aqui no fórum e no portal da WMONLINE.

Caso fique perdido você precisará saber sobre como conectar no banco mysql e ter uma noção de query string.

[]'s
Ricardo Crivelli
Delphi Developer Certified
CobiT Foundation 4.1 Certified
@ricocrivelli
4Bytes Inc. - Desenvolvimento de sistemas especialistas web.

#3 TiagoArabe

TiagoArabe

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Masculino
  • Localidade:BH

Posted 17/01/2012, 09:12

Bom dia Tiago,

acho difícil alguém te ajudar dessa maneira, afinal a intenção do fórum é te ajudar com suas dúvidas, não fazer o seu site, afinal nós cobramos para isso :), então eu sugiro que você comece estudando PHP e assim que tiver alguma dúvida você vem e coloca aqui no fórum para que nós possamos te ajudar.

Eu sugiro que você comece por aqui:

http://www.php.net/m...BR/tutorial.php

e depois leia os artigos e apostilas que estão aqui no fórum e no portal da WMONLINE.

Caso fique perdido você precisará saber sobre como conectar no banco mysql e ter uma noção de query string.

[]'s


Mercenário Moderno, quem foi que disse que quero que alguém faça o site para mim? Realmente preciso de uma ajuda, de uma luz... mas se acha que é muito tentar ajudar um leigo não devia ter tipo sequer o trabalho de responder este tópico em questão... desnecessário!

#4 silici0

silici0

    ?

  • Usuários
  • 902 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP
  • Interesses:PHP, MySQL, XHTML, CSS, AJAX, JavaScript, Objective-C, Python, Games ... #geek

Posted 17/01/2012, 09:41

Olá, especifica melhor onde vc tem a dúvida!

Não da para compreender até onde vc conhece php... Você quer logar um usuário? Fazer um sistema de login ?

Abraços
Procurando freelancer
***********************************************
Bachelor of Technology in Technology of Information, with great knowledge in Windows operating systems and Unix-Like (BSD, Ubuntu and Slackware), languages (PHP, JavaScript and MySQL), semantic (DHTML, Tableless, Ajax, MVC, OO) and analysis (manages projects based on PMI).
Developer in PHP, JAVA, Python, Objective-c MySQL, DHTML, CSS, JAVASCRIPT, JQUERY, JSON, SMARTY, MDB2, DOCTRINE, CAKEPHP. Linux desktop for work and MacOS. E-commerces, CRM and bussiness strategys
Love-me and be FREE use UniCes-Like .

#5 TiagoArabe

TiagoArabe

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Masculino
  • Localidade:BH

Posted 17/01/2012, 10:57

Olá, especifica melhor onde vc tem a dúvida!

Não da para compreender até onde vc conhece php... Você quer logar um usuário? Fazer um sistema de login ?

Abraços


Na verdade é o seguinte:

Digamos que eu tenha um site que venda hospedagem. Eu quero criar um espécie de sistema de afiliados, então o site é o mesmo para todos aqueles que se cadastrarem, porém só muda o nome e o e-mail da pessoa cadastrada no topo do site.
Nisso, o site normal é www.exemplo.com.br, quando o usuário se cadastra, aí ele teria um site assim: www.exemplo.com.br/?ref=usuario, sendo que este "usuário" é o nome que a pessoa escolheu no formulário, e neste site do usuário algumas informações são exclusivas dele, porém o site é o mesmo do original.

Não precosa ter login nem senha, é apenas para mudar algumas informações do site de acordo com o ref="usuario" que tiver na URL.

Basta me encaminhar, pois comecei a aprender, sei o básico em PHP e estou com dificuldades sobre qual caminho tomar para fazer este sistema.

Muito obrigado por tentar ajudar, fico muito agradecido pela boa vontade de todos vocês.

#6 silici0

silici0

    ?

  • Usuários
  • 902 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP
  • Interesses:PHP, MySQL, XHTML, CSS, AJAX, JavaScript, Objective-C, Python, Games ... #geek

Posted 17/01/2012, 11:12

Olha so ... basta utilizar um dado referente do usuario codificado, pela vasta experiencia, cria um campo de encode de ID + USERNAME e grava nesse campo... ai vc cria url com site.com/?ref=codigo (ninguem vai entendero codigo entao ameniza os hacks) ai vc confere com o campo e confere se bate o encode ID +USERNAME (double check) ... validando vc joga esse dado na sessao ou cookie do usuario, assim toda vez que ele fazer compra/acao que for vc verifica se existe a referencia, ai grava os dados com a devida referencia! ;)

Abraços
Procurando freelancer
***********************************************
Bachelor of Technology in Technology of Information, with great knowledge in Windows operating systems and Unix-Like (BSD, Ubuntu and Slackware), languages (PHP, JavaScript and MySQL), semantic (DHTML, Tableless, Ajax, MVC, OO) and analysis (manages projects based on PMI).
Developer in PHP, JAVA, Python, Objective-c MySQL, DHTML, CSS, JAVASCRIPT, JQUERY, JSON, SMARTY, MDB2, DOCTRINE, CAKEPHP. Linux desktop for work and MacOS. E-commerces, CRM and bussiness strategys
Love-me and be FREE use UniCes-Like .

#7 TiagoArabe

TiagoArabe

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Masculino
  • Localidade:BH

Posted 17/01/2012, 11:18

Olha so ... basta utilizar um dado referente do usuario codificado, pela vasta experiencia, cria um campo de encode de ID + USERNAME e grava nesse campo... ai vc cria url com site.com/?ref=codigo (ninguem vai entendero codigo entao ameniza os hacks) ai vc confere com o campo e confere se bate o encode ID +USERNAME (double check) ... validando vc joga esse dado na sessao ou cookie do usuario, assim toda vez que ele fazer compra/acao que for vc verifica se existe a referencia, ai grava os dados com a devida referencia! ;)

Abraços


Estou tentando exatamente essa logica... porém acho que estou batendo de frente no código.

<?php
	include_once("classes/mySqlConn.php");
	
		$ref = $_GET['ref'];
		// Aqui você faz a busca no BANCO DE DADOS para verificar se existe algo com o nome passado
		$sql = "SELECT * FROM usuarios WHERE user_usuario ='$ref'";
		$qr = self::execSql($sql);
		$total = self::countData($qr);  // resgatar quantos dados foram encontrados

		if($total > 1){
				$erro = base64_encode("Dados Duplicados, login n&atilde;o efetuado, entre em contato com o Administrador");
				@header("Location: ../");
			}else if($total <= 0){
				$erro = base64_encode("Login ou Senha Inv&aacute;lidos");
				@header("Location: ../");
			}else if($total == "1"){
				session_start();						//abre a sessao
				$dados = self::listQr($qr);				// resgato os dados
				$_SESSION["LOGADO"] = "TRUE";			// carregar a sessão logado
				$_SESSION["NOME"] = $dados["nomeUser"];	// carregar a sessão nome
				@header("Location: ../index.php");		// faço o redirect	
			}
?>

Tenho certeza de que está errado, mas é só para saber se é por aí que tenho que seguir...

#8 silici0

silici0

    ?

  • Usuários
  • 902 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP
  • Interesses:PHP, MySQL, XHTML, CSS, AJAX, JavaScript, Objective-C, Python, Games ... #geek

Posted 17/01/2012, 11:54

Primeiro você tem que fechar a sessão... sempre ! http://php.net/manua...write-close.php

So acho que ta errado a logica de ficar redirecionando, tenta trabalhar com mensagens na sessao tb... em vez de redirecionar! hehehehe

Você também pode guardar arrays em Session com o http://php.net/manua...n.serialize.php :P

Se quiser saber mais de sessao : http://www.phpro.org...P-Sessions.html

Abraços e bom estudos :)
Procurando freelancer
***********************************************
Bachelor of Technology in Technology of Information, with great knowledge in Windows operating systems and Unix-Like (BSD, Ubuntu and Slackware), languages (PHP, JavaScript and MySQL), semantic (DHTML, Tableless, Ajax, MVC, OO) and analysis (manages projects based on PMI).
Developer in PHP, JAVA, Python, Objective-c MySQL, DHTML, CSS, JAVASCRIPT, JQUERY, JSON, SMARTY, MDB2, DOCTRINE, CAKEPHP. Linux desktop for work and MacOS. E-commerces, CRM and bussiness strategys
Love-me and be FREE use UniCes-Like .

#9 --The Matrix--

--The Matrix--

    Normal

  • Usuários
  • 118 posts
  • Sexo:Masculino
  • Localidade:Avaré - SP

Posted 17/01/2012, 14:02

Olá Tiago, primeiramente, desculpe-me se pareci em algum momento te desrespeitar, segundo, não sou nenhum tipo de mercenário, pelo contrário, utilizo o fórum fora do meu expediente e falei tudo aquilo porque você não postou nenhum código nem disse que havia tentado de alguma forma, aparentando assim que você queria que alguém tivesse dado o código pronto - pelo menos no meu ponto de vista.

Bom mas voltando ao código...

Como disse o silici0 evite ficar redirecionando... também acho que você deveria armazenar a mensagem de erro na seção e depois exibi-la na página de erro pois acredito que as duas serão a mesma página - ou não?

Eu particularmente faria um include de um outro arquivo, pois na página que você redirecionar você terá que fazer essa verificação novamente, consumindo recursos do servidor e testando algo que já pode ter sido feito previamente...

Espero que tenha sido claro...

Estou aqui para ajudar e aprender, não para ganhar dinheiro. Um dos maiores problemas do fórum é esse, você não consegue saber o tom que a pessoa está falando.

[]'s
Ricardo Crivelli
Delphi Developer Certified
CobiT Foundation 4.1 Certified
@ricocrivelli
4Bytes Inc. - Desenvolvimento de sistemas especialistas web.

#10 TiagoArabe

TiagoArabe

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Masculino
  • Localidade:BH

Posted 17/01/2012, 14:50

Olá Tiago, primeiramente, desculpe-me se pareci em algum momento te desrespeitar, segundo, não sou nenhum tipo de mercenário, pelo contrário, utilizo o fórum fora do meu expediente e falei tudo aquilo porque você não postou nenhum código nem disse que havia tentado de alguma forma, aparentando assim que você queria que alguém tivesse dado o código pronto - pelo menos no meu ponto de vista.

Bom mas voltando ao código...

Como disse o silici0 evite ficar redirecionando... também acho que você deveria armazenar a mensagem de erro na seção e depois exibi-la na página de erro pois acredito que as duas serão a mesma página - ou não?

Eu particularmente faria um include de um outro arquivo, pois na página que você redirecionar você terá que fazer essa verificação novamente, consumindo recursos do servidor e testando algo que já pode ter sido feito previamente...

Espero que tenha sido claro...

Estou aqui para ajudar e aprender, não para ganhar dinheiro. Um dos maiores problemas do fórum é esse, você não consegue saber o tom que a pessoa está falando.

[]'s



Ok, sem problema... estamos nos entendendo então me desculpe também pelo desabafo.

Eu tentei algo diferente, pois quero uma coisa bem simples, se puder tudo na mesma página... porém estou com muita dificuldade:

<?php
	include_once("classes/mySqlConn.php");
		function cadastro(){
			$ref = $_GET['ref'];
			// Aqui você faz a busca no BANCO DE DADOS para verificar se existe algo com o nome passado
			$sql = "SELECT * FROM usuarios WHERE user_usuario ='$ref'";
			$qr = self::execSql($sql);
			
			if(!empty($ref)){
			session_start();						//abre a sessao
			$dados = self::listQr($qr);				// resgato os dados
			$_SESSION["LOGADO"] = "TRUE";			// carregar a sessão logado
			$_SESSION["NOME"] = $dados["nome_usuario"];	// carregar a sessão nome
			$_SESSION["EMAIL"] = $dados["email_usuario"];	// carregar a sessão nome
			$_SESSION["CELULAR"] = $dados["celular_usuario"];	// carregar a sessão nome
			$_SESSION["USER"] = $dados["user_usuario"];	// carregar a sessão nome
			$_SESSION["SKYPE"] = $dados["skype_usuario"];	// carregar a sessão nome
			$_SESSION["CODIGO"] = $dados["codigo_usuario"];	// carregar a sessão nome
			}
			else{
			}
		}
?>

Lógico que não funcionou, mas ão sei onde estão os erros...

#11 --The Matrix--

--The Matrix--

    Normal

  • Usuários
  • 118 posts
  • Sexo:Masculino
  • Localidade:Avaré - SP

Posted 17/01/2012, 16:06

Qual o erro que está dando?
Ricardo Crivelli
Delphi Developer Certified
CobiT Foundation 4.1 Certified
@ricocrivelli
4Bytes Inc. - Desenvolvimento de sistemas especialistas web.

#12 TiagoArabe

TiagoArabe

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Masculino
  • Localidade:BH

Posted 17/01/2012, 16:18

Qual o erro que está dando?


Na verdade estou colocando este código na mesma página da index.php, e estou substituindo as partes que quero pelos "sessions" para assim colocar o nome do usuário de acordo com o ref da URL. Porém nada acontece... isso que é estranho. Vou postar o código inteiro para facilitar:

<?php
	include_once("classes/mySqlConn.php");
		function dados(){
			$ref = $_GET['ref'];
			// Aqui você faz a busca no BANCO DE DADOS para verificar se existe algo com o nome passado
			$sql = "SELECT * FROM usuarios WHERE user_usuario ='$ref'";
			$qr = self::execSql($sql);
			
			if(!empty($ref)){
			session_start();						//abre a sessao
			$dados = self::listQr($qr);				// resgato os dados
			$_SESSION["NOME"] = $dados["nome_usuario"];	// carregar a sessão nome
			$_SESSION["EMAIL"] = $dados["email_usuario"];	// carregar a sessão nome
			$_SESSION["CELULAR"] = $dados["celular_usuario"];	// carregar a sessão nome
			$_SESSION["USER"] = $dados["user_usuario"];	// carregar a sessão nome
			$_SESSION["SKYPE"] = $dados["skype_usuario"];	// carregar a sessão nome
			$_SESSION["CODIGO"] = $dados["codigo_usuario"];	// carregar a sessão nome
			}
			else{
			}
		}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Sucesso e Renda</title>
<meta name="description" content="Consultoria pessoal para ingressar na ZeekRewards" />
<meta name="keywords" content="zeekrewards, ganhar dinheiro, consultoria" />
<meta name="author" content="tiago lisboa" />
<meta name="revisit" content="1 days" />
<meta http-equiv="content-language" content="pt">
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" >  
<link rel="shortcut icon" href="favicon.ico" >
<link href="estilos.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery_validate.js"></script>
<script type="text/javascript" src="js/validate_func.js"></script>
</head>
<body>
	<div id="topo">
		<div class="topo_flash">
			<object height="140" width="920" data="textoZR.swf" type="application/x-shockwave-flash">
			<param value="textoZR.swf" name="movie" />
			<param value="transparent" name="wmode" />
			<param name="quality" value="high" />
			<p>CONTEÚDO EM FLASH, ATUALIZE SEU ADOBE FLASH PLAYER!</p>
			</object>
		</div>
			<div class="separador">
			</div>
	</div>
		<div id="corpo">
			<p><?php echo base64_decode($_GET["msn"]); ?></p>
			<div class="informacao">
					<img src="img/botao.jpg" />
						<div class="afiliado">
							<h1>Você está sendo convidado pelo afiliado(a):</h1>
								<h2><?php echo $_SESSION["USER"]; ?></h2>
									<div class="esquerda">
										<span>Nome:</span> <?php echo $_SESSION["NOME"]; ?><br/><br/>
										<span>Skype:</span> <?php echo $_SESSION["SKYPE"]; ?> <br/>
									</div>
										<div class="direita">
											<span>Email:</span> <?php echo $_SESSION["EMAIL"]; ?> <br/><br/>
											<span>Cel:</span> <?php echo $_SESSION["CELULAR"]; ?> <br/>
										</div>
						</div>
			</div>
				<div class="video">
					<object width="480" height="360"><param name="movie" value="http://www.youtube.com/v/bzlqmz2oM7c?version=3&amp;hl=pt_BR&amp;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/bzlqmz2oM7c?version=3&amp;hl=pt_BR&amp;rel=0" type="application/x-shockwave-flash" width="480" height="360" allowscriptaccess="always" allowfullscreen="true"></embed></object>
				</div>					
		</div>


#13 silici0

silici0

    ?

  • Usuários
  • 902 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP
  • Interesses:PHP, MySQL, XHTML, CSS, AJAX, JavaScript, Objective-C, Python, Games ... #geek

Posted 17/01/2012, 16:36

Repetindo : Primeiro você tem que fechar a sessão... sempre !

Abraços
Procurando freelancer
***********************************************
Bachelor of Technology in Technology of Information, with great knowledge in Windows operating systems and Unix-Like (BSD, Ubuntu and Slackware), languages (PHP, JavaScript and MySQL), semantic (DHTML, Tableless, Ajax, MVC, OO) and analysis (manages projects based on PMI).
Developer in PHP, JAVA, Python, Objective-c MySQL, DHTML, CSS, JAVASCRIPT, JQUERY, JSON, SMARTY, MDB2, DOCTRINE, CAKEPHP. Linux desktop for work and MacOS. E-commerces, CRM and bussiness strategys
Love-me and be FREE use UniCes-Like .

#14 --The Matrix--

--The Matrix--

    Normal

  • Usuários
  • 118 posts
  • Sexo:Masculino
  • Localidade:Avaré - SP

Posted 18/01/2012, 13:37

Você não chama a função em lugar algum! Tente assim:

<?php
        include_once("classes/mySqlConn.php");
     
                        $ref = $_GET['ref'];
                        // Aqui você faz a busca no BANCO DE DADOS para verificar se existe algo com o nome passado
                        $sql = "SELECT * FROM usuarios WHERE user_usuario ='$ref'";
                        $qr = self::execSql($sql);
                        
                        if(!empty($ref)){
                        session_start();                                                //abre a sessao
                        $dados = self::listQr($qr);                             // resgato os dados
                        $_SESSION["NOME"] = $dados["nome_usuario"];     // carregar a sessão nome
                        $_SESSION["EMAIL"] = $dados["email_usuario"];   // carregar a sessão nome
                        $_SESSION["CELULAR"] = $dados["celular_usuario"];       // carregar a sessão nome
                        $_SESSION["USER"] = $dados["user_usuario"];     // carregar a sessão nome
                        $_SESSION["SKYPE"] = $dados["skype_usuario"];   // carregar a sessão nome
                        $_SESSION["CODIGO"] = $dados["codigo_usuario"]; // carregar a sessão nome
                        }
                    
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Sucesso e Renda</title>
<meta name="description" content="Consultoria pessoal para ingressar na ZeekRewards" />
<meta name="keywords" content="zeekrewards, ganhar dinheiro, consultoria" />
<meta name="author" content="tiago lisboa" />
<meta name="revisit" content="1 days" />
<meta http-equiv="content-language" content="pt">
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" >  
<link rel="shortcut icon" href="favicon.ico" >
<link href="estilos.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery_validate.js"></script>
<script type="text/javascript" src="js/validate_func.js"></script>
</head>
<body>
        <div id="topo">
                <div class="topo_flash">
                        <object height="140" width="920" data="textoZR.swf" type="application/x-shockwave-flash">
                        <param value="textoZR.swf" name="movie" />
                        <param value="transparent" name="wmode" />
                        <param name="quality" value="high" />
                        <p>CONTEÚDO EM FLASH, ATUALIZE SEU ADOBE FLASH PLAYER!</p>
                        </object>
                </div>
                        <div class="separador">
                        </div>
        </div>
                <div id="corpo">
                        <p><?php echo base64_decode($_GET["msn"]); ?></p>
                        <div class="informacao">
                                        <img src="img/botao.jpg" />
                                                <div class="afiliado">
                                                        <h1>Você está sendo convidado pelo afiliado(a):</h1>
                                                                <h2><?php echo $_SESSION["USER"]; ?></h2>
                                                                        <div class="esquerda">
                                                                                <span>Nome:</span> <?php echo $_SESSION["NOME"]; ?><br/><br/>
                                                                                <span>Skype:</span> <?php echo $_SESSION["SKYPE"]; ?> <br/>
                                                                        </div>
                                                                                <div class="direita">
                                                                                        <span>Email:</span> <?php echo $_SESSION["EMAIL"]; ?> <br/><br/>
                                                                                        <span>Cel:</span> <?php echo $_SESSION["CELULAR"]; ?> <br/>
                                                                                </div>
                                                </div>
                        </div>
                                <div class="video">
                                        <object width="480" height="360"><param name="movie" value="http://www.youtube.com/v/bzlqmz2oM7c?version=3&amp;hl=pt_BR&amp;rel=0">
</param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/bzlqmz2oM7c?version=3&amp;hl=pt_BR&amp;rel=0" type="application/x-shockwave-flash" width="480" height="360" allowscriptaccess="always" allowfullscreen="true"></embed></object>
                                </div>                                  
                </div>

Ricardo Crivelli
Delphi Developer Certified
CobiT Foundation 4.1 Certified
@ricocrivelli
4Bytes Inc. - Desenvolvimento de sistemas especialistas web.




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq