多个缩短网址的问题

时间:2012-03-26 16:42:31

标签: php

我有一个缩短多个链接的代码,但该代码(带有一个可选后缀)代码只能从第二个链接开始工作:

$url_to_shorten = $_POST[links];
$ownshuff       = $_POST[shuff];   
$theurls = explode("\n",$url_to_shorten);  
foreach($theurls as $urlmulti){  
shortcreate($urlmulti,$shuffss,$ownshuff);
}

这是一个例子:

我的链接

http://www.123.com
http://www.1234.com
http://www.1235.com

我的后缀是:(Hello_Man)。

用上面的代码打印

http://www.mysite.com/IUo
http://www.mysite.com/kOl-Hello_Man
http://www.mysite.com/Rww-Hello_Man

并且它不会打印第一个链接的后缀。

shortcreate函数是:

function shortcreate($url_long, $Suffix, $ownshuf){
    global $db;
    $chars = $Suffix;
    while (!shortisUnique($chars)) {
        if ($ownshuf != "") {
            $chars = shortgenerate_chars() . "-" . $ownshuf;
        }
        else {
            $chars = shortgenerate_chars();
        }
    }
    $url = $url_long;
    $url = trim($url);
    $url = mysql_real_escape_string($url);
    if (!shortisThere($url)) {
        $q = "INSERT INTO `shorturls` (url, unique_chars) VALUES ('" . $url . "', '" . $chars . "')";
        //echo $q;
        $r = $db->query($q);
        if (mysql_affected_rows()):
            $q       = "SELECT * FROM `shorturls` WHERE `url`='" . $url . "'";
            $r       = $db->query($q);
            $row     = $db->fetch($r);
            $the_url = SITE_URL . "" . $row[2];

            echo "$the_url\n";

        else:
            $the_url = NULL;
            return false;
        endif;
    }
    else {
        $q       = "SELECT * FROM `shorturls` WHERE `url` = '" . $url . "'";
        $r       = mysql_query($q);
        $row     = mysql_fetch_row($r);
        $the_url = SITE_URL . "" . $row[2];

        echo "$the_url\n";

    }
}

我需要该代码才能适用于所有链接。任何帮助

问候

1 个答案:

答案 0 :(得分:1)

我猜问题出现在下一段代码中:

$chars = $Suffix;
while (!shortisUnique($chars)) {
    if ($ownshuf != "") {
        $chars = shortgenerate_chars() . "-" . $ownshuf;
    }
    else {
        $chars = shortgenerate_chars();
    }
}

你给$ chars变量后缀的值,你检查它是否唯一(猜测不是因为它进入循环)而$ownshuf != ""的条件由于某种原因返回false(考虑与我们分享该参数的值是什么),否则$chars的输出将返回带有“ - ”的字符串。

提醒:与我们分享该参数的值是什么