Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vitor Ferrari

[Resolvido] Gerar Nomes aleatórios.

Recommended Posts

Minha dúvida é a seguinte...

Criei um sistema simples de encurtar URL,

é exatamente como um sistema de cadastro mais tem um pequeno problema...

Eu gostaria que quando o usuário encurtasse uma url ela gerasse um nome aleatório ;

Ex: http://localhost/AdOSf5f1 entenderam?

no meu caso ela simplesmente faz um cadastro no banco de dados, gera um id e url original;

e na página de redirecionar eu uso assim: link.php?url=http://localhost/

Caso vocês não tenham entendido fala ai no post;

Compartilhar este post


Link para o post
Compartilhar em outros sites

nunca crie nomes aleatórios engraçado kkkkkkkkkk,

 

Será que isso rola?

$tamanho = mt_rand(5,9);
$all_str = "abcdefghijlkmnopqrstuvxyzwABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
$nome = "";
for ($i = 0;$i <= $tamanho;$i++){
  $nome .= $all_str[mt_rand(0,61)];
}
echo $nome

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara ficou perfeito o seu código de gerar um nomes aleatórios,

coloquei ele em uma hiddenField fiel no seguinte modo:

 

<input type="hidden" name="hiddenField" id="hiddenField" value="http://localhost/<?php 
$tamanho = mt_rand(5,9);
$all_str = "abcdefghijlkmnopqrstuvxyzwABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
$nome = "";
for ($i = 0;$i <= $tamanho;$i++){
  $nome .= $all_str[mt_rand(0,61)];
}
echo $nome
?>" />

 

Tenho mais uma dúvida, após isso ele esta gerando normalmente no MySql o url encurtado,

na seguinte forma: http://localhost/URL como você me mandou o script

 

agora eu gostaria de saber como eu faço para quando o usuário clicar em Encurtar na próxima tela ele exibir o url encurtado, ou seja ele vai puchar o url do seu script e emprimir na proxima página.

 

Caso precise do código da minha página segue em Spoiler:

 

<?php require_once('Connections/conexao.php'); ?>

<?php

if (!function_exists("GetSQLValueString")) {

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")

{

if (PHP_VERSION < 6) {

$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

}

 

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

 

switch ($theType) {

case "text":

$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

break;

case "long":

case "int":

$theValue = ($theValue != "") ? intval($theValue) : "NULL";

break;

case "double":

$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";

break;

case "date":

$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

break;

case "defined":

$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;

break;

}

return $theValue;

}

}

 

$editFormAction = $_SERVER['PHP_SELF'];

if (isset($_SERVER['QUERY_STRING'])) {

$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);

}

 

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {

$insertSQL = sprintf("INSERT INTO url (url_original, url_encurtada) VALUES (%s, %s)",

GetSQLValueString($_POST['url_original'], "text"),

GetSQLValueString($_POST['hiddenField'], "text"));

 

mysql_select_db($database_conexao, $conexao);

$Result1 = mysql_query($insertSQL, $conexao) or die(mysql_error());

 

$insertGoTo = "index.php";

if (isset($_SERVER['QUERY_STRING'])) {

$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";

$insertGoTo .= $_SERVER['QUERY_STRING'];

}

header(sprintf("Location: %s", $insertGoTo));

}

 

$colname_Recordset1 = "-1";

if (isset($_SESSION['MM_insert'])) {

$colname_Recordset1 = $_SESSION['MM_insert'];

}

mysql_select_db($database_conexao, $conexao);

$query_Recordset1 = sprintf("SELECT * FROM url WHERE url_original = %s", GetSQLValueString($colname_Recordset1, "text"));

$Recordset1 = mysql_query($query_Recordset1, $conexao) or die(mysql_error());

$row_Recordset1 = mysql_fetch_assoc($Recordset1);

$totalRows_Recordset1 = mysql_num_rows($Recordset1);

?>

<!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=utf-8" />

<title>Encurtador de url</title>

</head>

 

<body>

<form action="<?php echo $editFormAction; ?>" method="post" name="form1" id="form1">

<table align="center">

<tr valign="baseline">

<td nowrap="nowrap" align="right">Url Original</td>

<td><input type="text" name="url_original" value="" size="32" /></td>

</tr>

<tr valign="baseline">

<td nowrap="nowrap" align="right"> </td>

<td><input type="submit" value="Encurtar" /></td>

</tr>

<tr valign="baseline">

<td nowrap="nowrap" align="right"> </td>

<td><input type="hidden" name="hiddenField" id="hiddenField" value="http://localhost/<?php

$tamanho = mt_rand(5,9);

$all_str = "abcdefghijlkmnopqrstuvxyzwABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";

$nome = "";

for ($i = 0;$i <= $tamanho;$i++){

$nome .= $all_str[mt_rand(0,61)];

}

echo $nome

?>" /></td>

</tr>

</table>

<input type="hidden" name="MM_insert" value="form1" />

</form>

 

<p> </p>

<p> </p>

<p> </p>

</body>

 

 

Se precisar de mais algo fala ai ;D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para você fazer algo do tipo

 

http://localhost/JasdojAJds, você vai ter de pesquisar sobre urls Amigáveis...

 

tem um artigo bem interessante!

 

Clique aqui

 

Amigo, dei uma olhada no artigo, é até interessante mas eu vou ter que ficar fazendo isso manualmente, o encurtador é instantâneo, você já deve ter visto alguns encurtadores né?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, mais de qualquer forma se usa "url amigaveis" para que dominio.com.br/kdsadaskda seja redirecionado para o link contido no SQL

 

você faaria algo assim

 

pagina link.php

 

<?php
       $url = $_GET['url'];
if(!empty($url))
{
	$sql = mysql_fetch_array(mysql_query("SELECT..."));
	if(isset($sql['url']) && !empty($sql['url'])) {
		header('Location: '. $sql['url']);
               }else{
                  header('Location: index.php');
               } 
else
{
	header('Location: index.php');
}
?>

 

no arquivo .htaccess coloque

 

RewriteEngine on
RewriteRule    ^([a-zA-Z0-9_]+)$ link.php?url=$1 [L]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, mais de qualquer forma se usa "url amigaveis" para que dominio.com.br/kdsadaskda seja redirecionado para o link contido no SQL

 

você faaria algo assim

 

pagina link.php

 

<?php
       $url = $_GET['url'];
if(!empty($url))
{
	$sql = mysql_fetch_array(mysql_query("SELECT..."));
	if(isset($sql['url']) && !empty($sql['url'])) {
		header('Location: '. $sql['url']);
               }else{
                  header('Location: index.php');
               } 
else
{
	header('Location: index.php');
}
?>

 

no arquivo .htaccess coloque

 

RewriteEngine on
RewriteRule    ^([a-zA-Z0-9_]+)$ link.php?url=$1 [L]

 

Poderia explicar melhor o código ? não entendi muito bem..

caso precise da tabela do mysql segue abaixo:

 


-- Estrutura da tabela `url`
--

CREATE TABLE IF NOT EXISTS `url` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `url_original` varchar(500) NOT NULL,
 `url_encurtada` varchar(250) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ;

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara eu vou te dar uma ajudinha ai..

 

Começando :

 

1. Va edite seu arquivo .htaccess

 

e bote ::

#redicionamento by: mk
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule    ^([a-zA-Z0-9_]+)$ link.php?url=$1 [L]
</IfModule>

 

2. Agora crie a pagina link.php

com o codigo

<?php
       $url = $_GET['url'];
	include_once "config.php";
       if($url)
       {
               $sql =mysql_query("SELECT * FROM url WHERE url_encurtada = '$url' ");
       if(mysql_num_rows($sql) == 1){
while($l = mysql_fetch_array($sql)){
               $vai  = $l['url_original'];
               }
			echo '<script>location.href="'.$vai.'";</script>';   
}
else{
echo "Nao Achada !";
}
}
else
{
//ele nao tem uma url ex localhost/link.php
echo '<script>location.href="index.php";</script>';
}
?>

 

Bom assim ele ja ira redicionar se ex: na bd tiver url_original abc

e você for localhost/abc ele ira se redicionar para url_encurtada

 

Simples agora você so faz a pagina para registrar na bd essas URL's

 

Tomara que te ajude isso dai

 

"caso tenha algum erro me fale ai"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei usar o código, mesmo assim não pego, quando eu coloco o URL Encurtado ex: http://localhost/WE7H8KpL ele simplesmente da erro 404, imaginei que você tinha trocado o url_encurtado pelo url_original, colocando depois do / o url_original e redirecionando para o url_encurtado, mesmo assim da erro 404.

 

Quando eu coloco http://localhost/link.php?url=r5xZlEHgO ele redireciona normalmente para o url_original (http://www.google.com), mais quando eu coloco

http://localhost/r5xZlEHgO não pega.

Compartilhar este post


Link para o post
Compartilhar em outros sites

kkkkkkkkkkkk.

eu tentei agora a pouco e eu vi isso.

e agora eu ja corigi ali o erro grave .

Sory

 

ah cara ai eh outra historia.

pq ai o você n pode usa o mod_rewrite

tenta a dica ai do cara de baixo

http://forum.imasters.com.br/topic/465559-solucao-para-urls-amigaveis-que-nao-funcionam/

Compartilhar este post


Link para o post
Compartilhar em outros sites

verifica no httpd.conf se o mod_rewrite está ativo!

 

tente algo como

 

e no htacces tenta algo que vi em outr post

retira o if e deixa somente

 

Options FollowSymLinks
RewriteEngine on

RewriteBase /
RewriteRule  ^([a-zA-Z0-9_]+)$ link.php?url=$1 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Até agora o script de criar nomes aleatório, o de redirecionar estão pegando

unica coisa que não ta dando é a de usar a URL Amigável, já tentei de tudo mais não ta dando :s

 

Bom...

Oque eu queria neste tópico eu já consegui fazer, que era criar nomes aleatórios, então eu abri um novo tópico sobre URL amigáveis,

http://forum.imasters.com.br/topic/482124-url-amigavel/

 

Moderadores podem fechar este tópico

Por favor respondam no outro;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele quer gerar nome aleatorio para encurtar url, com md5 ele vai gerar um hash de 32 caracteres, que seria enorme para um link...

 

A solução do post #2 não é adequada para esse caso.

 

A aleatoriedade é feita, no entanto não há garantia de strings únicas.

 

Esse tópico pode ser útil:

http://forum.imasters.com.br/topic/427112-criptografar-o-get-no-php/page__p__1686364#entry1686364

 

Outro tópico relacionado:

http://forum.imasters.com.br/topic/469639-qual-o-algoritmo-para-encurtar-url/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Até agora o script de criar nomes aleatório, o de redirecionar estão pegando

unica coisa que não ta dando é a de usar a URL Amigável, já tentei de tudo mais não ta dando :s

 

Bom...

Oque eu queria neste tópico eu já consegui fazer, que era criar nomes aleatórios, então eu abri um novo tópico sobre URL amigáveis,

http://forum.imasters.com.br/topic/482124-url-amigavel/

 

Moderadores podem colocar RESOLVIDO neste tópico

Por favor respondam no outro;

Compartilhar este post


Link para o post
Compartilhar em outros sites

A solução do post #2 não é adequada para esse caso.

 

A aleatoriedade é feita, no entanto não há garantia de strings únicas.

 

Esse tópico pode ser útil:

http://forum.imasters.com.br/topic/427112-criptografar-o-get-no-php/page__p__1686364#entry1686364

 

Outro tópico relacionado:

http://forum.imasters.com.br/topic/469639-qual-o-algoritmo-para-encurtar-url/

ele gera tipo

$gerada = $nome // fica tipo xF4aD4t...

ai ele pega essa variavel e registra no sql

to pensando que voce nao pensa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas aí é que esta a graça de da "técnica" de AlphaID: Você não precisa do fominha do UNIQUE pois a função vai transformar um inteiro em uma string e esse inteiro na grande maioria das vezes é o ID da chave-primária que é sequencial e impossível, tanto quanto eu sei, de ser duplicado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.