Ergebnis 1 bis 20 von 288

Thema: Allgemeiner Fragenthread II

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    Dankö!

    Achso, klar, danke!^^

  2. #2
    Hallo allerseits, hab ne kurze Frage.
    Ich wollt mir mal ein "Wer ist Online?" Script erstellen, bei dem alle registrierten Benutzer erfasst werden, die gerade online sind.
    Da hab ich mir gedacht, dass ich in der Usertabelle in der DB das Attribut "Online" hinzufüge, und auf die index.php ein Script packe, welches jedes mal den Wert 1 einträgt.
    Naja und letztendlich werden alle User gezählt, deren "Online" Wert "1" beträgt.
    Sollte soweit klappen, nur weiß ich nicht, wie man nach einer gewissen Zeit wieder 0 eintragen kann, sofern der User nicht mehr aktiv ist

  3. #3
    Bei der Variante bräuchtest du noch ein Extra-Feld des Typs Timestamp "Letzte Aktion". Bei jedem Aufruf der Seite (oder auch jedem zehnten, wenn das genügend sind), resettest du dann alle Online-Flags von Usern, deren letzte Aktion schon länger als x Minuten her ist.
    Kannst aber auch gleich eine neue Tabelle nehmen, dann brauchst du nur User ID und Timestamp und löschst die Einträge der Nicht-Aktiven einfach. Kann aber nicht sagen, was performanter ist, das müsstest du ausprobieren, wenn's dir drauf ankommt. Viel Arbeit ist's eh nicht.

  4. #4

  5. #5
    Hui, heut will ich auch mal eine frage stellen.


    Ich werd hier noch bekloppt, ich verstehe einfach nicht warum mir der http://validator.w3.org/ kein richtiges UTF-8 Encoding ausgibt.

    Bekomme immer diese Meldung:
    Zitat Zitat
    The character encoding specified in the HTTP header (iso-8859-1) is different from the value in the XML declaration (utf-8). I will use the value from the HTTP header (iso-8859-1).
    So und hier der Quelltext:

    HTML-Code:
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    	<title>{title}</title>
    	<link rel="stylesheet" type="text/css" href="firmen/{firma}/style/style.css" />
    </head>
    <body>
    	<div id="head">
    		<div id="headTwo">
    			<h1>{title}</h1>
    			<h2>wushu</h2>
    		</div>
    	</div>
    	<ul id="navi">
    		<li><a href="?page=0">Start</a></li>
    	</ul>
    	<div id="content">
    		{content}
    	</div>
    </body>
    </html>
    Koennt ihr mir da weiterhelfen? Werd hier bald kirre.

    gruss deadshox

  6. #6
    Steht ja eh schon in der Meldung: im HTTP-Header wird statt utf-8 iso-8859-1 als Encoding angegeben.
    Das ist leider immer ein ziemliches Problem, hängt nicht an der HTML-Datei sondern am Server. Als Ausweg gibt es zwei Möglichkeiten:
    Entweder du darfst vom Anbieter aus .htaccess-Dateien erstellen (und der Server verwendet Apache), dann kannst du dort einstellen, dass HTML-Dateien allgemein, oder die Datei im Speziellen, als utf-8 ausgeliefert werden sollen.
    Oder du darfst PHP-Dateien verwenden, dann könntest du eine erstellen, die zuerst header('Content-Type: text/html; charset: utf-8'); aufruft und dann die jeweilige Datei ausgibt, was allerdings ein Performanceverlust wäre.

    In die .htaccess-Datei müsste folgendes:
    Code:
    AddCharset utf-8 .html
    
    # Oder, für bestimmte Files mit utf-8:
    <Files "example.html">
    AddCharset utf-8 .html
    </Files>

  7. #7
    Nebenbei, wenn du utf-8 verwendest ist die XML-Deklaration optional. Und du solltest sie auch weglassen, da sie nur schädlich ist.

  8. #8
    Hallo !
    Ich stehe vor folgendem Problem:
    Ich möchte gern ein PN Script (Ohne PN Anzeige) kreieren, dafür allerdigns nur eine einzige Datei verwenden.
    Das heißt, dass sowohl der DB-Eintrag, also auch die Anzeige des Formulars in eine Datei gebracht werden müssen.
    Soweit kein Problem, ich benutze ein verstecktes Inputfeld, in welchem eine bestimmter Wert übergeben wird.
    Beim Absenden der Nachricht wird überprüft, ob der genannte Wert vorhanden ist, und sofern er es ist, führt die Datei den Eintrag-Part durch; ist er es nicht, wird das Formular angezeigt.
    Nur ist mein Problem, was wohl auch ein albekanntes darstellt, dass man nach dem erfolgreichen Eintrag F5 drückt und ein zweiter Eintrag durchgeführt werden kann, was ich gerne verhinden möchte.
    Eigentlich wäre das auch kein Problem, da ich wieder die Methode des versteckten Inputfeldes verwenden könnte, was sonst auch immer geklappt hat.
    Nun habe ich allerdings die Schwierigkeit, dass der Script sich eben in einer Datei befindet, demnach werden also 2 solcher Inputs verwendet, was logischerweise das Überprüfen per if unmöglich macht.

    Zum Verständnis nochmal der Code (ohne F5 Sicherheit)

    PHP-Code:
    <?php

    $empf 
    $username;
    $rec $_POST["rec"];
    $subj $_POST["subj"];
    $titel $_POST["titel"];
    $pnon $_POST["pnon"];


    $time time();


    if (
    $from == "da")
    {
    $eintrag "INSERT INTO user_pn
             (sender, receiver, message, time, titel)
             VALUES
             ('
    $username', '$rec', '$subj', '$time', '$titel')";

             
    $eintragen mysql_query($eintrag);

    $send "yes";
    }
    else
    {
    echo
    "

    <form action='?content=newpn' method='post'>
    <br />
    <div style='margin: 5px;'>
    <br />
    <input type='hidden' name='form' value='da' />

    <!-- Formulardaten -->

    </form>"
    ;
    }

    ?>

  9. #9
    Entweder du machst eine Zeitsperre über die Session rein oder Aktions-IDs.

    Im ersten Fall speicherst du beim Absenden des Formulars den aktuellen Timestamp in der Session ab und überprüfst den halt:
    PHP-Code:
    <?php
    if($_SESSION['pm_time'] < time() - 60)
    {
      
    // Versende die PM

      
    $_SESSION['pm_time'] = time();
    }
    else
    {
      
    // Warten...
    }
    ?>
    Im anderen Fall generierst du eine ID, wenn das Formular angezeigt wird, der dann mit dem Formular verschickt wird. Mithilfe von diesem Wert kannst du dann überprüfen, ob das Formular bereits abgeschickt wurde:
    PHP-Code:
    <?php
    if(...)
    {
      if(!
    $_SESSION['action_id'])
      {
        
    $_SESSION['action_id'] = uniqid('pm_'true);
      }

      
    // Dein Formular mit der ID
      
    echo '<input type="hidden" name="action_id" value="'.$_SESSION['action_id'].'">';
    }
    else
    {
      if(
    $_POST['action_id'] && $_SESSION['action_id'] == $_POST['action_id'])
      {
        
    // Alles OK

        
    unset($_SESSION['action_id']);
      }
      else
      {
        
    // Schon abgeschickt
      
    }
    }
    ?>
    Ich hoffe das hilft dir weiter...

  10. #10
    Danke für die Hilfe, nur ist das Problem leider sie Session an sich.
    Denn, die Zeitspanne einer Session dauert meistens länger als 5 Minuten, allerdings handelt es sich hierbei ja um ein PN System.
    Man soll nicht per F5 diesselbe Nachricht abschicken können, andererseits, soll man aber auch anschließend andere Nachrichten schreiben können.
    Wenn ich allerdigns Sessions verwende, so muss man einige Zeit warten, bevor man eine weitere Nachricht schreiben kann.

  11. #11
    Zitat Zitat von Antares Beitrag anzeigen
    Danke für die Hilfe, nur ist das Problem leider sie Session an sich.
    Denn, die Zeitspanne einer Session dauert meistens länger als 5 Minuten, allerdings handelt es sich hierbei ja um ein PN System.
    Man soll nicht per F5 diesselbe Nachricht abschicken können, andererseits, soll man aber auch anschließend andere Nachrichten schreiben können.
    Wenn ich allerdigns Sessions verwende, so muss man einige Zeit warten, bevor man eine weitere Nachricht schreiben kann.
    Muss man zumindest bei der zweiten Möglichkeit nicht. Da muss man lediglich die Seite mit dem Formular ein weiteres Mal aufrufen. Und bei der ersten Möglichkeit sind es auch keine 5 Minuten sondern eine einstellbare Zeitspanne, zum Beispiel 20 Sekunden...

  12. #12
    Da du die Daten in eine Datenbank speicherst, kannst du auch einfach überprüfen, ob eine PN mit exakt dem selben Text an diesen Empfänger schon in der Datenbank existiert. Denn die Methode mit der action_id hätte z.B. zum Nachteil, dass man nicht mit "Zurück" wieder zum Formular kommen, alle Felder löschen, neu eintragen und erneut abschicken kann, auch wenn diese neue PN vielleicht eine vollkommen andere ist.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •