Skip navigation.
Home

Wonky Code

Code only a mother could love.

Wonky Code

The title is actually misleading. If I wrote this and my mum was a programmer she would probably beat me stupid. Luckily she isn't a programmer, I don't live at home and I didn't write this.

Props to Au5lander for sending this in with the title, "sometimes you just have to start over". In this case I can't disagree! This code makes it as a WTF because it is just so ugly! You have to concentrate just read it!

Other WTFs::

  1. Spelling Mistakes.
  2. Improper use of global variables in functions.
  3. WTF...
    <?php
    while(strstr($search,"     ")!=FALSE)
        
    $search=str_replace("     "," ",$search);
    while(
    strstr($search,"    ")!=FALSE)
        
    $search=str_replace("    "," ",$search);
    while(
    strstr($search,"   ")!=FALSE)
        
    $search=str_replace("   "," ",$search);
    while(
    strstr($search,"  ")!=FALSE)
        
    $search=str_replace("  "," ",$search);
    ?>
  4. Minor WTF. Returning empty string on error, array on success:
    <?php
    function get_dir($s){
    global
    $dir,$url,$maxf;
    $dp=opendir($s);
    if(
    $dp==FALSE)
        return
    "";
    for(
    $nfiles=0;$tmp=readdir($dp);$nfiles++)
    {
        if(
    $tmp)
            
    $files[$nfiles]=$tmp;
        else
            break;
    }
    closedir($dp);
    return
    $files;
    }
    ?>

There are piles of other little WTF's. I'll let you find the others.

<?php
function getcurl($file,$n){
global
$dir,$url,$maxf,$originaldir;
$cwd = $url;
if(isset(
$ret))
unset(
$ret);
if(
$n)
{
    if(
strstr(substr($url,0,7),"http://")==FALSE)
        
$httpurl=false;
    else
        
$httpurl=true;
    if(
$originaldir)
        
$ret=$cwd."/".$originaldir."/".$file;
    else
        
$ret=$cwd."/".$dir."/".$file;
}
else
    
$ret=$cwd;

$ret=str_replace("\\","/",$ret);
$ret=str_replace("\\\\","/",$ret);
$ret=str_replace("////","/",$ret);
$ret=str_replace("///","/",$ret);
$ret=str_replace("//","/",$ret);
if(
$httpurl)
    
$ret="http://".substr($ret,6,strlen($ret)-6);
return
$ret;
}

function
get_dir($s){
global
$dir,$url,$maxf;
$dp=opendir($s);
if(
$dp==FALSE)
    return
"";
for(
$nfiles=0;$tmp=readdir($dp);$nfiles++)
{
    if(
$tmp)
        
$files[$nfiles]=$tmp;
    else
        break;
}
closedir($dp);
return
$files;
}


function
gfinf(){
global
$dir,$url,$maxf,$originaldir;
if(isset(
$ret))
    unset(
$ret);
settype($ret,"string");
$cwd=getcwd()."/";
if(!
is_dir($dir))
{
    
$originaldir=$dir;
    
$dir=$cwd.$dir;
}
$dir=str_replace("\\","/",$dir);
$dir=str_replace("//","/",$dir);
$dir=str_replace("\\\\","/",$dir);
$dir=str_replace("///","/",$dir);
if(
defined("PHP5")&&PHP5)
    
$files=scandir($dir);
else
    
$files=get_dir($dir);
$nfiles=count($files);
if(isset(
$search))
    unset(
$search);
$search=$_GET["search"];
$search=str_replace("/"," ",$search);
$search=str_replace("\\"," ",$search);
$search=str_replace("-"," ",$search);
$search=str_replace("."," ",$search);
$search=str_replace(","," ",$search);
while(
strstr($search,"     ")!=FALSE)
    
$search=str_replace("     "," ",$search);
while(
strstr($search,"    ")!=FALSE)
    
$search=str_replace("    "," ",$search);
while(
strstr($search,"   ")!=FALSE)
    
$search=str_replace("   "," ",$search);
while(
strstr($search,"  ")!=FALSE)
    
$search=str_replace("  "," ",$search);
$tmo=$search;
if(isset(
$search))
    unset(
$search);
$search=explode(" ",$tmo);
$nsearch=count($search);
settype($ntt,"integer");
for(
$n=0;isset($files[$n])&&$files[$n];$n++)
{
    if(
is_dir($dir.$files[$n]))
    {
        if(
defined("PHP5")&&PHP5)
            
$ss=scandir($dir.$files[$n]);
        else
            
$ss=get_dir($dir.$files[$n]);
        
$nss=count($ss);
        if(
$nss>2)
        {
            for(
$nn=0;$nn<$nss;$nn++)
            {
                if(!
is_dir($dir.$files[$n].$ss[$nn]))
                {
                    
$tt[$ntt]=$ss[$nn];
                    
$ntt++;
                }
            }
        }
    }
}
if(isset(
$temp))
    unset(
$temp);
$temp[1]=implode("/¨*'*¨/",$files);
$temp[2]=implode("/¨*'*¨/",$tt);
if(isset(
$files))
    unset(
$files);
if(isset(
$tt))
    unset(
$tt);
$temp[3]=$temp[1].$temp[2];
$files=explode("/¨*'*¨/",$temp[3]);
$nfiles=count($files);
if(isset(
$temp))
    unset(
$temp);
$nn=$nfiles;
if(isset(
$files[$nn]))
    
$nn++;
for(
$n=0;$n<$nfiles;$n++)
{
    if(isset(
$files[$n]))
    {
        if(!
is_dir($dir.$files[$n])&&!is_dir($files[$n]))
        {
            if(
$files[$n]!=".."&&$files[$n]!=".")
            {
                
$t[$nn]=$files[$n];
                
$nn++;
            }
        }
    }
}
if(isset(
$files))
    unset(
$files);
if(isset(
$tt))
    unset(
$tt);
settype($files,"array");
$tt=implode("/¨*'*¨/",$t);
if(isset(
$t))
    unset(
$t);
$files=explode("/¨*'*¨/",$tt);
if(isset(
$tt))
    unset(
$tt);
$nfiles=count($files);
if(isset(
$files[$nn]))
    
$nn++;
for(
$n=0;$n<$nfiles&&$n<=$maxf;$n++)
{
    for(
$nn=0;$nn<$nsearch;$nn++)

    {
        if(
strstr($files[$n],$search[$nn])!=FALSE)
        {
            if(isset(
$putfile))
                unset(
$putfile);
            
$putfile=substr($dir.$files[$n],strlen($dir));
            
$o="filename=$putfile&sha1=".sha1_file($dir.$files[$n]).
               
"&md5=".md5_file($dir.$files[$n]).
               
"&size=".filesize($dir.$files[$n]).
               
"&url=".getcurl($putfile,1);
            if(!isset(
$nfirst)||!$nfirst)
            {
                
$nfirst=1;
                
$ret=$o;
            }
            else
            
$ret.="\n".$o;
        }
    }
}
return
$ret;
}
//Begining
require_once("config.php");
if(!isset(
$_GET["source"])||!$_GET["source"]||!isset($_GET["search"])||!$_GET["search"])
{
    exit;
}
if(
strlen($_GET["search"])<$searchlen[1])
    die(
"ERROR:MinimumSearchLenght:".$searchlen[1]);
if(
$searchlen[2]!=0)
{
    if(
strlen($_GET["search"])>$searchlen[2])
        die(
"ERROR:MaximumSearchLenght:".$searchlen[2]);
}
$ret=gfinf();
if(
$ret)

    die(
$ret);
exit;
?>

one wtf, two wtf, three wtf...ah ah ah!

Wonky Code

I had to confirm that this was production code. It's always more funny, or tragic, when production code is bad. Thanks to Søren for sending this in.

What's the most efficient way to skip a few numbers? Well it's not this way! It's bad enough that 2, 3 and 4 are literals and not constants, but they also represent database logic. At least they didn't select * and skip records with the wrong TypeId's.

XML feed