Das Clanportal für OnlineGamer

PHP Development



 


 Seite von 2  Nächste Seite  Letzte Seite 

  [SD]---SP33DY---
verfasst am 18.04.2012 12:38:57 Uhr    #1
Shadowdragons

Hallo Community,

ich möchte gerne ein bisschen (privat) mit PHP arbeiten.

Leider habe ich noch nie etwas damit gemacht, weshalb ich noch nicht mal weiß, welche Entwicklungsumgebung ich benötige.

Kann mir Jemand eine Empfehlung geben?

Genauso einen TIPP, womit ich am besten Anfangen soll.

Eine "kleine" Aufgabe, die ich Umsetzen soll, würde mich beim lernen Unterstützen.

Vielen Dank
  [SD]Cobryn
verfasst am 18.04.2012 12:49:48 Uhr
- Beitrag 1-mal editiert. Zuletzt am 18.04.2012 12:51 Uhr von [SD]Cobryn
   #2
Shadowdragons

Ich grüße ihn.
Mit PHP hab ich zwar auch noch nicht gearbeitet, kann Dir aber ggf. eine Seite empfehlen: http://www.galileocomputing.de/ , wo man meines Wissens auch zum Thema PHP Open-books zum Download bekommt. Habe mir selbst damals mal "Java ist auch eine Insel" als openbook gedownloadet, später dann als Buch gekauft, weil es imho super gemacht ist.
Für den Fall, dass es PHP als openbook geben sollte und es so aufgebaut ist wie der Java-Schinken, dann hast Du da drin direkt von Anfang an sozusagen ein Projekt, dass sich größtenteils wie ein roter Faden durch's Buch zieht. Die Bücher sind absolut empfehlenswert. Also vielleicht magst Du ja mal dort vorbei schauen.

Ich denke eclipse dürfte standardmäßig eine sehr mächtige Entwicklungsumgebung sein, auch wenn ich selbst für kleine Projekte eher die kleineren, mageren bevorzuge wie z.B. Geany oder Notepad++ . Ich denke das ist aber Geschmackssache.

Zitat:
Eine "kleine" Aufgabe


Ich denke am besten bringt man es sich selbst bei, wenn man sich selbst ein Ziel definiert. Ich habe damals mal eine Art "speziellen Rechner" mit aufgabenbezogenen Rechenoperationen (also nicht allgemeingültig) mit GUI in Java angefangen, konnte ihn aber bisher mangels Zeit nicht fertigstellen. Vielleicht wird das mal irgendwann was....

Also mein Tipp: Vielleicht mal dort bei den openbooks schauen, ob sich nicht evtl. ein Objekt bietet.

EDIT: Vielleicht wäre PHP PEAR Ja mal einen Blick wert?
  |E4|
verfasst am 18.04.2012 12:54:51 Uhr
- Beitrag 7-mal editiert. Zuletzt am 18.04.2012 13:07 Uhr von |E4|
   #3
Strandstürmer

kann dir hier und da sicher weiterhelfen - habe durch meinen Kurs vor einigen Monaten ja eine menge mitbekommen, und bisher unter anderem dieses Projekt auf die Beine gestellt.

http://www.beachstrike.de

Kann dich mit Lernmaterial versorgen wenn du willst.. - habe meine Kursdateien noch auf der Platte

Für den Anfang schau hier mal rein... http://www.php-einfach.de/php-tutorial/php-tutorial.php

Arbeite das Tutorial mal Seite für Seite ab - wenn dir das doch eher Spanisch vorkommen sollte - sprech mich einfach an


Für später ist dann http://de.php.net/ nicht schlecht (ist aber für den Anfang nicht leicht zu verstehen)


Als Programme schlage ich dir Notepad++ oder Sublime Text 2 vor - bevorzuge aber eher Notepad++

Entweder du packst deine Seite dann auf deinen Webspace oder installiert dir Lokal auf deinem Rechner XAMPP

In Notepad++ würde ich dann unter den Einstellungen noch diese Settings setzen - erleichert das schreiben sehr.

  Whîtêkñîght
verfasst am 18.04.2012 13:03:34 Uhr    #4
Das Schwarze Auge

An deiner Stelle würde ich mir erstmal eine Umgebung lokal auf dem PC einrichten. Du kannst hier bsp. mit XAMPP schon mal einen Apache Webserver mit PHP und MySQL Server ans laufen bringen.

Wenn der läuft, einfach mal anfangen lokal ein paar kleine PHP Programme schreiben und gucken ob sie richtig laufen
  [SD]---SP33DY---
verfasst am 18.04.2012 16:42:42 Uhr    #5
Shadowdragons

Danke Coby, E4 und Whiteknight für die Informationen

XAMPP sowie Eclipse hab ich breits durch die Java "Welt" installiert.

Ich werd mir das mal anschauen und mir Gedanken machen.

Thema "kleine Aufgaben/Projekte"

Klar kann ich mir da selbst Ziele setzten, aber könnte ja sein, das Ihr zum Beispiel ein Projekt schonmal hattet (etwas kleiner) welches so die Elementaren funktionen beinhaltet. Mir fehlen weiterhin noch die richtigen Ideen, welche Projekte man umsetzten könnte.

Trotzdem nochmal vielen Dank

  |E4|
verfasst am 18.04.2012 22:21:40 Uhr
- Beitrag 9-mal editiert. Zuletzt am 19.04.2012 03:33 Uhr von |E4|
   #6
Strandstürmer

Gern genutzt ist immer ein Taschenrechner - dieser lässt sich relativ einfach schreiben - und erklärt die mathematischen Funktionen von PHP.

Wobei es relativ einfach ist Wert 1 und Wert 2 zusammen zu rechnen, was du ja zuerst probieren kannst, ist es da schon schwieriger, komplexere Rechenaufgabe zu lösen.

z.B. Wert x Wert + Wert - Wert / Wert

Tip: Array

///////////////////////////////////////////////////////////////

Ein 2tes Projekt für dich ist evtl. ein dateigestütztes Gästebuch.

Tip: Datei auslesen mit fopen/explode

Dieses kannst du dann auch später in ein Datenbank-System umbauen.

Ob du da nun eine MySQL DB nutzt oder z.b. eine Datebibasierte SQLite Datenbank bleibt dir überlassen.

///////////////////////////////////////////////////////////////

Mit diesen Projekten bekommst du die Basics gut rein - der rest ergibt sich später von selbst.

///////////////////////////////////////////////////////////////

Tip: Achte beim schreiben auf Tabulatoren - dies erleichtert die Übersicht über deinen Code - hier ein Beispiel aus meinem Code.
Deine Schreibweise suchst du Dir am besten selbst aus - am Ende du musst damit klarkommen - daher mach deinen eigenen Stil.
Ich selbst schreibe auch nicht wie die normale PHP-Programmierung.
Für mich ist das von mir unten gezeigte Beispiel zur Schreibweise einfacher zu lesen.

  [SD]---SP33DY---
verfasst am 19.04.2012 09:14:23 Uhr    #7
Shadowdragons

Danke E4 für die Unterstützung

Dann werde ich mich mal ransetzten und es probieren.

Ihr bekommt hier nochmal Informationen oder Fragen zu dem Thema von mir
  [SD]---SP33DY---
verfasst am 11.07.2012 13:51:27 Uhr    #8
Shadowdragons

So ich habe mich mal dran gemacht und begonnen ein bisschen mit PHP zuarbeiten.

Ich verfolge gerade unsere neue Homepage, die ich bereits mit HTML und Java-Script soweit gebaut habe.

Nun hab ich folgendes Problem bei der Login Seite. (Alles noch Statisch, keine DB anbindung)

Ich habe eine master.php (=index.php) wo mein HTML-Grundgerüst beinhaltet ist.

Ich habe eine Navigation die per Parameter "page" einen Value liefert, damit ich weiß welche nächste Seite aufgerufen wird. Diese lasse ich in einem Content (DIV) Bereich per "include" anzeigen.


PHP-Code:
<?php
if (isset ($_GET["page"])){
         include $_GET['page'].".php";
}else {
         include "news.php";
}
?>


Mein eigentliches Problem ist die Session Variable. (Globale Variable)

Wenn ich diese Nach der Login als "True" setzte, und in der Navigation eine neue Seite auswähle, dann wird die Seite neu geladen, und meine Session Variable ist verloren, weshalb ich diese dann auch nicht mehr nutzen kann. Ich kenne es so (.net) das ich global eine Session angebe, und sobalt Sie iwo gefüllt wird, solange die Sitzung offen ist gefüllt bleibt. Aber bei mir mit php scheint es so, als killt er jedesmal die Session.

Das ist der Teil in meiner master.php wo ich das Loginverfahren gebastelt habe:

PHP-Code:
<?php
 <div id="div_Login_Anmeldung">
<?php 
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   include ("logincheck.php");
   if ($_SESSION['angemedet'] == "true"){
       include ("intern.php");
  }
}
elseif (!isset($_SESSION['angemeldet']) || !$_SESSION['angemeldet']) { 
// Funktioniert nicht, da Session Variable beim neu Laden nicht existiert.
// elseif($_SESSION['angemeldet'] != true)

echo '<form action="master.php" method="post">
 <table cellpadding="0" border="0">
     <tbody>
         <tr>
           <td>
               <input type="text" name="username"  /> 
           </td>
            <td>
               <input type="password" name="passwort"  />
            </td>
            <td>
                 <input type="submit"  value="login" />
             </td>
             <td>
               <table width="100%" cellpadding="0" border="0">
                   <tbody>
                          <tr>
                               <td>
                                   <a id="linkreg" href="master.php?page=linkreg">Regestrieren</a>
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    <a id="linkpw" href="master.php?page=linkpw">Resend PW</a>
                                </td>
                            </tr>
                        </tbody>
                   </table>
               </td>
          </tr>
    </tbody>
   </table>
</form>';
}
                                                                        
?>
</div>
?>


logincheck.php
PHP-Code:
<?php
 <?php 
    $passwort = $_POST['passwort'];
       $username =_POST['username'];    
         // Benutzername und Passwort werden überprüft
    if ($username == 'test' && $passwort == 'test') {
    //session_start();                                                          
    $_SESSION["angemeldet"] = true;
    define ("anmeldungcheck", "true",true);
    }
?>


intern.php
PHP-Code:
<?php 
include('auth.php'); 
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html>
 <body>
 <!--Anfang des Benutzerbereichs -->
<table cellspacing="0" border="0">
 <tbody>
  <tr>
    <td>             
       <ul = id="ul_Benutzerbereich">
            <li><a href="#">» Lobby</a></li>
            <li><a href="#">» Nachrichten</a></li>
            <li><a href="#">» Profil</a></li>
            <li><a href="logout.php">» Logout</a></li>
            <li><a href="#">» Admin</a></li>
       </ul>
    </td>
   </tr>
 </tbody>
</table> 
                                                               
<!--Ende des Benutzerbereichs -->  
 </body> 
</html>
?>


auth.php
PHP-Code:
<?php
     //session_start();

     //$hostname = $_SERVER['HTTP_HOST'];
     //$path = dirname($_SERVER['PHP_SELF']);

     if (!isset($_SESSION['angemeldet']) || !$_SESSION['angemeldet']) {
     // header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/login.php');
       header('Location: http://localhost/Startseite/master.php');
      exit;
      }
?>


Die Fehlermeldung macht es dann nochmal deutlich:

Zitat:
Notice: Undefined variable: _SESSION in F:xampphtdocsStartseitemaster.php on line 134


Ist für mich total umständlich, da ich dieses verhalten nicht kenne.
Wenn ich am Anfang der Seite eine Session deklariere und Ihr einen Wert zu weiße, diesen Wert dann in der Laufzeit ändere und die Seite neu geladen wird, dann wird die beschriebene Session Variable wieder überschrieben und das macht dann auch keinen Sinn mehr.

Ich hab auch an das Speichern eines Wertes in einem Text Dokument nachgedacht, aber das Verkompliziert das ganze verfahren, da ich dann auch prüfen muss, ist der eingetragene wert überhaupt aktuell, gehört es zu dem user etc.

Zu meinem Ablauf:

-> User meldet sich an:
-> In der logincheck.php werden die Datenüberprüft und Session wird beschrieben.
-> Überprüfung ob Session gefüllt ist
-> Wenn JA -> Weiterleitung zur intern.php
-> Überprüfung durch auth.php ob berechtigt ist oder nicht.
------ Jetzt passiert der Fehler
-> Wird eine neue Seite geöffnet (refresh), dann ist Session nicht mehr gefüllt.
(-- Wird nicht gemacht / Das habe ich vor)
-> Normal sollte Session gefüllt sein
-> Somit die intern.php anzeigen
)

Da man HTML Elemente mit PHP nicht ausblenden kann, hab ich ein ECHO, welches mir mein Login ausgibt, aber solange ich angemeldet bin, also die Session gefüllt ist, dann soll diese nicht angezeigt werden sondern nur die intern.php.

Ich habe ein DIV- Element in meiner master.php, neben meiner Navigation unterhalt des Headers, wo dies alles passiert. Dort ist einmal per Echo das Login System und wenn ich angemeldet bin das intern.php per include angebunden. Man bleibt weiterhin auf der master.php

Ich hoffe einer kann mir weiter helfen, bzw einen Vorschlag geben, wie man es anders machen kann.

Fragen beantworte ich auch gerne

Vielen Dank
  |E4|
verfasst am 11.07.2012 14:51:29 Uhr
- Beitrag 6-mal editiert. Zuletzt am 11.07.2012 15:09 Uhr von |E4|
   #9
Strandstürmer

Gerade wenig zeit zum durchlesen - aber hier hast du mal meine login und logout scripte...
Ich schau mir deinen Text später nochmal genauer an - aber evtl. kommst du ja hiermit auf einige Ideen

Da du keine Datenbank hast, kannst du dir ja sonst auch eine Dateibasierte SQLite erstellen.

Beim absenden deines Formulares würdest du das eingegebe Passwort mit dem in der DB gespeicherten Passwort (z.b. md5) vergleichen.
Wenn das ganze True ergibt - machst du folgendes ...

PHP-Code:
<?php
if($_POST['username'] == $row['username'] AND md5($_POST['password']) == $row['password'])
       {
             doLogin($row['id']);   // Übergibt die ID des Users an die Funktion
       }
?>


Warum Prüfe ich auf Username und Passwort - wenn ein User das gleiche Passwort hat, könnte das Script den falschen finden, und Loggt damit den falschen User ein.

Die Funktionen dazu sind noch diese..

PHP-Code:
<?php
// Loggt einen User ein
        function doLogin($ID)
            {
                $sql = "SELECT 
                            id, username
                        FROM
                            user
                        WHERE 
                            id = ". $ID ."";

                $result = mysql_query($sql);

                if (mysql_num_rows($result) == 1)
                    { 
                        // Benutzerdaten in ein Array auslesen. 
                        $row = mysql_fetch_array ($result); 
                        
                        // Sessionvariablen erstellen und registrieren 
                        $_SESSION["userID"] = $row["id"]; 
                        $_SESSION["username"] = $row["username"];
                    }
            }
?>


Ob du bei dir, wie hier im Script die SessionID etc. in deiner DB speicherst, kannst du ja für dein Script selber entscheiden.

PHP-Code:
<?php
// loggt einen User aus
        function doLogout()
        {
             // die Session ID aus der Datenbank löschen
             $sql = "UPDATE
                               user
                     SET
                               SessionID = NULL,
                               autologin = NULL,
                               ip_adress = NULL

                     WHERE
                               id = '".$_SESSION['userID']."'
                    ";
             mysql_query($sql) OR die("<pre>n".$sql."</pre>n".mysql_error());
                         // Die Sessions selbst löschen
                         unset($_SESSION['username']);
                         unset($_SESSION['userID']);
        }
?>


Und hier meine einfache Prüfung ob der User eingeloggt ist..

PHP-Code:
<?php
// Prüft ob der User angemeldet ist
        function isLoggedIn()
            {
                if(isset($_SESSION['userID']))
                    {
                        return 1;
                    }
            }
?>


Diese kann ich dann in der Webseite mit diesem Befehl abrufen.. z.b. Login-Bereich

PHP-Code:
<?php
if(isLoggedIn())
    {
            // Zeige UserAccount
    }
else
    {
             // Zeige Loginfenster
    }
?>



Für das Abmelden von der Seite gibt es eine einfache Möglichkeit. Setze einen Link

PHP-Code:
<?php
     <a href="index.php?do=logout">Abmelden</a>
?>


Dieses Prüftst du generell in deiner Startseite noch bevor du einen HTML Code ausführst. Also....

PHP-Code:
<?php
if(isset($_GET['do']) AND $_GET['do'] == "logout")
      {
             doLogout();
      }
?>



Noch evtl. etwas für dich...

Du könntest dir eine ordnerstruktur auf deinem Webspace anlegen. (So nutze ich sie z.b. aktuell)

PHP-Code:
<?php

Root /
     - images
     - inc
     - includes
         - header.php
         - footer.php
     - js
         - tiny_mce.js
     - module
         - news
             - index.php
         - account
             - index.php
     - style
          - style.css
     - temp
?>


Mit dieser kann man dann auch gut Arbeiten - hier schicke ich dir mal meine index.php aus dem Root der Beachstrike.de


PHP-Code:
<?php

error_reporting(0);
session_start();
include "*******************";  // DB Connect
include "inc/functions.php";
include "includes/header.php";
    
deleteIpBan();
deleteInactiveAccount();
deleteInactiveNewsletter();
    
// ==============================================

// GLOBAL SETTINGS
    $mod_folder = "module";

// ==============================================

// SELECT SECTION
    if(isset($_GET['section']))
        {
            if(is_dir($mod_folder ."/". $_GET['section']))
                {
                    include "". $mod_folder . "/". $_GET['section'] ."/index.php";
                }
            else
                {
                    // Ausgabe wenn Modul nicht gefunden wurde.
                }
        }
    else
        {
            include "module/home/index.php";
        }

include "includes/footer.php";
?>


Damit kann man dann gut arbeiten, ruft ein User die Seite "index.php?section=news" auf, sucht das System automatisch nach dem Ordner und öffnet die Datei.

Das System ist noch erweiterbar - z.b. sehen meine index.php in den Modulordner so aus...

PHP-Code:
<?php
    if(isset($_GET['site']) AND file_exists("module/". $_GET['section'] ."/". $_GET['site'] .".php"))
        {
            include $_GET['site'].".php";
        }
    else
        {
            // Ausgabe wenn keine Seite gewählt ist.
        }
?>


Damit kann man dann diese Links nutzen "index.php?section=news&site=login"

In diesem Fall würde also erst nach dem Ordner "news" gesucht werden.
Es wird also der Ordner "news" geöffnet und die index.php darin angezeigt.

Und die "index.php" Sucht nun weiter und findet "site" und site besagt,
das er die datei "login.php" öffnen soll.


Evtl. hilft dir das ja weiter...

  [SD]---SP33DY---
verfasst am 11.07.2012 15:30:14 Uhr    #10
Shadowdragons

Okay, was mir bei dir auffält, was ich erstens nicht habe sind funktions Methoden.

Hat es villt damit zu tuen, das die Session Variablen in einer Methode (hier in der funktion) gefüllt werden müssen ?

Hast du alle funktionen in einer PHP Datei ?(das Post event, dann die einlog, logout und islogin funktion ?
  |E4|
verfasst am 11.07.2012 18:48:25 Uhr
- Beitrag 4-mal editiert. Zuletzt am 11.07.2012 21:37 Uhr von |E4|
   #11

gerade ncht Zuhause - daher nur kurz - editere es nacher nochmal.

eine Funktion (alle meine Funktionen) habe ich in der functions.php welche ich am Start meiner Seite Aufrufe.

Funktionen nutze ich dann - wenn wiederkehrende Aufgaben mit verschiedenen Inhalten ausgeführt werden sollen.

EDIT //

So wieder zuhause...

In welcher Datei bzw. in welchem Format speicherst du die Passwörter deiner User..
Du kannst Sessions egal wo in einer Webseite registrieren und beschreiben.

Deine Datenbank sollte dann die Felder id, username, passwort haben (id feld natürlich als auto increment feld.
Das ganze ist natürlich auch auf einer SQ-Lite oder kommangetrennten Datei umsetzbar.

bei Dateibasiert musst du natürlich erst die Datei in ein Array einlesen und dieses dann nach den Daten durchsuchen.


Deine login.php inklusive Formular würde dann so aussehen können. Datenbankverbindung vorrausgesetzt.
(Würde aber auch Datei oder SQLite basiert funktionieren)

PHP-Code:
<?php
if(isset($_GET['do']) AND $_GET['do'] == "logout")
    {
        unset($_SESSION['userID']);
    }

if(isset($_POST['username']))
    {
        $sql = "SELECT 
                    id, username, password
                FROM
                    user
                WHERE
                    username = '". $_POST['username']."'
                AND
                    password = '". md5($_POST['password']) ."'";
        $result = mysql_query($sql);
        if (mysql_num_rows($result) == 1)  // Prüft ob wirklich nur ein User gefunden worden ist.
            { 
                $row = mysql_fetch_assoc($result);  // Benutzerdaten in ein Array auslesen. 
                $_SESSION['userID'] = $row['id'];  // Gefundene ID des Users wird in die Session geschrieben.
            }
        else
            {
                echo "Der Benutzername oder das Passwort ist falsch.";
            }
    }

if(isset($_SESSION['userID']))
    {
        echo "Du bist angemeldet. <a href=\"login.php?do=logout\">Jetzt abmelden</a>";
    {
else
    {
         echo "<form action=\"login.php\" method=\"post\">
                       <table>
                          <tr>
                              <td>Username:</td>
                              <td><input type=\"text\" name=\"username\"></td>
                           </tr>
                           <tr>
                              <td>Passwort:</td>
                              <td><input type=\"text\" name=\"password\"></td>
                           </tr>
                           <tr>
                              <td></td>
                              <td><input type=\"submit\" name=\"submit\" value=\"Anmelden\"></td>
                           </tr>
                       </table>
                 </form>";
   }
?>
  Whîtêkñîght
verfasst am 12.07.2012 08:09:20 Uhr    #12

Hey. Sorry hab momentan keine Zeit soviel zu lesen. Wichtig ist, dass Du in jeder Seite (am besten machste das irgendwo im Header) die Funktion session_start() aufgerufen wird. Und zwar ganz zu Beginn, also bevor du auf die Sessionvariable zugreifst. Ansonsten wird diese nicht geladen!

Habe gesehen, dass Du die Funktion oben einmal auskommentiert hast. Hoffe das hilft, mehr Zeit hab ich gerade leider nicht.
  [SD]---SP33DY---
verfasst am 12.07.2012 09:10:22 Uhr    #13
Shadowdragons

@ Whiteknight:

Zitat:
Notice: A session had already been started - ignoring session_start() in F:xampphtdocsStartseitelogincheck.php on line 6

Notice: A session had already been started - ignoring session_start() in F:xampphtdocsStartseiteauth.php on line 2


Deshalb sind diese auskommentiert.

Na gut dann werde ich das ganze eben mit einer Datenbank(MYSQL) machen, ist zwar total umständlich, aber wenn PHP keine andere Möglichkeit bietet, muss es eben so sein.
  |E4|
verfasst am 12.07.2012 10:19:53 Uhr
- Beitrag 2-mal editiert. Zuletzt am 12.07.2012 10:35 Uhr von |E4|
   #14
Strandstürmer

In welcher Form wolltest du denn auf die Userdaten zugreifen.
Also Du kannst das ganze auch Dateibasiert machen in einer Kommagetrennten Datei. (sehr umständlich und viel schreiberei)

Wenn dein Server keine SQL-Anbindung hat, erstelle dir eine SQLite (Dateibasierte Datenbank) DB, du hast damit in etwa die gleichen Vorteile und dein Server braucht keinen SQL-Server.

Wenn du auf einer einzelnen Seite aufbaust, in dem du weitere Seiten mit include einbindest, z.b. ein System mit index.php?site=account reicht es, wenn du das session_start(); einmal ganz oben in der index.php schreibst. Nur bei Systemen mit mehreren Einzelseiten benötigst du die Session in jeder Seite.



  [SD]---SP33DY---
verfasst am 12.07.2012 11:16:16 Uhr    #15
Shadowdragons

Ahh, jetzt funktioniert alles so, wie es soll.

Hab jetzt, wie du E4 aber auch wie Whiteknigth gesagt hat die session_start(); in meiner master.php oben eingefügt, und es funktioniert.

Komisch ist, gestern habe ich das schonmal versucht und es kamen wieder Fehlermeldungen.

Jetzt hab ich genau die Reaktion die ich haben wollte.

Danke an dich E4 und auch an dich Whiteknight das ihr euch mit meinem Problem befasst habt
  |E4|
verfasst am 18.11.2012 22:35:31 Uhr
- Beitrag 3-mal editiert. Zuletzt am 19.11.2012 00:29 Uhr von |E4|
   #16
Strandstürmer

Ich brauch auch nochmal einen kleinen Denkanstoß..., Ich arbeite gerade an einem Forum - wie stell ich es nun an, das ich die neusten Beiträge im Forum ausgeben kann..

klar habe ich den Zeit-Timestamp und den Timestamp vom letzten Login...

Dazu kann ich natürlich sagen, das er mir alle neuen Beiträge seit dem letzten Login anzeigen soll. (dies stellt natürlich kein Problem dar)

(Dieser muss nicht stimmen, hab den nur mal so getippt...)
PHP-Code:
<?php
$sql = "SELECT * FROM forum_posts WHERE post_date < '". time() ."' AND $_SESSION['lastlogin'] < post_date";
?>


Nun soll er aber, wenn man eines der Threads angesehen hat, dieses nicht mehr in der Liste anzeigen... - sollte ich dazu evtl. alle neuen Post-Timestamps in ein Array schreiben und dieses dann beim Besuch des Threads aus dem Array löschen, oder gibt es eine bessere Möglichkeit

Hoffe ich konnte mein Problem rüberbringen..
  ---SP33DY---
verfasst am 18.11.2012 22:52:16 Uhr    #17
Shadowdragons

Villt eine neue Spalte, die du dann mit 1 oder 0 füllst (oder ähnliches), damit hast du in dem Select Befehl ein Filterkriterium mehr.

Sowas villt ?
  |E4|
verfasst am 18.11.2012 23:01:32 Uhr
- Beitrag 1-mal editiert. Zuletzt am 18.11.2012 23:02 Uhr von |E4|
   #18
Strandstürmer

naja dieses würde dann aber für alle user gelten - aktuell würde ich eher noch das array (beim Login erstellen) als idee haben...

Diese gilt dann leider nicht für Gäste - dort müsste man mit einem Cookie arbeiten...
  Whîtêkñîght
verfasst am 19.11.2012 09:04:04 Uhr    #19

Möchtest Du, dass

a) der Benutzer alle Beiträge, die er noch nicht gelesen hat, als neu markiert sieht (wie hier im CC)?

b) einfach nur neue Beiträge seit seinem letzten Login hervorheben?

Zu deinem SQL oben:

PHP-Code:
<?php
... WHERE post_date < '". time() ."' ...
?>

Was soll diese Where-Bedingung bringen? Gehe mal davon aus, dass alle Beiträge älter als gerade eben sind

Wenn dann würde ich es so umschreiben:

PHP-Code:
<?php
$sql = "SELECT * FROM forum_posts WHERE post_date > ".$_SESSION['lastlogin'];
?>
  |E4|
verfasst am 19.11.2012 13:22:10 Uhr    #20
Strandstürmer

jup klar... Nun wo du es sagtst die oben ist ein wenig daneben Stimmt

Naja, Problem ist ja nun, das der User dadurch solange die Posts als neu angezeigt bekommt, solange er sicht nicht neu einloggt..., da das datum ja immer vom letzten Login zählt.., somit würde er immer "neu" schreiben, auch wenn an den Thread schon angesehen hat.
  Whîtêkñîght
verfasst am 19.11.2012 15:36:13 Uhr    #21
Krisen Kommando Kräfte

Korrekt. So ist es hier auf der Startseite wenn du dich einloggst. Der zeigt dir auch an, dass es bsp. 100 neue Beiträge im Forum gibt seit deinem letzten Login. Wenn du nun davon 10 gelesen hast, zeigt er dir aber auf der Startseite immer noch 100 an, solange du dich nicht neu einloggst. Logisch, weil ja eben immer noch 100 Beiträge seit deinem letzten Login neu sind. Klingt doof, ist aber so *g*.

Für das eigentliche Forum ist der Weg aber denkbar ungeeignet. Da musst Du dir wirklich einzeln für jeden User merken, welchen Beitrag er in welchem Thema zuletzt gelesen hat. Nur so kannst du die Themen anzeigen, die wirklich ungelesen sind. Du musst dir auch überlegen, was mit Beiträgen gemacht werden, wenn sie bearbeitet wurden. Zeigst du sie wenn die sich nachträglich geändert haben wieder als neu an?

Da kommst du mit einer Abfrage nicht aus, da brauchst du mehrere für. Darum sind hier gute SQL's und DB-Indexe nötig, um eine gute Performance zu gewährleisten.
  |E4|
verfasst am 19.11.2012 19:08:32 Uhr
- Beitrag 1-mal editiert. Zuletzt am 19.11.2012 19:14 Uhr von |E4|
   #22
Strandstürmer

Ne wenn sie bearbeitet wurden, werden sie (aktuell) nicht als neu angezeigt.. (aber das überlege ich mir noch) hab also ein time und ein edittime feld...

Meine Idee wär, alles in ein Array zu schreiben - also beim Login (oder besser beim Seitenbesuch - damit auch Gäste dieses Nutzen können) ein Array erstellen (oder wenn vorhanden erweitern) in der die Post-IDs seit dem letzten Login gespeichert werden.

Somit könnte ich ja beim Aufruf des Forums die ID aus dem Array löschen.


Also...

1. Gast besucht Webseite
2. Letzter Login wird aus Cookie ausgelesen
3. Foren-Array wird erstellt / erweitert um neue Einträge
4. Beim Besuch des Posts im Forum wird der Eintrag aus dem Array gelöscht.
  Whîtêkñîght
verfasst am 19.11.2012 19:56:26 Uhr    #23
Krisen Kommando Kräfte

Zitat:
4. Beim Besuch des Posts im Forum wird der Eintrag aus dem Array gelöscht.

Und das Array wird gelöscht, wenn der Benutzer deine Seite verlässt. Somit auch alle Informationen was er gelesen hat und was nicht.

Wenn der Benutzer einen Beitrag nicht ließt, wird er hier solange als "neu" markiert, bis er ihn irgendwann gelesen hat. "Neu" ist hier natürlich im Sinne von "ungelesen" zu verstehen und nicht zeitraumabhängig.

Du musst halt überlegen welche Lösung du bevorzugst.

In einem normalen Forum speichert man eigentlich für jeden User die Information, welches Thema er bereits gelesen hat bzw. wann zuletzt um zu prüfen, ob neue Beiträge in dem Thema sind.
  |E4|
verfasst am 17.04.2013 20:34:41 Uhr
- Beitrag 2-mal editiert. Zuletzt am 18.04.2013 01:51 Uhr von |E4|
   #24
Strandstürmer

Ich arbeite gerade an einer Webseiten-Idee - eine Art Betriebssystem-Webseite die sich auch so benutzen lässt.

schaut doch mal rauf und sagt mir mal ob ich diese Idee weiter verfolgen sollte...

http://www.mcgeek.de/


Bisher läuft noch alles ohne DB und Cookies.. - es wird also noch nicht die Symbolposition gespeichert.

Symbole lassen sich wie im OS mit einem Doppelklick öffnen.

(Bisher nur Firefox und Chrome)

Edit: nun wird auch der IE unterstützt
  Whîtêkñîght
verfasst am 18.04.2013 08:56:33 Uhr    #25
Krisen Kommando Kräfte

Die Idee finde ich soweit ganz cool von der Bedienung her. Das Problem bei den Javascript und Ajax Geschichten ist halt immer die Suchmaschinen-unfreundlichkeit. Aber die spielt ja nicht immer eine große Rolle.

Viel wichtiger finde ich später die Nutzbarkeit und die einzelnen Module, die sich dann hinter den Icons verbergen. Darauf bin ich schon gespannt



Klicke [hier] um zur letzten Seite zu kehren und einen neuen Beitrag zu verfassen



[Zurück]


Seite generiert in 0.03 Sekunden   

 
 

Anmelden


 
 

Clanauswahl


 
 

Statistik


 
 

Sonstiges