Wenn Du die Funktion aufrufst, nachdem du schon etwas an den Browser geschickt hast, funktioniert es auch nicht.
Du musst session_start() direkt ausführen, nicht innerhalb einer Funktion.
Stelle Dir das einfach mal so vor:
Du schreibst die Funktion,
dann gibst Du Daten über den Browser aus (da reicht schon <html>),
danach rufst du die Funktion auf.
Wenn du die Funktion aufrufst ist das so, als schreibt der Browser (bzw. Parser) alles innerhalb der Funktion an die Stelle, an der Du die Funktion aufrufst, also wird das session_start() in Deinem Fall doch erst später in die Datei geschrieben.
Wenn du mit einem Formular arbeitest, lasse die Seite doch einfach die Infos an sich selbst schicken und frage dann ab, ob die Seite bereits aufgerufen wurde und Deine notwendigen Daten existieren.
PHP-Code:
<?php
if($user != "") //Seite bereits aufgerufen und Daten gesendet
{
session_start();
session_register('user');
}
else //Seite noch nicht aufgerufen oder Daten nicht gesendet
{
echo "<html><body>"; //alle HTML-Tags erst hier schreiben
echo "<form action=".$_PHPSELF." method=post>";
echo "<input type='text' name='user'>";
// Hier weiterer Inhalt deines Formulars
echo "<input type='submit' value='senden'>";
}
?>