phphyperlinkgeneratorbit.ly

Convert eBay Link Generator results into bitly.com link


I managed a small PHP script that takes the eBay product searched and converts it into promote eBay link.

It goes like this:

  1. user searches for example: ocz vertex
  2. clicks on "Submit" and gets the results in following format

http://rover.ebay.com/rover/1/711-53200-19255-0/1?icep_ff3=10&pub=5575165347&toolid=10001&campid=5337851510&customid=&icep_uq=ocz vertex&icep_sellerId=&icep_ex_kw=&icep_sortBy=15&icep_catId=&icep_minPrice=&icep_maxPrice=&ipn=psmain&icep_vectorid=229466&kwid=902099&mtid=824&kw=lg

(Can't fix that space in the link generated between ocz and vertex words)

Now, the result is nice, but I want to shorten it via bitly.com account using their API.
Basicly I want it to generate and convert the full eBay link results into small bitly.com link (http://ebay.to/2scU91k for example) and to see that link on my bitly account.

The process would go like this:

I found that and that and especially that, but didn't understand how do I implement the results as a new bitly convert.

Here's the PHP code:

<!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>
<link rel="stylesheet" type="text/css" href="css/screen.css">
<style type="text/css">
    body{
        margin:0px;
        font-size:0.7em;
        font-family:trebuchet ms;
                            color:#222;
    }
    #mainContainer{
        width:840px;    
        margin:5px;
    }
    table,tr,td{
        vertical-align:top;
    }
    .textInput{
        width:300px;
    }
    html{
        margin:0px;
    }
    .formButton{
        width:75px;
    }
    textarea,input,select{
        font-family:helvetica;
    }
    i{
        font-size:0.9em;
    }



    </style>
<script language="Javascript">
<!--
var copytoclip=1
function HighlightAll(theField) {
var tempval=eval("document."+theField)
tempval.focus()
tempval.select()
if (document.all&&copytoclip==1){
therange=tempval.createTextRange()
therange.execCommand("Copy")
window.status="Contents highlighted and copied to clipboard!"
setTimeout("window.status=''",1800)
}
}
//-->
</script>


</head>
<table width="80%" height="100px" align="center" style="margin:0 auto"><tr><td align="center">
<h2>Link Generator Online</h2>
</td><tr></table>
<table width="80%" align="center" style="margin:0 auto"><tr><td align="center">
       </div>

 </td><td valign="top">
 <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<br>
URL<br>
<input type=text style="font-size: 13px; font-family: tahoma,arial; font-weight: bold; color: #000000; BORDER: #555 1px solid ; BACKGROUND-COLOR: #FFF" input name="url"  size="20">
<br>

<br>
<input type="SUBMIT" name="submit" VALUE="Submit"> 
</form>
</td></tr></table>
<?php
if(isset($_POST['submit'])){
$url = $_POST['url'];
$name=array($url);
foreach ($name as $name) 
{
if (ereg("^\.",$url)) {
echo "<br><center><font color=\"red\">Invalid Characters.</center>";  
 Die();
}
if (ereg("\<", $url)) {
echo "<br><center><font color=\"red\">Invalid Characters.</center>";  
 Die();
}
if (ereg("\[", $url)) {
echo "<br><center><font color=\"red\">Invalid Characters.</center>";  
 Die();
}
if (ereg("\'", $url)) {
echo "<br><center><font color=\"red\">Invalid Characters.</center>";  
 Die();
}
if (ereg("\#", $url)) {
echo "<br><center><font color=\"red\">Invalid Characters.</center>";  
 Die();
}
if (ereg("\`", $url)) {
echo "<br><center><font color=\"red\">Invalid Characters.</center>";  
 Die();
}

if (!strlen($url)) {
echo "<br><center><font color=\"red\">Empty Field.</center>";

Die();
}
if (strlen($url) > 100) {
echo "<br><center><font color=\"red\">The field cannot contain more than 150 characters.</center>";

 Die();
}
}
?>
<br>
<center>
<form name="vini">
<a class="highlighttext" href="javascript:HighlightAll('vini.select1')">Select All</a><br>
<textarea name="select1" rows=3 cols=75 style="font-family:tahoma;color:#555;border:1px dashed #ccc">
http://rover.ebay.com/rover/1/711-53200-19255-0/1?icep_ff3=10&pub=5575165347&toolid=10001&campid=5337851510&customid=&icep_uq=<?php echo $url ?>&icep_sellerId=&icep_ex_kw=&icep_sortBy=15&icep_catId=&icep_minPrice=&icep_maxPrice=&ipn=psmain&icep_vectorid=229466&kwid=902099&mtid=824&kw=lg
</textarea>
<br>
</form>

<?php
}
?>
</body>
</html>

See on live: Ebay link Generator


Solution

  • I built a small solution that works without external libraries. It essentially boils down to this:

    First step: Get the token

    You only need to do this once. Bitly's documentation lists a few examples how you can do it using curl, I think that is the easiest way. You could also do it with PHP. Simply make this POST request (taken from here):

    curl -u "username:password" -X POST "https://api-ssl.bitly.com/oauth/access_token"
    

    The result is something like this:

    e663e30818201d28dd07803e57333bed4f15803a
    

    That is your token.

    Second step: Make the request

    Insert the token and url-encoded URL into the HTTP request to the /v3/shorten endpoint:

    <?php
    $ebay_url = "http://rover.ebay.com/rover/1/711-53200-19255-0/1?icep_ff3=10&pub=5575165347&toolid=10001&campid=5337851510&customid=&icep_uq=ocz%20vertex&icep_sellerId=&icep_ex_kw=&icep_sortBy=15&icep_catId=&icep_minPrice=&icep_maxPrice=&ipn=psmain&icep_vectorid=229466&kwid=902099&mtid=824&kw=lg"
    
    $token = "e663e30818201d28dd07803e57333bed4f15803a"; // change this
    $endpoint = "https://api-ssl.bitly.com/v3/shorten?access_token=".$token."&longUrl=".urlencode($ebay_url)."";
    $result = file_get_contents($endpoint);
    $json = json_decode($result, true);
    $short_url = $json["data"]["url"];
    echo $short_url;
    ?>
    

    The result of the API call is JSON and needs to be decoded. An example is in the documentation. This code example does not take into consideration API timeouts or other errors that might occur (such as token expiry, which is currently not an issue).

    The complete code:

    <!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>
    <link rel="stylesheet" type="text/css" href="css/screen.css">
    <style type="text/css">
        body{
            margin:0px;
            font-size:0.7em;
            font-family:trebuchet ms;
                                color:#222;
        }
        #mainContainer{
            width:840px;    
            margin:5px;
        }
        table,tr,td{
            vertical-align:top;
        }
        .textInput{
            width:300px;
        }
        html{
            margin:0px;
        }
        .formButton{
            width:75px;
        }
        textarea,input,select{
            font-family:helvetica;
        }
        i{
            font-size:0.9em;
        }
        </style>
    <script language="Javascript">
    <!--
    var copytoclip=1
    function HighlightAll(theField) {
        var tempval=eval("document."+theField)
        tempval.focus()
        tempval.select()
        if (document.all&&copytoclip==1){
            therange=tempval.createTextRange()
            therange.execCommand("Copy")
            window.status="Contents highlighted and copied to clipboard!"
            setTimeout("window.status=''",1800)
        }
    }
    //-->
    </script>
    
    
    </head>
    <table width="80%" height="100px" align="center" style="margin:0 auto"><tr><td align="center">
    <h2>Link Generator Online</h2>
    </td><tr></table>
    <table width="80%" align="center" style="margin:0 auto"><tr><td align="center">
           </div>
    
     </td><td valign="top">
     <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <br>
    Insert keywords:<br>
    <input type=text style="font-size: 13px; font-family: tahoma,arial; font-weight: bold; color: #000000; BORDER: #555 1px solid ; BACKGROUND-COLOR: #FFF" input name="url"  size="20">
    <br>
    
    <br>
    <input type="SUBMIT" name="submit" VALUE="Submit"> 
    </form>
    </td></tr></table>
    <?php
    if(isset($_POST['submit'])){
    $url = $_POST['url'];
    $name = array($url);
    foreach ($name as $name) {
        if (preg_match("/^[\.\<\[#`]/",$url)) {
            echo "<br><center><font color=\"red\">Invalid Characters.</center>";  
            Die();
        }
        if (!strlen($url)) {
           echo "<br><center><font color=\"red\">Empty Field.</center>";
           Die();
        }
        if (strlen($url) > 100) {
           echo "<br><center><font color=\"red\">The field cannot contain more than 150 characters.</center>";
           Die();
        }
    }
    
    $ebay_url = "http://rover.ebay.com/rover/1/711-53200-19255-0/1?icep_ff3=10&pub=5575165347&toolid=10001&campid=5337851510&customid=&icep_uq=".urlencode($url)."&icep_sellerId=&icep_ex_kw=&icep_sortBy=15&icep_catId=&icep_minPrice=&icep_maxPrice=&ipn=psmain&icep_vectorid=229466&kwid=902099&mtid=824&kw=lg";
    
    $token = "e663e30818201d28dd07803e57333bed4f15803a";
    $endpoint = "https://api-ssl.bitly.com/v3/shorten?access_token=".$token."&longUrl=".urlencode($ebay_url);
    $result = file_get_contents($endpoint);
    $json = json_decode($result, true);
    $short_url = $json["data"]["url"];
    
    ?>
    <br>
    <center>
    <form name="vini">
    <a class="highlighttext" href="javascript:HighlightAll('vini.select1')">Select All</a><br>
    <textarea name="select1" rows=3 cols=75 style="font-family:tahoma;color:#555;border:1px dashed #ccc">
    <?php echo $short_url; ?>
    </textarea>
    <br>
    </form>
    
    <?php
    }
    ?>
    </body>
    </html>
    

    Note: I changed your ereg calls to preg_match for compatibility with PHP7 and shortened the ifs with a regular expression. I also used urlencode($url) so that spaces won't break the link.