Question: I want to give a "like" option on my page for non-logged users.

The simpliest thing would be to detect user IP ( e.g. by `$_SERVER['REMOTE_ADDR']`).

More sophisticated would be detecting user's agent (e.g. by `$_SERVER['HTTP_USER_AGENT']`).

But I want to give like-posibility for "each PC in family" ([real-life](http://en.wikipedia.org/wiki/Real_life) family) - this could also mean they all have not only the same IP, not only the same browser but also the same browser-version...

So how would I determinate whether it is a different PC? (**without** using cookies/session)

I want to store one "like" per PC and since cookies can be cleared I didn't want to use them :)

I wanted to abstract my particular interest from the whole problematics - so I did.

**However** you should ***never* trust user input** (as David pointed out) - so do **not** base your final like-count on just that ! *At least* put a likes/per IP limit and combine it with cookies/session.

Answer: 
You can use sessions without using cookies. When the user logs in, they get a token, and this token is appended to every URL they visit. (In PHP you can see this if you disable cookies in the browser, you will get "PHPSESSIONID" in the URL). So, if you make users log in before voting / liking / whatever, then you can achieve this using sessions but not cookies.

If you are talking about public users without a login mechanism, then there really isn't any way to achieve this, unless you set a cookie recording the fact that this browser has voted. 

Note however that not only can cookies be deleted, but it won't actually achieve what you want unless everyone in the family uses a different browser or has a separate login on their operating system. Otherwise they are effectively all the same user as far as you can tell. Also people can use multiple browsers so one person could vote / like more than once anyway.
You cannot give a single identity to a PC. 
Cookies can be cleared. 
User logins can be done from different computers.

$ip.$http\_user\_agent will not work. 
User may restart the modem and ISP might assign a new IP. 
Or use a different browser to change $http\_user\_agent. 
Or another system on a LAN might have the same $http\_user\_agent.

What is the significance of giving one "like" per PC (provided you are able to even identify a PC correctly)? 
What if two different users with different tastes use the same PC?