Results 1 to 5 of 5
  1. #1
    Schizophrenic Serial Rapist
    Destroyer of Wack Threads
    dns's Avatar
    Join Date
    Feb 2011
    Location
    ::1
    Posts
    1,349
    Points
    1,916
         User Info     Contact     Gamer ID
    Join Date
    Feb 2011
    Location
    ::1
    Posts
    1,349
    Points
    1,916

    Contact info:

    Youtube Channel: http://www.youtube.com/user/newhaxcom

    Post dns' PHP Starter's Tutorial

    @PHP Starter's Tutorial Project
    @author dns
    @copyright 2011-2012
    @homepage newhax.com



    Introduction

    Hello, and thank you for your interest in getting started with PHP. I will be covering the basics of completing a simple and basic project. This will allow you to witness and perform some of the basics of setting up and working with PHP scripting, a simple MySQL Database, and a small amount of HTML/CSS. I am assuming at this point that you already know some HTML/CSS basics. We will only be using enough HTML/CSS to display what we create with PHP. If you need more info or training regarding HTML/CSS, then you should visit HTML Tutorial and CSS Tutorial whenever you have time or need references.


    Setting Up

    For this tutorial, I will be writing the PHP, HTML, and CSS scripting using PHP Designer Pro 7, available for download (free) in my thread at http://newhax.com/forums/f40/php-des...o-v7-2-a-2512/.

    In order to run PHP files, the system which it is running on needs to have PHP installed and active. Here are a couple of ways to do this:

    Option 1. You can easily find a free webhost which is PHP capable by doing a search on google for "free webhosts". Almost all hosts now are PHP friendly and allow FTP hosting to easily transfer files. Most of them also have Control Panels allowing the setup of MySQL Databases for your account. You won't be able to change any PHP configuration settings on a webhost, but you shouldn't need to for this tutorial.

    Option 2. Download & Install XAMPP from apache friends - xampp for your operating system. After you download it, you should place your files inside of wherever you installed the XAMPP directory, into the "htdocs" folder. [Example: C:\xampp\htdocs\PHP_Starters_Tut]. Ensure you have the XAMPP control panel open with "Apache" and "MySQL" enabled.

    (Both a webhost or XAMPP should have PHPMyAdmin for setting up & configuring your database. I will be using XAMPP for both the PHP environment and MYSQL Server for the scope of this tutorial.)


    Getting Started

    By now you should have a PHP and MYSQL server in which to host your project.

    1. Making the database

    First things first, let's create a database and set up our tables for use with our project:
    • Open your phpMyAdmin panel page, click the "Databases" tab, put "phpstut" as the database name, select "utf-8 ci" for the collation, and click "Create".
    • Now click "phpstut" from the list of databases from the list on the left side after it is created.
    • You should now see a page displaying "Create table on database phpstut". Put "tutdata" for the table name, 2 for the number of columns, and then click "Go".
    • The create table page should now display. It should be displaying 2 columns waiting for your input.
    • For the first column, put "id" as the column name, "int" as the type, make the index "primary", check (enable) the "auto-increment" box, and leave the rest alone.
    • On the second column, put "tehdata" as the column name, "LONGTEXT" as the type, and leave the rest alone.
    • On the third column, name it "tehtime", select "timestamp" for the type, select "CURRENT_TIMESTAMP" for the default, and leave the rest alone. Now click save. You now have a database with a table with 3 columns on it.
    *Note: Making the id column the primary / auto-incremented box will allow this table to automatically number your data as it enters the table for easy storage and retrieval. Similar methods are used for member id's, thread numbers on forums, etc.

    Next, we need to create a user for the newly created database:
    • Now click on the "Privileges" button in phpMyAdmin.
    • You should see a link for "Add a new user". Click that, for 'Username' select "Text Field", and put in a username.
    • For 'Host' select "local".
    • Select "Text Field" for password and enter a password for your user in the next two boxes.
    • Make sure 'Grant all privileges on database "phpstut"' is chosen, click "Check All" on Global privileges, and then click "Go".
    • You now have an account with priviledges to access and manage the database you created.

    2. Setting up PHP Designer Pro 7 and the files for your project


    Now let's open PHP Designer Pro 7 and start a new project. Do this by clicking "Project" in the Menu, and then "Project Manager". Now click "New", put "PHP Starters Tut" as the Project Title, and click Next.

    If you chose to use XAMPP for the project, browse to and select the 'htdocs' folder and then create a new folder inside of it named "PHP_Starters_Tut". If you chose a webhost instead, then simply create your project folder wherever is convenient to you on your system. (You will later need to save and upload the project files from the project folder to your webhosting root directory in order to view them live if doing this.)

    Click Next three more times since we won't be using the other Project tools, click Finish, and then click Ok. Now double click on your new project's name or click it and then press Ok. Now your Project is now ready for adding new files.

    Now, minimize PHP Designer Pro 7 and go to the PHP_Starters_Tut folder you created previously. Inside of it, create a new folder named "includes". This folder will very soon store our Database configuration settings (config.inc.php) and Database class file (db.class.php).

    Now return back to PHP Designer Pro.

    Next, click "File" and then "New" on the Menubar of PHP Designer Pro (or just CTRL+N). This opens the dialog for a new file to be created inside of our Project. Double-click on "PHP" and a new Untitled PHP file should open.

    Now click the Save icon in the PHP Designer Pro menubar, or (CTRL+S). This will prompt you to save the current file you just created. Name the file config.inc.php and save it in the 'includes' folder you created earlier.

    Repeat the new file process again, and save the next file as db.class.php also inside of the 'includes' folder.

    Repeat the new file process again, and save the next file as main.css inside of the PHP_Starters_Tut folder instead of the includes folder.

    Make one more new file, and this time save it as index.php inside of the PHP_Starters_Tut folder instead of the includes folder. This will be the file which displays our page.

    You have now created your project and all the files we will need to use in order to do what we need to do. We will now move on to the fun part, the scripting.


    Time to code!

    1. The database configuration file (config.inc.php)

    First, let's create our Database Configuration / Settings file. Click on the file tab you created for config.inc.php and it should have about 10 total lines in it, beginning with "<?php" and ending with "?>". These tags simply tell the server to process what is between them as PHP. Make sure you keep all of your PHP scripting between these tags, or it will not work properly.

    The next few lines shown should begin with /* and end with */. These tell the PHP that there is a multi-line comment between them. Whatever you place inside of comment tags will not be displayed client side, and is for developer or distribution note purposes only. These are not absolutely necessary or required, so you can remove the comments or leave them there if you wish. (Quick note: // is for single line comments and does not need a closing tag.)

    Now, you need to put the following coding into the config.inc.php file after the comment lines but before the PHP closing tag, and then change the values to whatever you set up for your database in XAMPP or with your webhost:

    PHP Code:
    //the location of your database server (you shouldnt have to change this first setting if the database is on the same server as the PHP files)
    define('DB_SERVER'"localhost");

    //database username (change username_here to the database username you made)
    define('DB_USER'"username_here");

    //database password (change password_here to the database password for your user)
    define('DB_PASS'"password_here");

    //the name of your database
    define('DB_DATABASE'"phpstut"); 
    define() simply tells the php that you're setting something as a constant at runtime. The first value inside of the parentheses is the name of the constant, and the second value will be the value of that named constant. For more information regarding this function, visit PHP: define - Manual

    Therefore this means that we are setting the database location, connection info, and database name values as constants for use with our next creation, our database class file. Save that file and let's move on.

    (Make sure you didn't forget to change the values to whatever you set up for your database in XAMPP or with your webhost!)


    2. The database class file (db.class.php)

    Now click on your db.class.php tab and let's create our database class. The scripting I give you here is from the database singleton class found at PHP MySQL wrapper v3 - PHP5 Singleton Class to easily call mysql functions | ricocheting.com. You should visit that page for a full understanding of the file and scripting within it, as it would be redundant for me to explain it all to you in this tutorial. They explain it very well and even have examples on the page I listed. It does contain much more than we will be using for this tutorial, but if you wish, you can use their database wrapper class for future projects and modify it to do whatever you need it to do for you in the future.

    Once again, put your coding into the file after the comment lines, but before the PHP closing tag:

    PHP Code:
    // You do not need to modify any of the following scripting

    class Database {
        // debug flag for showing error messages    public    $debug = true;
        // Store the single instance of Database    private static $instance;
        private    $server   = ""; //database server    private    $user     = ""; //database login name    private    $pass     = ""; //database login password    private    $database = ""; //database name
        private    $error = "";
        #######################    //number of rows affected by SQL query    public    $affected_rows = 0;
        private    $link_id = 0;    private    $query_id = 0;

    #-############################################## desc: constructorprivate function __construct($server=null, $user=null, $pass=null, $database=null){    // error catching if not passed in    if($server==null || $user==null || $database==null){        $this->oops("Database information must be passed in when the object is first created.");    }
        $this->server=$server;    $this->user=$user;    $this->pass=$pass;    $this->database=$database;}#-#constructor()

    #-############################################## desc: singleton declarationpublic static function obtain($server=null, $user=null, $pass=null, $database=null){    if (!self::$instance){         self::$instance = new Database($server, $user, $pass, $database);     } 
        return self::$instance; }#-#obtain()

    #-############################################## desc: connect and select database using vars above# Param: $new_link can force connect() to open a new link, even if mysql_connect() was called before with the same parameterspublic function connect($new_link=false){    $this->[email protected]_connect($this->server,$this->user,$this->pass,$new_link);
        if (!$this->link_id){//open failed        $this->oops("Could not connect to server: <b>$this->server</b>.");        }
        if([email protected]_select_db($this->database, $this->link_id)){//no database        $this->oops("Could not open database: <b>$this->database</b>.");        }
        // unset the data so it can't be dumped    $this->server='';    $this->user='';    $this->pass='';    $this->database='';}#-#connect()


    #-############################################## desc: close the connectionpublic function close(){    if([email protected]_close($this->link_id)){        $this->oops("Connection close failed.");    }}#-#close()

    #-############################################## Desc: escapes characters to be mysql ready# Param: string# returns: stringpublic function escape($string){    if(get_magic_quotes_runtime()) $string = stripslashes($string);    return @mysql_real_escape_string($string,$this->link_id);}#-#escape()

    #-############################################## Desc: executes SQL query to an open connection# Param: (MySQL query) to execute# returns: (query_id) for fetching results etcpublic function query($sql){    // do query    $this->query_id = @mysql_query($sql, $this->link_id);
        if (!$this->query_id){        $this->oops("<b>MySQL Query fail:</b> $sql");        return 0;    }        $this->affected_rows = @mysql_affected_rows($this->link_id);
        return $this->query_id;}#-#query()

    #-############################################## desc: does a query, fetches the first row only, frees resultset# param: (MySQL query) the query to run on server# returns: array of fetched resultspublic function query_first($query_string){    $query_id = $this->query($query_string);    $out = $this->fetch($query_id);    $this->free_result($query_id);    return $out;}#-#query_first()

    #-############################################## desc: fetches and returns results one line at a time# param: query_id for mysql run. if none specified, last used# return: (array) fetched record(s)public function fetch($query_id=-1){    // retrieve row    if ($query_id!=-1){        $this->query_id=$query_id;    }
        if (isset($this->query_id)){        $record = @mysql_fetch_assoc($this->query_id);    }else{        $this->oops("Invalid query_id: <b>$this->query_id</b>. Records could not be fetched.");    }
        return $record;}#-#fetch()

    #-############################################## desc: returns all the results (not one row)# param: (MySQL query) the query to run on server# returns: assoc array of ALL fetched resultspublic function fetch_array($sql){    $query_id = $this->query($sql);    $out = array();
        while ($row = $this->fetch($query_id)){        $out[] = $row;    }
        $this->free_result($query_id);    return $out;}#-#fetch_array()

    #-############################################## desc: does an update query with an array# param: table, assoc array with data (not escaped), where condition (optional. if none given, all records updated)# returns: (query_id) for fetching results etcpublic function update($table, $data, $where='1'){    $q="UPDATE `$table` SET ";
        foreach($data as $key=>$val){        if(strtolower($val)=='null') $q.= "`$key` = NULL, ";        elseif(strtolower($val)=='now()') $q.= "`$key` = NOW(), ";        elseif(preg_match("/^increment\((\-?\d+)\)$/i",$val,$m)) $q.= "`$key` = `$key` + $m[1], ";         else $q.= "`$key`='".$this->escape($val)."', ";    }
        $q = rtrim($q, ', ') . ' WHERE '.$where.';';
        return $this->query($q);}#-#update()

    #-############################################## desc: does an insert query with an array# param: table, assoc array with data (not escaped)# returns: id of inserted record, false if errorpublic function insert($table, $data){    $q="INSERT INTO `$table` ";    $v=''; $n='';
        foreach($data as $key=>$val){        $n.="`$key`, ";        if(strtolower($val)=='null') $v.="NULL, ";        elseif(strtolower($val)=='now()') $v.="NOW(), ";        else $v.= "'".$this->escape($val)."', ";    }
        $q .= "(". rtrim($n, ', ') .") VALUES (". rtrim($v, ', ') .");";
        if($this->query($q)){        return mysql_insert_id($this->link_id);    }    else return false;
    }#-#insert()

    #-############################################## desc: frees the resultset# param: query_id for mysql run. if none specified, last usedprivate function free_result($query_id=-1){    if ($query_id!=-1){        $this->query_id=$query_id;    }    if($this->query_id!=0 && [email protected]_free_result($this->query_id)){        $this->oops("Result ID: <b>$this->query_id</b> could not be freed.");    }}#-#free_result()

    #-############################################## desc: throw an error message# param: [optional] any custom error to display
    private function oops($msg=''){    if(!empty($this->link_id)){        $this->error = mysql_error($this->link_id);    }    else{        $this->error = mysql_error();        $msg="<b>WARNING:</b> No link_id found. Probably not connected to teh database.<br />$msg";    }
        // if no debug, done here    if(!$this->debug) return;    ?>        <table align="center" border="1" cellspacing="0" style="background:white;color:black;width:80%;">        <tr><th colspan=2>lolwut.. database err0r</th></tr>        <tr><td align="right" valign="top">Message:</td><td><?php echo $msg?></td></tr>        <?php if(!empty($this->error)) echo '<tr><td align="right" valign="top" nowrap>MySQL Error:</td><td>'.$this->error.'</td></tr>'?>        <tr><td align="right">Date:</td><td><?php echo date("l, F j, Y \a\\t g:i:s A"); ?></td></tr>        <?php if(!empty($_SERVER['REQUEST_URI'])) echo '<tr><td align="right">Script:</td><td><a href="'.$_SERVER['REQUEST_URI'].'">'.$_SERVER['REQUEST_URI'].'</a></td></tr>'?>        <?php if(!empty($_SERVER['HTTP_REFERER'])) echo '<tr><td align="right">Referer:</td><td><a href="'.$_SERVER['HTTP_REFERER'].'">'.$_SERVER['HTTP_REFERER'].'</a></td></tr>'?>        </table>        <?php die; ?><?php}#-#oops()
    }//CLASS Database###################################################################################################
    *Note: There are many different and even simpler ways to connect and manage data between your database, and this class file is actually overkill for this project. I chose to do it this way so you can have a better grasp on a wider range of material from the start, so that you can choose different techniques and ways to handle your projects once you get more comfortable with PHP. There are always several different ways to go about doing just about anything with PHP, so it is up to you how you write your code and manage your projects.

    Please ensure you fully read the documentation provided on the host page listed above for the database singleton class file. It will tell you everything you need to know about what is in it and how it works.

    Save the db.class.php file and now let's code our index.php file which will process and display our data to and from the database.

    3. The Display and User Interaction page (index.php)

    What we are going to do now, is create a page which is a very basic version of a pastie site. We will be display a text area which a user can use to input, store, and retrieve data between our page and our database using our database configuration and class file.

    Go ahead and click the index.php tab. Put the following coding into it:

    PHP Code:
    // config values (This includes our database configuration settings)require("includes/config.inc.php") ; 
    // database class wrapper (This includes our database class wrapper)require("includes/db.class.php") ;
    // create the $db object (Creates an instance of the database class)$db = Database::obtain(DB_SERVER, DB_USER, DB_PASS, DB_DATABASE) ; 
    // connect to the server (Connects us to our database, of course)$db->connect() ; 
    #############################################################################  #'s.. Another way of commenting inside your php files.  #################################################################################
    //first lets set up our initial html for our page into a variable, without displaying it yet$page_content = '<HTML><HEAD><TITLE>dns\' PHP Starter\'s Tutorial</TITLE><link rel="stylesheet" href="main.css"></HEAD><BODY><CENTER><a href="index.php" title="Return me to teh index!"><IMG SRC="dns_php_tut.png" alt="dns\' PHP Starter\'s Tutorial" border="0"></a><BR /><BR />' ;
    /** Notes about the coding above:notice that we can go to a new line after the first ' due to the fact that it simply encloses what we are declaringas the string content for our variable. this isn't necessary but improves the formatting of the HTML on the source of the page once it is displayed. you could also do the same thing using the proper carriage return or newline for your server system. those are easily found searching google.the backslash before the semicolon is called an escape character,or "escaping". since single quotes are enclosing characters, php will consider it the end of the variable string declaration unless we use php's built in escaping feature to make it ignore it.. you do not need to escape single quote or double quotes in comments, though.*/
    ###########################################################################  now we will see if the user came here to view data or to post it   ###########################################################################
    // now, a simple 'if' statement to see if the requested url contains the "dataid" to request some data from our databaseif ((isset($_GET['dataid'])) && !empty($_GET['dataid']) && intval($_GET['dataid']) >= 0){        // first lets see if we can retrieve the requested data    // let's set the sql query string as a variable and then send it to the database through our database class..    $sql="SELECT * FROM `tutdata` WHERE `id`='".$_GET['dataid']."'" ;    $row = $db->query_first($sql) ;    // in the future i suggest you study more about sql queries and how to use them..    ##########################################################################  now we check if the data row exists in our table on the database  ##########################################################################
        // if the data is there we append more html to the already existing variable $page_content including the data from the database, and kill the processing    if(!empty($row['id']))       { $page_content .= '        dataid ' . $row['id'] . ' returned: <BR />        <TEXTAREA  ID="dataoutputbox" readonly="readonly">' . stripslashes($row['tehdata']) . '</TEXTAREA>        <BR />' . $row['tehtime'] . '        <BR /><BR /> <a href="index.php" target="_self">Back to index</a> </CENTER>        </BODY>        </HTML>';        die($page_content) ; }        // we displayed the data, linked them back to the index, and ended the php processing using die() command            // if the data row is not there or cant be retrieved.. we have many options. but for this tutorial we will tell the user its invalid and end the page here    else        { $page_content .= '        Our apologies, but that dataid is invalid! <BR /> <a href="index.php" target="_self">Back to index</a></CENTER>        </BODY>        </HTML>';        die($page_content) ; }        // we told them its invalid, gave them a link back to the index page, and ended the processing of the php, all using the die() command with the content inside of it}
    // if the page is receiving data posted to itself from the data post form, we check it and add it if valid, and then redirect to its page using its dataidif (isset($_POST['data_input']) && trim($_POST["data_input"]) == (null))        { $page_content .= '        Our apologies, but that post is invalid! <BR /> <a href="index.php" target="_self">Back to index</a></CENTER>        </BODY>        </HTML>';        die($page_content) ; }        elseif (isset($_POST['data_input']) && trim($_POST["data_input"]) !== (null)) {$data['tehdata'] = $_POST['data_input'];
    //since our id column auto-increments, and our time column defaults to the unix timestamp, we only need to insert the actual data post itself// here, we simply use the built in function of our database class to insert the data..$primary_id = $db->insert("tutdata", $data);
    // the header() function can be used here to redirect the user to a new page. you can also use refresh inside the header function declarations to make it delay before changing the page// here, we will redirect them to the same index page but this time to view their new data post// the data post can be viewed any time at the url as follows header( 'Location: index.php?dataid=' . $primary_id ); // in case they are lagged before being moved to the data page.. die('Data posted, redirecting to index.php?dataid=' . $primary_id);}
    #####################################################################################################################/** Notes: isset() checks whether a value has been assigned to "dataid". the && is an operator which means AND, which returns true if whatever is before and after it both return TRUE. the ! before empty() basically means NOT. This means we are saying 'if dataid is not empty'. intval() is a function which returns the integer value of the variable or valuable you place within the (), so we are making sure its at least a number since thats how we are looking up the data.  So what we have done here is say we need to do something here "if dataid is set AND not empty AND its a valid integer".*/#####################################################################################################################


    ####################################################################################################################### As the PHP is processed, if the above statement(s) didn't return as true to kill the page earlier, then it will ## come here anyways, so we don't need another if statement here..#####################################################################################################################
    // let's display the post form and kill the page since they weren't here to view data and didn't come from a data submission$page_content .= '<form action="index.php" method="post">Enter some data!: <BR /><TEXTAREA ID="datainputbox" NAME="data_input" wrap="hard"></TEXTAREA><BR /><input type="reset" class="button" value="Clear" /><input type="submit" class="button" /></form></CENTER></BODY></HTML>' ;die($page_content) ;// when the user enters and submits data here, it passes the data back to this same index page using post method, and 'data_input' as the data string passed forward to be found and submitted to the database
    #####################################################################################################################// and that's it! you created a basic pastie site with just 4 small files and about an hour or two of time! 
    If you notice, the coding is commented as it goes along. For better understanding of how most of it works just read the comments inside the php file once you create it. Now save the index.php file and let's make our css stylesheet which just adds a little flavor to the page.

    Go ahead and click on your main.css tab.

    4. The css stylesheet (main.css)

    Firstly, make sure that previously you saved this file as CSS and not PHP. CSS sheets do NOT need <?PHP tags or any opening/closing tags at all.

    Now put this into your main.css file:

    Code:
    body {
    width: 100% ;
    height: auto ;
    margin-top: 16px ;
    margin-left: 0px ;
    margin-right: 0px ;
    padding: 0px ;
    font-family: Arial, Verdana, Times, serif;
    font-size: 12px;
    font-weight: normal;
    color: #111111 ;
    background-color: #CBCAB6 ;
    }
    
    
    a:link { color: #ff0000; text-decoration:none; font-weight:normal; }
    a:visited { color: #ff0000;  text-decoration:none; }
    a:hover { color: #111111 ;  text-decoration: underline; }
    a:active { color: #111111;  text-decoration:none; }
    
    
    textarea#datainputbox {
            width: 440px;
            height: 300px;
            border: 1px solid #111111;
            background-color: #fffff0 ;
            color: #111111 ;
            padding: 3px;
            font-family: Arial, Verdana, Times, serif;
    }
    textarea#dataoutputbox {
            width: 440px;
            height: 300px;
            border: 1px solid #92959a;
            background-color: #cccccc ;
            color: #111111 ;
            padding: 3px;
            font-family: Arial, Verdana, Times, serif;
    }
    All we have done here is add some styling to the page body and our input box for the input and output displays. Simple enough, right?

    Now save your main.css file and we are done creating and coding the project files.


    Testing the Project!


    Now ensure all of your files are configured properly and saved. As long as you have been doing it as you go along, everything should be fine. Now, depending on how you chose to host your project, visit the root directory of your project in a web browser. If using XAMPP, it will be something like "localhost/PHP_Starters_Tut/". If its a webhost, make sure you upload the project file to the host and then visit whatever your subdomain url is, such as "http://www.examplehost.com/mysubdomain/PHP_Starters_Tut/". Just remember that wherever your index.php file is located is where you need to point your browser.

    If you did it correctly, you should see the page where you can enter and submit data. Upon submitting the data, it should redirect you to the page which re-displays the data from the database depending on the 'dataid' number in the URL.

    If it all worked out for you on the first try, then congratulations! If not, keep playing around with it until you get it working. If you can't figure it out, just read my closing statement below for my email address and I will assist you if you need it.


    Summary

    So in closing, we have:

    1. Found an active PHP/MySQL host for our project.
    2. Created & Configured a MySQL Database.
    3. Created a Project using PHP Designer Pro.
    4. Coded our PHP files and CSS to style our display page.
    5. Hopefully, learned something from all of this!


    Learning References
    1. PHP - Any time you ever need help or information regarding anything in PHP, you can quickly google for it and add +php and find your answer. You can also simply visit PHP: PHP Manual - Manual for information directly from its creator's. Everything is there.
    2. HTML - Learn just about everything you need to know at HTML Tutorial
    3. CSS - Get some CSS knowledge at CSS Tutorial


    Closing


    Well that's it for this tutorial. I sincerely hope i've helped you to break the ice on getting started on your own PHP projects. PHP can be very fun, challenging, and a great way to kill time when you're bored. If you have any questions please feel free to respond to wherever this thread may be posted or just email me at [email protected] and I will respond asap. Thanks, and enjoy your new hobby!

    I have also attached a copy of all the files for the project in their completion if you need them.
    Attached Files Attached Files

    0 Not allowed! Not allowed!
    אהיה אשר אהיה
    I do what I do because of who I am. I am not who I am because of what I do.


    [ CL's Content Guidelines ] <-Read the shit.




  2. #2
    Bot Bot's Avatar
    Join Date
    Aug 2011
    Posts
    2,671
    Points
    7,720
         User Info     Contact     Gamer ID
    Join Date
    Aug 2011
    Posts
    2,671
    Points
    7,720

    Default

    Some really good stuff.

    0 Not allowed! Not allowed!








  3. #3
    just 'round the corner PoptartHunter's Avatar
    Join Date
    May 2011
    Posts
    4,589
    Points
    8,734
         User Info     Contact     Gamer ID
    Join Date
    May 2011
    Posts
    4,589
    Points
    8,734

    Contact info:

    Youtube Channel: http://www.youtube.com/PoptartHunterCL

    Default

    Nice tutorial, man!

    0 Not allowed! Not allowed!

  4. #4
    Schizophrenic Serial Rapist
    Destroyer of Wack Threads
    dns's Avatar
    Join Date
    Feb 2011
    Location
    ::1
    Posts
    1,349
    Points
    1,916
         User Info     Contact     Gamer ID
    Join Date
    Feb 2011
    Location
    ::1
    Posts
    1,349
    Points
    1,916

    Contact info:

    Youtube Channel: http://www.youtube.com/user/newhaxcom

    Default

    Thanks guys, it took me like 5 hours to make this tutorial, lol.

    0 Not allowed! Not allowed!
    אהיה אשר אהיה
    I do what I do because of who I am. I am not who I am because of what I do.


    [ CL's Content Guidelines ] <-Read the shit.




  5. #5
    Diehard cheatss's Avatar
    Join Date
    Mar 2011
    Location
    Belgium
    Posts
    774
    Points
    1,766
         User Info     Contact     Gamer ID
    Join Date
    Mar 2011
    Location
    Belgium
    Posts
    774
    Points
    1,766

    Default

    awesome tutorial dns!

    0 Not allowed! Not allowed!
    Last edited by cheatss; 12-07-2011 at 09:58 AM.

    ^^ awesome signature made by Demo ^^

Tags for this Thread

Bookmarks

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
All times are GMT -10. The time now is 01:19 PM.
Powered by vBulletin®
Copyright © 2017 vBulletin Solutions, Inc. All rights reserved.