blog statsblog stats Apa Saja Ada Disini,movie,anime,youtube collection,blog.freelancermy.net,www.blog.freelancermy.net

php validation script

Validating User Input

Validating user input in PHP

By Kevin Waterson

Contents

  1. Never trust user Input.
  2. Where do I begin Checking?
  3. How do I check my strings?
  4. How do I validate a number?
  5. Can I validate an email address?
  6. What about database security?
  7. Why do I get Notice: Undefined index:?
  8. Putting it all together - A working example
Never trust user input.
This article is an attempt to show how input from web based forms can be dealt with safely. The first and most fundamental rule in security is 'NEVER TRUST USER INPUT'. Just in case this is not entirely clear, lets go over it again.. 'NEVER TRUST USER INPUT'. Whether it be by user stupidity or an attack from a malicious user, every piece of information you get from userland should be treated as suspect. Only by vigilantly adhering to this policy will your scripts and information be secure.
The second rule deals with a legacy from earlier PHP versions.
Never, ever, ever, ever use register globals
PHP now has super globals and it is HIGHLY recommended to use them.
This article is by no means a complete security run down, simply and explanation of a single facet of securing your scripts. At the absolute least, variables must be checked for type and length. In this tutorial we will take some user input from a web form, put it into a database and email the user a message thanking them for their input.
Where do I begin checking?
At the beginning of course. The origin of all your input is usually the form on your page. You can begin here by having a maxlength attribute in your input fields. This will save the honest users from their own stupidity. Lets put together a simple HTML form.

<h3>* denotes required field!</h3>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<p>
<label for="name">Name</label>
<input id="name" type="text" name="userName" maxlength="25" />*<br />

<label for="address">Address</label>
<input id="address" type="text" name="userAddress" maxlength="100" /><br />

<label for="city">City</label>
<input id="city" type="text" name="userCity" maxlength="25" /><br />

<label for="zip">Zip</label>
<input id="zip" type="text" name="userZip" maxlength="5" /><br />

<label for="email">Email</label>
<input id="email" type="text" name="userEmail" maxlength="50" />*<br />

<label for="submit">Submit</label>
<input id="submit" type="submit" value="Mail It!" /><br />
</p>
</form>
With the maxlength set in our form, we can prevent most users from accidentally entering strings of 2 megabytes or something silly. Always check for string length. As you can see in our form the action is $_SERVER['PHP_SELF'] so that it posts to itself. We have 5 input fields named:
  • userName
  • userAddress
  • userCity
  • userZip
  • userEmail
>From the name of the input fields we build our super global $_POST array. All of the inputs are of the type text. This means they will give us a string in the $_POST array of the same name. ie:
  • userName becomes $_POST['userName']
  • userAddress becomes $_POST['userAddress']
  • userCity becomes $_POST['userCity']
  • userZip becomes $_POST['userZip']
  • userEmail becomes $_POST['userEmail']
With this in mind, we can now begin to check them individually for content.
How do I check my strings?
As PHP is loosely typed, all your information from the form will be a string. So we know what to expect. However, some of the fields we know will numbers. like the phone number and the zip code. We will need to keep this in mind as we can check that numbers have been submitted. For now, we will check the inputs that we know are strings. We know from our maxlengths the maximum length our string should be.
Why should I check for length if we have set the maxlength in our form already?
A valid question and I am glad you asked.
The purpose of validating the user input is that a malicious user may use a form on their own machine to submit to your machine. The form on the remote machine may not have simple checking and may submit strings of the wrong type or length to your machine. Consider this form:

<form action="http://example.com/yourfile.php" method="post">
Name: <input type="text" name="userName" /><br />
Address: <input type="text" name="userAddress" /><br />
City: <input type="text" name="userCity" /><br />
Zip: <input type="text" name="userZip" /><br />
Email: <input type="text" name="userEmail" /><br />
<input type="submit" value="Mail It!">
</form>
With the form above, the malicious user can now submit to yourfile.php and have whatever values they want for the input fields. So, we must check.
We begin to check our variables for content and length with a simple function we will call sanityCheck(). This function takes three params.
$type - the type of variable, can be bool, float, numeric, string, array, or object
$string - The string from the form
$length - The maximum length of the string

<?php
   
/**

    * This function can be used to check the sanity of variables
    *
    * @access private
    *
    * @param string $type  The type of variable can be bool, float, numeric, string, array, or object
    * @param string $string The variable name you would like to check
    * @param string $length The maximum length of the variable
    *
    * return bool
    */

  
function sanityCheck($string$type$length){

  
// assign the type
  
$type 'is_'.$type;

  if(!
$type($string))
    {
    return 
FALSE;
    }
  
// now we see if there is anything in the string
  
elseif(empty($string))
    {
    return 
FALSE;
    }
  
// then we check how long the string is
  
elseif(strlen($string) > $length)
    {
    return 
FALSE;
    }
  else
    {
    
// if all is well, we return TRUE
    
return TRUE;
    }
}
?>
With this function we can now create some variables to use within our script. We also need to check that each of our variable is set. We could do this individually with isset for each variable as we check with sanityCheck() like this:

<?php
  
// check the POST variable userName
  
if(isset($_POST['userName']) && sanityCheck($_POST['userName'], 'string'25) != FALSE)
    {
    
$userName $_POST['userName'];
    }
?>
Alternatively, you could use isset()'s ability to take multiple variables and check them all in one sweep by creating a function to do it for us. It might look something like this:

<?php
  
// check ALL the POST variables
  
function checkSet(){
  return isset(
$_POST['userName'], $_POST['userAddress'], $_POST['userCity'], $_POST['userZip'], $_POST['userEmail']);
}
?>
Now our Code might look something like this:

<?php
  
// check all our variables are set
  
if(checkSet() != FALSE)
    {
    
// check the POST variable userName is sane, and is not empty
    
if(empty($_POST['userName'])==FALSE && sanityCheck($_POST['userName'], 'string'25) != FALSE)
        {
        
$userName $_POST['userName'];
        }
    else
        {
        echo 
'Username is not set';
        exit();
        }

    }
  else
    {
    
// this will be the default message if the form accessed without POSTing
    
echo '<p>Please fill in the form above</p>';
    }
?>
Lets look at what we have done here. First we used our checkSet function to be sure all the variables were set. When the form page is first accessed, these variables are not set, so the default message
Please fill in the form above
is displayed. This also helps should a malicious user try to use there own form without a variable and so it will throw an error saying Undefined Index and will give the path of the filename. Not a good thing security wise. If all the variable have been set, then we can begin to check the sanity of of the variables using our sanityCheck() function. The first variable we have checked is the userName variable. This field is a required field in our form, so we check it with empty function to be sure that it has a value, i.e. It is not empty or zero. If userName is empty the script echoes and error message and exit()'s the script. Lets continue with some more of our fields. We do the same, exept we do not need to use the empty function to check for non-required fields.

<?php
  
// check all our variables are set
  
if(checkSet() != FALSE)
    {
    
// check the POST variable userName is sane, and is not empty
    
if(empty($_POST['userName'])==FALSE && sanityCheck($_POST['userName'], 'string'25) != FALSE)
        {
        
$userName $_POST['userName'];
        }
    else
        {
        echo 
'Username is not set';
        exit();
        }
    
// here we test for the sanity of userAddress, we dont need to stop the
    // the script if it is empty as it is not a required field.
    
if(sanityCheck($_POST['userAddress'], 'string'100) != FALSE)
        {
        
$userAddress $_POST['userAddress'];
        }
    
// here we test for the sanity of userCity, we dont need to stop the
    // the script if it is empty as it is not a required field.
    
if(sanityCheck($_POST['userCity'], 'string'25) != FALSE)
        {
        
$userCity $_POST['userCity'];
        }
    }
  else
    {
    
// this will be the default message if the form accessed without POSTing
    
echo '<p>Please fill in the form above</p>';
    }
?>
How do I validate a number.
Ok, now we come to something a little different, the next variable we must deal with is the userZip. This will have a value which is numerical. Whilst we still need to do our basic sanity check, we also need to check that the number is not greater than 5 digits and be sure a mailicious user does not try to put in something like minus ten or something silly. So, we need a function to check for this also. In our sanityCheck function we set the type to numeric which will check that the value is a number using is_numeric. You can use this function to check the numeric values.

<?php
  
// check number is greater than 0 and $length digits long
  // returns TRUE on success
  
function checkNumber($num$length){
  if(
$num && strlen($num) == $length)
    {
    return 
TRUE;
    }
}
?>
With this little function we can now also check our numbers are correct for our use. Lets continue again:

<?php
  
// check all our variables are set
  
if(checkSet() != FALSE)
    {
    
// check the POST variable userName is sane, and is not empty
    
if(empty($_POST['userName'])==FALSE && sanityCheck($_POST['userName'], 'string'25) != FALSE)
        {
        
$userName $_POST['userName'];
        }
    else
        {
        echo 
'Username is not set';
        exit();
        }
    
// here we test for the sanity of userAddress, we dont need to stop the
    // the script if it is empty as it is not a required field.
    
if(sanityCheck($_POST['userAddress'], 'string'100) != FALSE)
        {
        
$userAddress $_POST['userAddress'];
        }
    else
        {
        
$userAddress '';
        }
    
// here we test for the sanity of userCity, we dont need to stop the
    // the script if it is empty as it is not a required field.
    
if(sanityCheck($_POST['userCity'], 'string'25) != FALSE)
        {
        
$userCity $_POST['userCity'];
        }
    else
        {
        
$userCity '';
        }
    
// check the sanity of the number and that it is greater than zero and 5 digits long
    
if(sanityCheck($_POST['userZip'], 'numeric'5) != FALSE && checkNumber($_POST['userZip'], 5) == TRUE)
        {
        
$userZip $_POST['userZip'];
        }
    else
        {
        
$userZip='';
        }
    }
  else
    {
    
// this will be the default message if the form accessed without POSTing
    
echo '<p>Please fill in the form above</p>';
    }
?>
>From the code we now have, we see that the userZip must be numerical and must be 5 digits long. If it is not, it is of no consequence as it is not a required field and can remain blank.
Can I validate an email address?
This brings us to our last variable. It requires a valid email address. To achieve this we use need to validate it not only with our basic sanity checks but with a regular expression or 'regex'. Many people try to avoid them, but for this sort of thing they are the right tool for the job. Here is a function that uses a regex to validate an email address. If you find you have a better regex for email, send it, until then....

<?phpfunction checkEmail($email){
  return 
preg_match('/^\S+@[\w\d.-]{2,}\.[\w]{2,6}$/iU'$email) ? TRUE FALSE;
}
?>
To put it all together, we can now validate and assign all of our form data like this:

<?php
  
// check all our variables are set
  
if(checkSet() != FALSE)
    {
    
// check the POST variable userName is sane, and is not empty
    
if(empty($_POST['userName'])==FALSE && sanityCheck($_POST['userName'], 'string'25) != FALSE)
        {
        
$userName $_POST['userName'];
        }
    else
        {
        echo 
'Username is not set';
        exit();
        }
    
// here we test for the sanity of userAddress, we dont need to stop the
    // the script if it is empty as it is not a required field.
    
if(sanityCheck($_POST['userAddress'], 'string'100) != FALSE)
        {
        
$userAddress $_POST['userAddress'];
        }
    else
        {
        
$userAddress '';
        }
    
// here we test for the sanity of userCity, we dont need to stop the
    // the script if it is empty as it is not a required field.
    
if(sanityCheck($_POST['userCity'], 'string'25) != FALSE)
        {
        
$userCity $_POST['userCity'];
        }
    else
        {
        
$userCity '';
        }
    
// check the sanity of the number and that it is greater than zero and 5 digits long
    
if(sanityCheck($_POST['userZip'], 'numeric'5) != FALSE && checkNumber($_POST['userZip'], 5) == TRUE)
        {
        
$userZip $_POST['userZip'];
        echo 
$userZip;
        }
    else
        {
        
$userZip='';
        }
    if(
sanityCheck($_POST['userEmail'], 'numeric'5) != FALSE && checkEmail($_POST['userEmail']) != FALSE)
        {
        
$userEmail $_POST['userEmail'];
        }
    else
        {
        echo 
'Invalid Email Address Supplied';
        exit();
        }
    }
  else
    {
    
// this will be the default message if the form accessed without POSTing
    
echo '<p>Please fill in the form above</p>';
    }
?>
What about Database security
With this much complete, we now have valid variables. That means they are within the confines of what we need. Almost. For our purposes here, we are going to use these variables to insert into a MySQL database. For this we will need some extra check if we wish to keep our database intact. The correct tool for this is mysql_real_escape_string. Without this small piece of checking, your SQL queries are open to SQL injection attacks. This can be anything from by-passing access controls to executing system commands. This is by no means confined to MySQL, PostgreSQL and others are just as vulnerable. For an excellent description of this consult The PHP Manual section on SQL Injection So, before we insert our data, lets put together a little table in the test database of mysql. Our SQL will look like this:

CREATE TABLE people (
userName VARCHAR( 25 ) NOT NULL ,
userAddress VARCHAR( 100 ) NOT NULL ,
userCity VARCHAR( 25 ) NOT NULL ,
userZip INT( 5 ) NOT NULL ,
userEmail VARCHAR( 50 ) NOT NULL
);
To put this into a database is a trivial matter with

<?php// Connect$link = @mysql_connect('localhost''mysql_user''mysql_password');
if (!
$link
    {
    die(
'Not connected : ' mysql_error());
    }
// make foo the current db$db_selected mysql_select_db('test'$link);
if (!
$db_selected)
    {
    die (
"Database not selected : " mysql_error());
    }
// Query$query sprintf("INSERT INTO people (userName, userAddress, userCity, userZip, userEmail)
    VALUES( '%s', '%s','%s','%s','%s')"
,
    
mysql_real_escape_string($userName),
    
mysql_real_escape_string($userAddress),
    
mysql_real_escape_string($userCity),
    
mysql_real_escape_string($userZip),
    
mysql_real_escape_string($userEmail));
// run the queryif(!mysql_query($query)
    {
    echo 
'Query failed '.mysql_error();
     exit();
    }
  else
    {
    
$subject 'Submission';
    
$msg'Thank you for submitting your information';
    
mail($userEmail,$subject,$msg,
    
"From: $userEmail\nReply-To: $userEmail\nX-Mailer: PHP/" phpversion());
    }
?>
Why do I get Notice: Undefined index:?
This is due to you not checking if a variable is set. This should be done with the isset()function. You should not use empty() to check if a variable is set because empty() will return FALSE if the variable is zero. My personal preference is to check ALL variables with isset() and then check any variables I wish to be sure have a value with empty().
Putting it all together.
Here is a complete script using the information an examples from above. You must first create the database test if it does not exist, and create the table people using the SQL example above.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Validating User Input.</title>
<style type="text/css">
<!--

label,input {
        display: block;
        width: 150px;
        float: left;
        margin-bottom: 10px;
}

label {
        text-align: right;
        width: 75px;
        padding-right: 20px;
}

br {
        clear: left;
}

-->
</style>

</head>
<body>
<h3>* denotes required field!</h3>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<p>
<label for="name">Name</label>
<input id="name" type="text" name="userName" maxlength="25" />*<br />

<label for="address">Address</label>
<input id="address" type="text" name="userAddress" maxlength="100" /><br />

<label for="city">City</label>
<input id="city" type="text" name="userCity" maxlength="25" /><br />

<label for="zip">Zip</label>
<input id="zip" type="text" name="userZip" maxlength="5" /><br />

<label for="email">Email</label>
<input id="email" type="text" name="userEmail" maxlength="50" />*<br />

<label for="submit">Submit</label>
<input id="submit" type="submit" value="Mail It!" /><br />
</p>
</form>

<?php
  
/**
  * This function can be used to check the sanity of variables
  *
  * @access private
  *
  * @param string $type  The type of variable can be bool, float, numeric, string, array, or object
  * @param string $string The variable name you would like to check
  * @param string $length The maximum length of the variable
  *
  * return bool
  */

  
function sanityCheck($string$type$length){

  
// assign the type
  
$type 'is_'.$type;

  if(!
$type($string))
    {
    return 
FALSE;
    }
  
// now we see if there is anything in the string
  
elseif(empty($string))
    {
    return 
FALSE;
    }
  
// then we check how long the string is
  
elseif(strlen($string) > $length)
    {
    return 
FALSE;
    }
  else
    {
    
// if all is well, we return TRUE
    
return TRUE;
    }
}


 
/**
  * This function if the $_POST vars are set 
  *
  * @access private
  *
  * return bool
  */
  
function checkSet(){
  return isset(
$_POST['userName'], $_POST['userAddress'], $_POST['userCity'], $_POST['userZip'], $_POST['userEmail']);
}

  
/**
  * This function checks a number is greater than zero
  * and exactly $length digits. returns TRUE on success.
  *
  * @access private
  *
  * @param int $num The number to check
  * @param int $length The number of digits in the number
  *
  * return bool
  */
  
function checkNumber($num$length){
  if(
$num && strlen($num) == $length)
        {
        return 
TRUE;
        }
}

  
/**
  * This function checks if an email address in a valid format
  *
  * @access private
  *
  * @param string $email The email address to check
  *
  * return bool
  */
function checkEmail($email){
  return 
preg_match('/^\S+@[\w\d.-]{2,}\.[\w]{2,6}$/iU'$email) ? TRUE FALSE;
}


  
// check all our variables are set
  
if(checkSet() != FALSE)
        {
        
// check the POST variable userName is sane, and is not empty
        
if(empty($_POST['userName'])==FALSE && sanityCheck($_POST['userName'], 'string'25) != FALSE)
                {
        
//If all is well we can  assign the value of POST field to a variable
                
$userName $_POST['userName'];
                }
        else
                {
        
// if all is not well, we echo an error and exit the script
                
echo 'Username is not set';
                exit();
                }
        
// here we test for the sanity of userAddress, we dont need to stop the
        // the script if it is empty as it is not a required field.
        
if(sanityCheck($_POST['userAddress'], 'string'100) != FALSE)
                {
        
// if all is well we assign the userAddress to a variable
                
$userAddress $_POST['userAddress'];
                }
        else
                {
        
// if all is not well, we simply give the userAddress a blank value
                
$userAddress '';
                }
        
// here we test for the sanity of userCity, we dont need to stop the
        // the script if it is empty as it is not a required field.
        
if(sanityCheck($_POST['userCity'], 'string'25) != FALSE)
                {
        
// again we assign the POSTed value to a variable
                
$userCity $_POST['userCity'];
                }
        else
                {
        
// or give the variable a blank value
                
$userCity '';
                }
        
// check the sanity of the number and that it is greater than zero and 5 digits long
        
if(sanityCheck($_POST['userZip'], 'numeric'5) != FALSE && checkNumber($_POST['userZip'], 5) == TRUE)
                {
        
// if the number is valid, we assign it to a variable
                
$userZip $_POST['userZip'];
                }
        else
                {
        
// or give the variable a blank value
                
$userZip='';
                }
    
// check the sanity of the userEmail sent from the form
       
if(sanityCheck($_POST['userEmail'], 'string'5) != FALSE && checkEmail($_POST['userEmail']) != FALSE)
                {
        
// if the checks are ok for the email we assign the email address to a variable
                
$userEmail $_POST['userEmail'];
                }
        else
                {
        
// if all is not well we echo an error message
                
echo 'Invalid Email Address Supplied';
        
// and exit the script
                
exit();
                }

    
// Connect to the MySQL
    
$link mysql_connect('localhost''mysql_user''mysql_password');
    if (!
$link)
            {
            die(
'Not connected : ' mysql_error());
            }
    
    
// select test as the current db
    
$db_selected mysql_select_db('test'$link);
    if (!
$db_selected)
            {
            die (
"Database not selected : " mysql_error());
            }

    
// Build our query here and check each variable with mysql_real_escape_string()
    
$query sprintf("INSERT INTO people (userName, userAddress, userCity, userZip, userEmail)
            VALUES( '%s', '%s','%s','%s','%s')"
,
            
mysql_real_escape_string($userName),
            
mysql_real_escape_string($userAddress),
            
mysql_real_escape_string($userCity),
            
mysql_real_escape_string($userZip),
            
mysql_real_escape_string($userEmail));

    
// run the query
    
if(!mysql_query($query))
            {
            echo 
'Query failed '.mysql_error();
            exit();
            }
      else
            {
        
// if all is well we mail off a little thank you email. We know it is
        // safe to do so because we have validated the email address.
            
$subject 'Submission';
            
$msg'Thank you for submitting your information';
            if(!
mail($userEmail,$subject,$msg"From: $userEmail\nReply-To: $userEmail\nX-Mailer: PHP/" phpversion()))
            {
            echo 
'Unable to send confirmation mail';
            }
        else
            {
            echo 
'Thank you for your submission, a confirmation email has bee sent to '.$userEmail;
            }
        }
    }
  else
        {
        
// this will be the default message if the form accessed without POSTing
        
echo '<p>Please fill in the form above</p>';
        }

?>
</body>
</html>
Valid XHTML 1.0!

filem telemovie " KEM 505 "

Pada 5hb Mei, sekumpulan pelajar berkhemah di sebuah hutan dan terjadi satu peristiwa ngeri angkara salah seorang dari mereka.
Masa beredar, tahun berganti. Kini muncul lagi 5hb Mei, hadir pula sekumpulan remaja ke destinasi yang sama. Nostalgia ngeri terungkap kembali.
"Tidak ada seorang pun yang dibenarkan bernafas, maka peristiwa 404 berulang kembali" 

Kisah Mistik : Pengalaman seram 2 sejoli


Kisah Mistik - malam yang cerah dipenuhi jutaan bintang dan cahaya bulan yang terlihat sevara samar-samar di balik jendala kamar , segelas teh manis dan satu buah rokok yang telah dihidupkan namun hanya diletakan saja di sebuah asbak rokok,

api yang semakin cepat membakar kertas dan tembakau rokok membuat abunya sesekali berterbangan lantaran tertiup oleh angin,di balik itu juga tampaklah seorang pemuda yang nyaris seluruh wajahnya tertutup oleh layar leptopnya

diatas tempat tidur pemuda yang sering dipanggil edos itu tengah asik bercumbu dengan script-script visual basic yang pada saat itu dia tengah membuat sebuah projek, namun keadaan berubah ketika suara seorang tengah memanggil namannya, suara yang halus dan merdu itu membuat jantungnya makin berdetak kencang, saat di pastikan sumber suara itu,

ternyata sosok wanita cantik yang rambutnya terurai panjang tampak telihat segar seperti habis dikeramas, "oh ternyata, diri mu toh, tungggu bentar aku mau beringkas dulu" ucap pemuda itu dengan nada lembut, sembari meninggalkan wanita itu didepan pintu rumahnya tampak menyuruh masuk terlebih dahulu, yak sosok wanita yang sering dipanggil echie oleh teman-teman disekolahnya

setelah 5 menit edospun kini telah siap dengan pakayan yang rapi, yah mereka berdua berenca pergi untuk melengkapi data-data keperluan projek si echie, motor pun segera dihidupkan dan mereka berdua kini tegah berjalan menuju sebuah rumah, setelah menempuh perjalan yang memakan waktu 20 menit akhirnya tiba juga dirumah guru meraka yang pada saat itu memeberikan tugas membuat sebuah projek,

setelah berbincang-bincang dan juga mengabil data-data akhirnya edos dan echie pun mohon pamit, lantaran malam yang indah dipenuhi jutaan bintang dan dihiasi oleh sang rembulan maka edos dan echie tak ingin meninggalkan malam begitu saja, dan kahirnya mereka berdua memutuskan untuk pergi kesebuah taman untuk menikmati suansan indahanya malam

setibanya ditaman dengan lampu yang sedikit remang-remang, tampaklah edos dan si echie tengah duduk berdekatan, sebmbari berpegangan tangn, namun belum lama kemesraan yang mereka buat itu tiba-tiba saja menjadi buyar ketika pundak edos tersa dipukul

"ehm, jangan maen pukul-pukul dong" ucap edos serayak menuduh echie yang memukul pundaknya, tapi edos belum menyadri kalau kedua tangan echhie tegah dipegangnya,begitu juga ucap si echie serayak menuduh edos yang pada ssat itu dia rasakan kalau ada yang meremas kupingnya,

kejadian itu berlangsung sampai 3 kali, hingga suara tawa kecil terdengar sangat halus, dan saat mereka berdua melihat kebelakang, ternyata sosok anak kecil yang tak memiliki bola mata dengan balutan baju ala orang eropa serta boneka yang sudah terlihat kusam

sontak membuat edos dan echie mengambil langkah seribu, nafas yang dihembuskan tampak terbatah-batah, seakan mewakili susaan mereka saat itu kalau sedang letih, setelah dilihat cukup aman ternyata mereka ada di depan bangku tempat mereka duduk tadi,

namun kali ini wanita kecil itu melambaikan tangan, tak ada pikiran lain edos dan echie belari kembali dan ternyata mereka tetap balik keposisi semua, hingga akhirnya rasa letih serta haus membuat mereka untuk pasra hingga shubu menjelang mereka dibangunkan oleh seorang ibu-ibu yang belum diketahui iden titasnya

edos dan echie pun segera memutuskan untuk pergi secepat mungkin, namun saat melihat kebelakang sosok ibu-ibu telah meghilang, disaat kembali keposisi pandang, tampak telihat sosok anak kecil yang tadi malam mereka temui, tampa pikir panjang edos pun menabraknya mengunakankan sepeda motornya dengan kecepatan penuh namun udara dingin lah yang mereka rasakan saat menembus wanita kecil itu,

lantaran kecepatan sepeda motor yang tak terkendali edos menabrak pembatas jalan hingga mereka berdua jatuh kebawah jurang yang curam. hingga seminggu kejadian tersebut barulah edos dan echie ditemukan dalam keadaan tubuh yang sudah sangat hancur.

Game Development Software Tools To Make Your Own Games

Have you ever wanted to create that game that’s been bubbling in your mind for years? What if I told you that the possibility wasn’t all that farfetched? The past decade has seen some massive advancements in the world of game creation – at one time you were required to have deep programming knowledge, but today even never-coders are learning how to make their dreams a reality.
But let’s be clear on one thing: just because it’spossible and easier to create your own games, that doesn’t mean it’ll be easy. No, not by a long shot. Just as fiction readers want to write their own novels, avid gamers want to create their own games, but creation of any kind requires lots of hard work and dedication. If you’re up to the challenge, then the following free game development software will equip you with everything you need for developing your own games.
Note: This list is ordered from simplest to most complex. The simpler tools are easier to pick up and learn, but they will naturally have more limitations. The more complex programs allow for much more freedom, but learning how to use them will be more difficult and require more time.

Sploder

free game development software
Sploder is a web-based game creation tool that actually contains five individual sub-tools, each one dedicated to creating a different game type: Retro ArcadePlatformerPhysics Puzzle,Classic Shooter, and 3D Adventure. There’s also an additional tool, Graphics Editor, for creating your own art assets.
With Sploder, you can create various levels, place items throughout those levels, and control enemies. You’ll need to create a free Sploder account if you want to save your games, but afterwards you can share the games you create so other Sploder users can discover and play them.
All of these free game development software tools are based on Flash and utilize a drag-and-drop interface for ease of use. It literally does not get any easier than this! Sploder is perfect for first-time game creators who want to learn the concepts and skillsets necessary for high-level game development before tackling more difficult topics, like coding and scripting.

Game Maker Studio

flash game development
What’s the difference between using Game Maker Studio and coding a game from scratch? According to their site, an 80% faster development time. With Game Maker Studio, you can create games using either drag-and-drop or Game Maker Studio’s built-in scripting language, GML. When you’re done, Game Maker Studio can produce an app that’s compatible with iOS or Android, an executable compatible with Windows, or HTML5 for putting your game on the web.
If Sploder is too simple for you, Game Maker Studio is the next logical step. Plenty of never-coded-before beginners have picked it up and dove right into bringing their ideas to life. The software is flexible enough to create whichever genre of game you want – platformer, racing, adventure, RPG, etc. – but it does not yet support multiplayer functionality. Community tutorials will get you up and started in no time.
Depending on the features you want, though, you’ll need to pay for a specific Game Maker Studio license, which comes in five edition tiers: Free, MIPS FreeStandard ($49.99),Professional ($99.99), and Master ($499.99). Game Maker Studio is powerful enough that professionals use it for their games. Why not you?

Construct 2

flash game development
Construct 2 is a flexible HTML5 game creation engine designed for rapid development of 2D games. While the traditional flow of game development can be difficult for beginners to grasp, Construct 2 makes it easy by abstracting some of the concepts outwards. All you need to do is drag-and-drop entities into a level, then add events and behaviors to each entity. Voila, it’s as easy as that.
The Construct 2 free game development software is intuitive and uncluttered, so absolute beginners will have a relatively easy time adjusting to it. Veteran game developers can still benefit from Construct 2, too, by using it to make extremely fast prototypes of potential game ideas.
Even more impressive: with a single project, you can export to various different platforms. TheHTML5 engine that powers Construct 2 allows immediate support for Chrome, Firefox, Kongregate, Facebook, and NewGrounds. Using wrappers, you can also export to PC, Mac, Linux, Android, iOS, and Windows Phone.
Construct 2 comes in three edition tiersFreePersonal ($119), and Business ($399).

Unity3D

flash game development
Unity3D debuted back in 2005, but it wasn’t until version 3.5 in February 2012 that it really exploded in popularity. It’s so powerful that it can create games that rival the quality of AAA titles. Out of the box, Unity3D supports the following platforms: Windows, Mac, Linux, Android, iOS, PS3, Xbox360, Wii U, and the web.
Like Construct 2, Unity3D’s development is intuitive for beginners. A typical game is divided into multiple scenes, and each scene contains multiple game objects. Each game object can have any number of attached scripts, and these scripts are what determine behaviors and interactions. Scripts can be written using UnityScript (Unity’s version of JavaScript), C#, or Boo.
Perhaps the most useful feature of Unity is its Asset Store. Users can create assets (models, animations, GUIs, scripts, tools, systems, etc.) that you can purchase and import into your project. As if Unity3D’s development speed wasn’t fast already, you can further quicken your development time by importing assets to avoid reinventing the wheel.
Unity3D comes in two editions: Unity Free and Unity Pro ($1500). Fortunately, Unity Free is quite packed with features – particles, UI, physics, networking, etc. – and is more than enough to get started with personal game development. The features in Unity Pro are quite advanced and beyond what most hobbyists will ever need.

Unreal Development Kit

free game development software
In 2009, Epic Games released a free version of their Unreal Engine 3 and called it the Unreal Development Kit, better known as UDK. When the Unreal Engine 3 was first released to the public, it made waves due to how advanced it was for its time. With UDK, developers can take advantage of those advanced features and cut away lots of coding time.
While UDK is primarily designed for first-person action, specifically first-person shooters, it can be modified to create pretty much any genre of game you desire, though it will require a good bit of work on your part. The thing about UDK is that it’s a full development kit, meaning it will be tough for beginners to learn and master. However, there are some good tutorials out there to help you along, so it’s not impossible. UDK’s engine itself is coded in C++, but the game behavior is scripted using Unreal’s version of JavaScript, called UnrealScript.
UDK is free to use for hobbyists and indie developers. If you want to publish and sell games that you create using UDK, you’ll need to pay a $99 USD fee to Epic Games. If your game makes over $50,000 USD, Epic Games will also claim 25% royalties.

Conclusion

From the list above, my personal choice comes down to Game Maker Studio for 2D development and Unity3D for 3D development. Gamer Maker Studio has been around for quite some time and there’s no sign that they’ll be slowing down anytime soon. Unity3D is just so convenient for hobby and indie developers, thanks to the great feature set in the Free version as well as the Asset Store.

dubbed in Farsi animation Asmvrf 2

Download dubbed in Farsi animation Asmvrf 2 - The Smurfs 2 2013

The Smurfs 2 BDRip (2013) Mkv
|دانلود با لینک مستقیم از سرور سایت|
|انیمیشن به صورت دوبله فارسی و با ۲ کیفیت BDRip 720p و BDRip 1080p می باشد|
|صدای دوبله فارسی انیمیشن به صورت جداگانه به پست اضافه شد|

The Smurfs 2 cover small دانلود دوبله فارسی انیمیشن اسمورف ها ۲ – The Smurfs 2 2013

ام انیمیشن: The Smurfs 2 – اسمورف ها ۲
ژانر: انیمیشن، ماجراجویی، کمدی
سال انتشار: ۲۰۱۳
مدت زمان: ۱۰۵ دقیقه
حجم: – مگابایت
کیفیت: BDRip 720p/BDRip 1080p
دوبله فارسی
خلاصه داستان: اسمورف با دوستان خود در تلاش است یکی از دوستانشان را ازر چنگال گرگامل رها سازد . گرگامل جادوگر شیطانی میخواهد قدرتی ویژه به دست آورد و تنها راه بدست آوردن این قدرت به اسارت گرفتن یک اسمورف است . جادوگر میداند نسل امورفها چه توانایی خاصی دارند او میخواهد به وسیله این توانایی زمین را در اختیار بگیرد و …

caution دانلود دوبله فارسی انیمیشن اسمورف ها ۲ – The Smurfs 2 2013 توجه: از این پس ، فایل های فشرده با حجمی بیش از ۱۰۰ مگابایت دارای ۵% ریکاوری هستند. این ویژگی باعث می شود تا مشکل در اکسترکت کردن فایل ها ، کاملا به صفر برسد. برای استفاده از این ویژگی ، اگر فایلی را دانلود کردید و با مشکل اکسترکت مواجه شدید ، نرم افزار Winrar را اجرا نموده ، به محلی که فایل های فشرده را دانلود کرده اید مراجعه کنید ، و تمامی پارت ها را انتخاب کرده و گزینه Repairکه در قسمت بالایی نرم افزار موجود هست را بزنید. سپس محلی مناسب برای ذخیره سازی آن ها انتخاب کنید. پس از اتمام کار ، به محلی که برای ذخیره سازی انتخاب کردید مراجعه نموده و با آن فایل ها به اکسترکت بپردازید.

دانلود نسخه BDrip 720p-YIFY (نسخه دوبله فارسی، ۷۲۰ پیکسل اوریجینال):
download دانلود دوبله فارسی انیمیشن اسمورف ها ۲ – The Smurfs 2 2013 دانلود:    Embedupload    Direct Link

——————————————————————————

دانلود نسخه BDrip 1080p-YIFY (نسخه دوبله فارسی، ۱۰۸۰ پیکسل اوریجینال):
download دانلود دوبله فارسی انیمیشن اسمورف ها ۲ – The Smurfs 2 2013 دانلود به صورت پارت های ۱گیگابایتی:
دانلود پارت ۱ :     Embedupload    Direct Link
دانلود پارت ۲ :     Embedupload    Direct Link