Miért lesz ebből végtelen ciklus?
Lényegében generálok 5 random karaktert utána ellenőrzöm ,hogy benne van-r a táblában, ha benne van akkor egy újra és újra generálok 5 random, karakter amíg nem lesz egy olyan ami nincs a taáblában ha nincs akkor egy új rekord hozok létre a randnom változóval.
<?php
if (empty($_POST["url"]))
{
print "Nem adtál meg url-t a semmit nem tudjuk rövidíteni.";
}
else
{
do {
$characters = array(
"A","B","C","D","E","F","G","H","J","K","L","M",
"N","P","Q","R","S","T","U","V","W","X","Y","Z",
"1","2","3","4","5","6","7","8","9");
$keys = array();
while(count($keys) < 7) {
$x = mt_rand(0, count($characters)-1);
if(!in_array($x, $keys)) {
$keys[] = $x;
}
}
foreach($keys as $key){
$random_chars .= $characters[$key];
}
$url = $_POST["url"];
date_default_timezone_set('Europe/Budapest');
$date = date("Y.m.d. H:i:s GMT", time());
$felhasznalo = "XXXXXXXX";
$jelszo = "XXXXXXX";
$adatbazis = "XXXXXXX";
$kapcsolat = @mysql_connect( "XXXXXXX.XXXXXXXX.XX" , $felhasznalo, $jelszo);
if ( ! $kapcsolat ) {
die ( "Nem lehet kapcsolódni a Mysql kiszolgálóhoz !" .mysql_error() );
}
@mysql_select_db( $adatbazis )
or die ("Nem lehet megnyitni az adatbázist".mysql_error() );
$eredmeny = mysql_query( "SELECT * FROM url WHERE rand='$random_chars'");
$sorokszama = mysql_num_rows( $eredmeny);
mysql_close ( $kapcsolat );
} while ($sorokszama < "1");
$kapcsolat = @mysql_connect( "XXXXXXXX.XXXXXXXX.XXX" , $felhasznalo, $jelszo);
if ( ! $kapcsolat ) {
die ( "Nem lehet kapcsolódni a Mysql kiszolgálóhoz !" .mysql_error() );
}
@mysql_select_db( $adatbazis )
or die ("Nem lehet megnyitni az adatbázist");
$parancs = "INSERT INTO url ( url , datum , rand )
VALUES ( '$url', '$date' , '$random_chars' )";
mysql_query( $parancs , $kapcsolat )
or die ( "INSERT hiba ".mysql_error() );
mysql_close ( $kapcsolat );
print " [link]
}
?>
így ránézésre:
a mysql_connect és a mysql_select_db elég egyszer, a kód elején és egy mysql_close a végén, nem kell minden egyes generált kódnál, stb. bezárni és újracsatlakozni
illetve
while ($sorokszama < "1")
helyett
while ($sorokszama > 0)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!