Zum Inhalt springen

Eupinkepank

Mitglieder
  • Gesamte Inhalte

    63
  • Benutzer seit

  • Letzter Besuch

Beiträge von Eupinkepank

  1. Das hier ist die Beschreibung der Mail Funktion:


    function mail(
    string $to,
    string $subject,
    string $message,
    string[optional] $additional_headers,
    string[optional] $additional_parameters)
    [/PHP]

    Um also zu prüfen ob der Mail Server überhaupt korrekt eingerichtet ist, schreibe eine kurze Datei mit diesem Inhalt:

    [PHP]
    <?
    mail("deinemail@deinprovider.de","Das ist ein Test","Kuckuck, da bin ich");
    ?>

    Kommt auch da ein Fehler, so ist Dein Mail Server nicht korrekt eingerichtet.

    Entsprechendes verrät Dir der Aufruf von phpinfo();

    Poste mal den Link zu einer Datei die den Aufruf "phpinfo();" enthält... Dann kann Dir geholfen werden.

  2. Na gut.... :D

    Nehmen wir also an, in Deinem Formular steht das hier:


    <form action = "meinedatei.php" method="post">
    .....
    <select name="tag">
    <option value="M">Montag</option>
    ....
    <option value="S">Sonntag</option>
    </select>
    ....
    [/PHP]

    Dann kannste in der Datei "meinedatei.php" den Wert von $_POST['tag'] aus dem Formular in Deine DB Query einbauen.

    Du brauchst nur naoch eine DB Query die dynamisch aus dem Formular gefüttert wird.

    Und das war es eigentlich..

    Noch ein Tipp!

    Aus dem "[...]LIKE '%M%' [...]" in Deiner Query mach bitte unbedingt ein "[...] =".$_POST['tag]."' [...]", weil ein "Like" immer sehr viel an Performance kostet.

    Hat die Tabelle sehr viele Einträge, dann solltest Du von der Kennzeichnung der Wochertage durch Buchstaben weggehen und sie durch Zahlen ersetzen.

    Hier bietet sich an, die Zahlen für die Wochentage der date(); Funktion zu übernehmen.... also "0" für Sonntag bis "6" für Samstag, da ein Zugriff auf ein vernünftig indexiertes Zahlenfeld immer in "Null Zeit" passiert (Egal ob 5 Einträge in der Tabelle, oder 2 Mio!), ein Zugriff auf ein indexiertes varchar Feld allerdings sehr viel an MySQL Performance "frisst".

  3. Fehlermeldung?

    Ist der externe Zugriff auf die DB freigeschaltet?

    mysql_pconnect(); wird da eh nicht funktionieren.

    Generell:

    Das ist eine nicht nur unsaubere, sondern auch gefährliche Lösung.

    Die Daten (user,pass,host) werden unverschlüsselt über das Netz übertragen und können somit von JEDEM mitgelsen werden.

    PHP und MySQL IMMER Localhost halten, bzw. einen extra SQL Server verwenden der aber nur vom PHP Server erreicht werden kann.

  4. Auch hier:

    Zend Studio benutzen.

    Das Studio kann die .ini Dateien der Produktivumgebung einbinden und das zu debuggende Programm dann Zeile für Zeile durchlaufen und wird dann Notices, Warnings und Fatal Errors anzeigen und auch den dazugehörigen Ursprung.

    Natürlich erhält man auch eine Übersicht der gerade verwendeten Funktionen, Klassen und Methoden.

    Weiterhin kann man damit auch ein Benchmarking durchführen, was unheimlich dabei hilft den PHP Code zu verfeinern und zu beschleunigen.

    Auch wer die Ausgabe von 350 Euro für das Zend Studio scheut, sollte sich das Ding halt herunterladen... Es kann ja einen Monat in der Vollversion kostenlos benutzt werden.

  5. Hmmm..

    Sieht für mich ganz klar nach einem Fehler im html aus.

    Alle Dateien die das Skript lädt sind vorhanden? (Pfadangaben prüfen!!)

    Es wird kein defektes Java Script geladen?

    Hast Du Dir schon mal ein eigenes Log erzeugt?

    Einfach Timestamp und alle anderen relevanten Daten in eine MySQL Tabelle eintragen und dann Zeile für Zeile aus dem html löschen bzw. auskommentieren.

  6. Hast Du Dir mal den Error Log angesehen?

    Ich hatte mal ein ähnliches Phänomen bei einer alten Version vom IE 5.5.

    Ein Bild konnte nicht geladen werden, weil der Pfad nicht stimmte.

    Also wurde die gesamte Seite einmalig erneut geladen.

    Schau mal ins log, ob da ein 404 Error auftaucht.

  7. Jo...

    Das mit dem Debian Etch ist schon seit Monaten so ein Hick Hack...

    Wir haben die Testing Version auf unseren internen Servern und sind damit 100%ig zufrieden.

    Der Grund warum es noch nicht "stable" ist fällt für den internen Gebrauch nicht ins Gewicht.

    Aber schon seit der 1. Testing Version im November war php5 dabei.

    Nun ist php 5.2.irgendwas dabei.

    Auf php6 freue ich mich richtig...

    zum ersten mal muss man sich über sicherheitsaspekte (Stichwort Register Globals und open Basedir usw.) keine Gedanken mehr machen, da man das nicht mehr einstellen kann.

    Das Lesen der seitenlangen Changelogs auf php.net hat richtig spaß gemacht.

  8. Kann mir denn jemand mal ein Beispiel für ein überschaubares OOP PHP Projekt geben, dessen Quellcode öffentlich ist?

    Am besten ein Tutorial, denn das fertige Projekt zu überschauen fällt anfangs sehr schwer...

    (TYPO3 ist ja auch OOP, aber das ist mir für den Anfang einfach zu gross)

    Na logisch können wir das...

    Es ist aber immer sehr schwer einem OOP Unerfahrenem die Vorteile von OOP anhand eines Mini Tuts nahezubringen...

    Dennoch mache ich das mal.

    Aufgabenstellung:

    Eine HTML Seite, die via OOP den Benutzer anhand von User_ID oder aber User_Name einwandfrei verfiziert.

    Benötigte Dinge:

    1. eine effinziente Entwicklungsumgebung. Ich nutze hier das Zend Studio, da dort die Voteile sehr gut sichtbar werden.

    2. Eine Person, die mir das HTML Layout erstellt

    3. Eine Person, die den PHP Code in das HTML Gerüst baut

    4. Eine Person, die mir mir die Klasse schreibt.

    Gerade bei kleinen Projekten wird das alles natürlich eine einzige Person machen, aber wir tun mal so, als ob das was riesiges wird. :D

    Als erstes legen wir im TZend Sudio ein neues Projekt an.

    Wir nennen das mal "forTeesSake"

    Bitte den Screenshot1 betrachten.

    Hier der monströse HTML Quellcode:)

    Der ist NICHT W3C Konform und auch sonst nicht doll!


    <table width="100%" cellpadding="0" cellspacing="5" border="0">
    <tr>
    <td width="50%" align="right" valign="middle"></td>
    <td width="50%" align="left" valign="middle"></td>
    </tr>
    </table>
    [/PHP]

    Wir haben also 2 Spalten.

    Links soll der Nickname oder Username rein, rechts der reale Name mit Anschrift.

    Nun kommt der Mensch ins Spiel, der den PHP Code in das HTML Gerüst schreibt.

    Es wurde sich vorher drauf geeinigt, dass die Klasse, die den realen Namen hier anzeigen soll, ganz schlicht "show_user_data" heissen soll.

    Diese Klasse wurde bereits angelegt, allerdings hat sie bislang keinen Inhalt.

    Den erzeugen wir jetzt.

    Schau mal auf screenshot2... Dort siehst Du die Voteile vom Zend Studio... Es bietet dir innerhalb Deiner eigenen Klasse gleich eine Codevervollständigung an und zeigt Dir, welche Variablen überhaupt zur Verfügung stehen und an welcher Stelle die definiert wurden.

    Das ist gerade bei großen Projekten sehr hilfreich und spart Zeit...

    Hier mal der vorläufige Programmcode, der in der Datei "class_show_user_data.class.php" abgelegt ist:

    [PHP]
    <?
    class show_user_data{
    /* Erstmal hier die Werte definieren, die ausserhalb der Klasse bekannt sein dürfen
    Diese Werte bezeichnen wir mit "public"
    */
    public $vorname;
    public $nachname;
    public $strasse;
    public $hausnummer;
    public $plz;
    public $ort;
    public $nickname;

    // Nun die Methode, die uns den reellen Namen auf den Bildschirm zaubert.
    public function get_real_user_data($user_id,$user_name){
    if($user_id>0){ // Wenn eine User_id an die Methode übergeben wurde, suchen wir anhand der ID, weil das schneller geht.
    // Eine DB Abfrage spare ich mir... ist ja nur ein Beispiel :)
    $this->vorname="Max";
    $this->nachname="Mustermann";
    $this->strasse="Musterweg";
    $this->hausnummer="0815";
    $this->plz="88888";
    $this->ort="Musterhausen";
    $this->nickname="max_0815";

    }
    if($user_id<1 && $user_name<>''){ // Gibt es keine User ID, wird anhand des User_name gesucht.
    $this->vorname="Max";
    $this->nachname="Mustermann";
    $this->strasse="Musterweg";
    $this->hausnummer="0815";
    $this->plz="88888";
    $this->ort="Musterhausen";
    $this->nickname="max_0815";
    }

    }
    }
    ?>

    So.... nun wird die Klasse genutzt um den PHP Code in das HTML Gerüst einzufügen.

    Jetzt hier der HTML Quellcode:


    <?
    function __autoload($class_name){ // Eine tolle Funktion von PHP die immer automatisch die richtige Klasse lädt.
    include("./classes/class_".$class_name.".class.php");
    }
    // Nun erstellen wir ein neues Objekt!
    $benutzer= new show_user_data();
    // Obekt ist noch leer... nun füllen wir es mit Leben
    $benutzer->get_real_user_data('18',''); // Wir haben an dieser Stelle nur die User ID.... die reicht aber!
    // Objekt ist nun befüllt!
    ?>

    <table width="100%" cellpadding="0" cellspacing="5" border="0">
    <tr>
    <td width="50%" align="right" valign="middle"><?= $benutzer->nickname ?></td>
    <td width="50%" align="left" valign="middle">
    <?= $benutzer->vorname ?> 
    <?= $benutzer->nachname ?><br>

    <?= $benutzer->strasse ?> 
    <?= $benutzer->hausnummer ?><br>

    <?= $benutzer->plz ?> - 
    <?= $benutzer->ort ?><br>

    </td>
    </tr>
    </table>

    [/PHP]

    Somit haben wir einen übersichtlichen Quellcode.

    <?= ist übrigens die Kurzform von "<? echo "

    Jetzt werden viele sagen: Boah! Ist das umständlich!

    Ja... das stimmt....

    Nun stelle man sich aber vor, es wäre ein monströses Projekt (Online Shop, Forum usw.)... Da ist man auf Übersichlichkeit angewiesen...

    Nun stelle man sich weiterhin vor, dass sich irgendwas an den Datenbankstrukturen ändert...

    Es muss in diesem Fall nur die Klasse, nicht aber unsere Index.php angefasst werden.

    Das macht es sehr einfach spätere Updates zu machen.

    Seht in einer Klasse einfach eine Blackbox die ihr mit Werten füllt um ein Ergebnis zu bekommen. Was in der Klasse passiert kann euch "*******egal" sein.

    post-37936-14430447543148_thumb.gif

    post-37936-14430447543665_thumb.gif

  9. Hmmm....

    Ok. Du willst deinen Code für eine Datei aufteilen, so dass er in verschiedenen Dateien liegt. Ob das immer so gut ist sei dahingestellt und sollte aber auf jeden Fall hinterfragt werden, wenn es nicht unbedingt nötig oder der Code z.B. in mehrere Skripten unabhängig voneinander genutzt wird. Am Ende verwirrt es einen nur selber in zig Dateien nachsehen zu müssen immer. [...]

    Leider muss ich Dir da widersprechen... :D

    Recht hast Du lediglich, wenn Du schon beim Programmieren genau weisst, dass das fertige Produkt nie wieder angefasst wird.

    Musst Du allerdings mit zukünftigen Updates, oder Layoutänderungen usw. rechnen, ist es immer sehr vernünftig Design und Programm voneinander zu trennen.

    Gerade beim Entwickeln von großen Projekten macht das durchaus Sinn.

    Bei uns gehen wir da immer so vor.

    Einer ist zuständig für das Design und Layout, also HTML und die Grafiken.

    Einer ist zuständig für das Implementieren der nötigen PHP Codes in das HTML Gerüst.

    Einer ist zuständig für den Entwurf und die Umsetzung der Klassen, Methoden und Funktionen, die aus dem HTML Gerüst angesprochen werden. (Stichwort OOP)

    Es wird bei uns seit PHP5.1 alles in OOP gemacht, was auch durchaus Sinn macht und ich hier jedem nur ans Herz legen kann.

    Gerade die Leute aus der JavaScript Ecke werden mir da wohl recht geben ;)

    Selbst hier in diesem Miniprogramm, was ja in Zukunft durchaus groß werden kann, macht es Sinn das Design vom Programm zu trennen.

    Wenn das dann so geschehen ist, würde ich mir das gesamte Programm erneut vornehmen und es auf OOP umstellen.

    Noch ein Tipp von mir:

    Viele von euch sind wohl gerade in der Ausbildung oder sind zumidest am Lernen von PHP.

    Schafft euch, um vernünftig entwickeln und debuggen zu können das Zend Studio an.

    Das ist mit etwas über 300 Euro wirklich sauteuer aber es erleichtert euch die Arbeit.

    Es gibt im Bereich Entwicklungsumgebungen für PHP viele Produkte, z.T. auch Shareware, allerdings können diese Dinger dem Zend Studio nicht im Geringsten das Wasser reichen.

    Man kann sich das Ding erstmal herunterladen und im vollen Funktionsumfang für 30 Tage nutzen.

    Zend.com

    dort dann aud das Zend Studio gehen.... es lohnt sich....

    Alleine der Debugger ist Weltklasse!

  10. ich mach mal ganz langsam.... :D

    Du willst also die "bla.php" inkludieren?

    Dein Aufruf sollte nun so aussehen: (z.B. natürlich nur ;) )

    index.php?file=bla&parameter=1

    Irgendwo in der Index.php kommt dann der Include auf bla.php

    Und in dieser bla.php wertest Du die $_GET['parameter'] aus.

    eine "blö.php" sollte es nicht geben...

    Nenne sie bitte "bloe.php" :)

    ein include("bla.php?parameter=1") ist im Grunde genommen Kokolores und somit Müll. ;)

  11. @PieDie:

    Ich gehe mal davon aus, dass Du noch an den Anfängen der php Programmierung stehst...

    Aus diesem Grund sei Dir verziehen. ;)

    Wenn Du keinerlei Abstraktionsebenen zwischen Deinem Frontend (also dem was der Benutzer in seinem Browser sieht) und Deiner Engine (also dem php Programm, welches dahinter steht) schaffst, ist das ein Angriffspunkt für jeden der Dir Böses will.

    wenn Du z.B.

    meinedomain.de?new_link=blub.php

    schreibst, so kann jeder von aussen Dein Programm beeinflussen.

    Es sei denn, Du schaffst eine Abstraktionsebene.

    In diesem Fall prüfst Du also, ob der Inhalt von $_GET['new_link'] überhaupt "blub.php" sein darf.

    Ferner....

    Es mach keinen, aber auch wirkliich gar keinen Sinn, ein Programm zu inkludieren, welches nicht innerhalb der gleichen Domäne läuft.

    Wenn Du das dennoch brauchst, ist Dein Programm sehr schlecht durchdacht worden und Du solltest es neu schreiben bzw. abändern.

    Noch ganz wichtig....

    Zu inkludierende Programme gehören ALLE in ein Verzeichnis, welches ausserhalb vom DOCUMENT_ROOT liegt... Also in ein Verzeichnis, welches durch den Webbrowser nie direkt erreicht werden kann.

    Am Wichtigsten....

    zu inkludirende Programme MÜSSEN immer mit .php enden.

    Sollte dennoch mal ein böser Bube an diese Programme herankommen, so bekommt er nur das interpretierte HTML, nicht aber den php Quelltext.

    Es gibt Leute, die nenne diese Programme gerne .inc oder so.... Das ist aber sehr gefährlich.

  12. ich würde es so machen:

    Zwar kein neues fenster, aber dennoch ein "leerer Bildschrirm"


    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Unbenanntes Dokument</title>
    </head>

    <body>
    <p>
    <?
    if(!isset($_POST['Submit'])){
    //Formularfeld
    echo " <form name=form1 method=post action='" .$_SERVER['PHP_SELF'] ."'>\n";
    echo "<input class= formular name=suche type=text maxlenght=255 size=20 value='".$_POST['suche']."'>\n";

    echo "<input class= formular type=submit name=Submit value='Suchen'>\n";
    echo "\n\n</form>";
    }



    //Verbindung herstellen
    $sqldatabase = mysql_connect("localhost","Andavos","andavos") or die('<b>#'.mysql_errno().':</b> '.mysql_error());
    mysql_select_db(benutzer, $sqldatabase) or die('<b>#'.mysql_errno().':</b> '.mysql_error());

    //Suche starten, Ergebnise ausgeben
    $daten = mysql_query('SELECT * FROM `'.benutzer.'` WHERE `Benutzer`=\''.$_POST['suche'].'\'', $sqldatabase);
    while($row=mysql_fetch_array($daten)){
    echo $row['Benutzer'];
    }

    ?>
    </p>
    </body>
    </html>[/PHP]

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...