Frage von LugicoHDPlayer, 36

PHP echo an andere stelle ausuführen?

Hi, Ich habe erst gestern eine Frage gestellt wie man Cookies besser setzt... Jetzt habe ich daraus ein neues Problem geschaffen: Ich muss an derselben stelle an der ich auch die Cookies setze einen Text ausgeben. vorher konnte ich ja einfach sagen echo "text"; , aber jetzt wird dieser Text ganz oben angezeigt... kann man dass nicht irgendwie ändern oder muss mann da mit Tonnenweise CSS ran?

Antwort
von Suboptimierer, 24

Kannst du nicht das Setzen des Cookies in eine Funktion legen und diese bei dem HTML-Element aufrufen, bei dem die Nachricht erscheinen soll?

Kommentar von LugicoHDPlayer ,

Neh... Geht leider Nicht...

Kommentar von Suboptimierer ,

Dann habe ich noch die Idee, dass du JavaScript-Quelltext erzeugen könntest, mit dem du Text über document.getElementById in das entsprechende Element schreiben könntest. Das setzt aber voraus, dass das Element zu dem Zeitpunkt bereits generiert wurde.

Kommentar von LugicoHDPlayer ,

Mein Fehler...

Ich habe vergessen etwas zu sagen:

Ich habe im setcookie befehl eine selbstgemachte function welche ich vorher natürlich mit include() einbinden muss.

deshalb bekomme ich die Fehlermeldung


Warning: Cannot modify header information - headers already sent
by (output started at
/var/www/web24537222/html/chats/code_uncode.function:234) in /var/www/web24537222/html/login.php on line 5

Und ich glaube ich bin jetzt STARK vom Thema abgekommen...

mein Code sieht so aus:

<?php
include("chats/code_uncode.function");
function login() {
setcookie("chat_user",code($_POST["name"]),time() + 86400);
}
?>

Hier das Login Formular


<?php



if (isset($_POST["login"]) && $_POST["login"]) {
$db = mysqli_connect("localhost","*","*");
mysqli_set_charset($db,"utf8");
mysqli_select_db($db,"*");

$sql="select * from schueler where username='".$_POST["name"]."' and passwort='".$_POST["pw"]."'";
if($result=mysqli_query($db,$sql)) {
if (mysqli_num_rows($result) >=1) {
if (isset($_COOKIE["allow_cookies"])) {
login();
} else {
echo " ";

}
} else {

echo "Nutzername oder kennwort sind Falsch!";
}
}
}

if (isset($_POST["logout"]) && $_POST["logout"]) {
echo " ";
}

if (isset($_COOKIE["chat_user"]) && !empty($_COOKIE["chat_user"]) || !isset($_COOKIE["allow_cookies"])) {
echo "";
}

?>

Antwort
von RakonDark, 9

Generell ist das mixen von HTML und PHP nur der Einfachheit geschuldet.
Der Parser aber parst das ganze Php und gibt erst am Ende das Gesamte HTML aus. Es ist also nicht sinnvoll zu denken das eine Ausgabe direkt da stattfindet wo dein Echo ist. Regel ist aber immer alles was vor der HTML Ausgabe passiert auch vorher zu machen.
Ich z.b. Speicher alles in einer Variable und gebe es am Ende mit Echo aus. Merk dir einfach das nix Zeitnah passiert sondern erst am Ende wenn das Script eigentlich schon zuende ist.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten