OK, I think I can do this. Note that '>' means 'greater than or equal to' because I can't get the character to display properly. Assume f(x) is nonzero for some x.
Then f = id:
f(x)f(1)=f(x) => f(1) = 1 => f(2) =2
f(2)f(0)=2f(0)=f(0) => f(0) = 0
f(-1) + f(1) = f(0) = 0 => f(-1) = -1
=> f(n) = n for all integers n
f(q)f(p/q) = qf(p/q) = f(p) = p
=> f(p/q) = p/q for all rationals p/q
Let a>0. Then f(a) = f(sqrt(a))^2 > 0
Let c>b. Then f(c) = f(c-b) + f(b) > f(b) since f(c-b)>0
=> f is increasing
Now given any real number x, we can find sequences of rationals t(n) above and u(n) below which tend to x. f(t(n)) > f(x) > f(u(n)) => t(n) > f(x) > u(n) for all n
=> f(x) = x. QED