$g(x+y)+g(x)g(y)=g(xy)+g(x)+g(y)$ for all $x,y$.

Let $P(x,y)$ denote $g(x+y) + g(x) g(y) =g(xy) + g(x) + g(y) $. The important statements that we'd consider are

$$ \begin{array} { l l l } P(x,y) & : g(x+y) + g(x) g(y) =g(xy) + g(x) + g(y) & (1) \\ P(x,1) & : g(x+1) + g(x) g(1) = 2 g(x) + g(y) & (2) \\ P(x, y+1) & : g(x+y+1) + g(x) g(y+1) = g(xy+x) + g(x) +g(y+1) & (3)\\ \end{array} $$

Let $g(1) = A$. With $x=y=1$, we get $g(2) + A^2 = 3A$.

With $x=y=2$, we get $g(4) + g(2)^2 = g(4) + 2g(2) $. Hence either $g(2) = 0$ or $g(2) = 2$.

Case 1: If $g(2) = 0$, then $A^2 - 3A = 0$ so $A=0$ or $A=3$.

Case 1a: (This case is incomplete) If $A=0$:
$(2)$ gives us $g(x+1) = 2g(x)$.

$(3)$ gives us $g(x+y+1) +g(x)g(y+1)= g(xy+y) + g(x)+g(y+1)$.
Applying the above gives $2g(x+y)+g(x)2g(y) = g(xy+x) + g(x) + 2g(y)$, or that $2g(x+y) + 2g(x)g(y) = g(xy+x) + g(x) + 2g(y)$.

$(1)$, combined with the above gives us $g(xy+x) = 2g(xy) + g(x) $.
Substitute $y=1$ in the above identity, we get $g(2x) = 3g(x)$.

(Incomplete here)

Comparing with the first equation, we thus have $g(x) = 0 $.
It is easy to check that $g(x) = 0$ is a solution.

Case 1b: If $A=3$:
$(2)$ gives us $g(x+1) = - g(x) + 3$.

$P(x,2)$ gives us $g(x+2) = g(2x) + g(x)$.

From the previous identity, $g(x+2) = -g(x+1) + 3 = g(x)$. Hence $g(2x) = 0$ for all $x$. However, with $x = \frac{1}{2}$, we have a contradiction. There is no solution in this case.

Case 2: If $g(2) = 2$, then $A^2 - 3A +2 = 0 $ so $A= 1$ or $A=2$.

Case 2a: If $A = 1$:
$P(0,1) $ gives us $g(1) + g(0) = g(0) + g(0) + g(1)$ so $g(0) = 0 $.

$(2)$ gives us $g(x+1) = g(x) + g(1)$.

$(3)$ gives us $g(x+y+1) + g(x) g(y+1) = g(xy+x) + g(x) + g(y+1)$. Using the above, this gives us $ g(x+y) + g(x) g(y) = g(xy+x) + g(x) + g(y) $.

$(1)$ gives us $g(x+y) + g(x) g(y) = g(xy) + g(x) + g(y)$. Hence $g(xy+x) = g(xy) + g(x) $.

Now, for non-zero $a, b$, let $x = b$ and $ y = \frac{b}{a}$. This gives us $g(a+b) = g(a) + g(b) $. It is clear that this equation also holds if $a$ or $b$ equals 0, since $g(0) = 0 $. Thus, we have $g(x+y) = g(x) + g(y) $.

This also yields $g(xy) = g(x) g(y)$. With these 2 equations, the only solution is $g(x) = x$. (slight work here, but this is standard in functional equations).

Case 2b: If $A=2$:

$(2)$ gives us $g(x+1) +2g(x) = g(x) + g(x) + g(1)$, so $g(x) = 2$ for all $x$. This is clearly a solution.

In conclusion, we only have the 3 solutions $g(x) = 0$ or $g(x) = 2$ or $g(x) = x$.


About showing that $g(1)=1$: If we assume that $g(0)=0$ and $g(2)\neq 0$, we can prove that $g(1)=1$ as follows:

We take $x=y=2$, and substitute:

$g(2+2)+g(2)g(2)=g(2\cdot 2)+g(2)+g(2)$

thus

$g(4)+g(2)^2=g(4)+2g(2)$, and since we are assuming that $g(2)\neq 0$, then

$g(2)=2$.

Now, if we have $x\neq 0$, then taking $y=x^{-1}$ and substituting on the original equation gives us

$g(x+x^{-1})+g(x)g(x^{-1})=g(1)+g(x)+g(x^{-1})$.

In particular, taking $x=1$,

$g(2)+g(1)g(1)=g(1)+g(1)+g(1)$.

The assumption $g(2)\neq 0$ and this equation in particular imply that $g(1)\neq 0$. And in fact we have

$3g(1)-g(1)^2=g(2)=2$, which gives $g(1)=1$ or $2$.


Added later (to rule out $g(1)=2$):

Suppose that $g(1)=2$. Taking $x=1,y=-1$ we have

$g(1+(-1))+g(1)g(-1)=g(1\cdot (-1))+g(1)+g(-1)$, that is

$2g(-1)=g(-1)+2+g(-1)$, and so

$0=2$, which is absurd.


Here's a much less murky solution with strong influence from Calvin Lin's excellent answer. $$ g(x + y) + g(x)g(y) = g(xy) + g(x) + g(y) \tag{0} $$ First of all, plugging in $y = 1$ gives $$ g(x + 1) + g(x)g(1) = 2g(x) + g(1)$$

For readability let $g(1) = k$ and we have $$ g(x + 1) = (2-k)g(x) + k \tag{1} $$

Plugging in $y + 1$ for $y$ in (0) and reducing with (1): \begin{align*} g(x + y + 1) + g(x)g(y+1) &= g(xy + x) + g(x) + g(y+1) \\ (2-k)g(x + y) + k + g(x) \left[ (2-k)g(y) + k \right] &= g(xy + x) + g(x) + (2-k)g(y) + k \\ (2-k)\left[g(x + y) + g(x) g(y) - g(x) - g(y)\right] + g(x) &= g(xy + x) \end{align*}

Using (0) again we conclude $$ g(xy + x) = (2-k)g(xy) + g(x) $$

So as long as $x$ is nonzero, letting $z = xy$ we have $$ g(z + x) = (2 - g(1))g(z) + g(x) \tag{2} $$ for all real $x$ and $z$, $x \ne 0$.

From here on out we just work with the much cleaner equation (2). Setting $z = 0$ gives $(2 - g(1))g(0) = 0$, so either $g(1) = 2$ or $g(0) = 0$. If $g(1) = 2$, then $g(z + x) = g(x)$ so $g(x) = 2$ everywhere. Otherwise, $g(0) = 0$, so plug in $z = -x$ to (2): $$ 0 = (2 - g(1))g(-x) + g(x) \implies g(x) = (g(1) - 2) g(-x) $$

It follows by applying this to $g(--x)$ that $g(x) = (g(1) - 2)^2 g(x)$. If $g(x)$ is 0 everywhere, this is a solution to the original (0); otherwise, this implies $g(1) - 2 = \pm 1$, so $g(1) = 1$ or $g(1) = 3$.

In the case $g(1) = 1$, $g(z + x) = g(z) + g(x)$. This implies $g(x) = mx$ for some constant $m$, and $g(1) = 1$ so $g(x) = x$.

In the case $g(1) = 3$, $g(z + x) = -g(z) + g(x)$. But exchanging $x$ and $z$, $g(z + x) = -g(x) + g(z)$, so $g$ is uniformly 0 (which we already assumed was not the case).