Beiträge von phore

    Warum nicht gleich mit regexp weiterfahren?

    PHP
    <?php
    $content = file_get_contents("http://www.photoshoptalent.com/photoshop-tutorials/ext/3166/Tutorial-on-how-to-create-an-awesome-portfolio-layout.html");
    preg_match("/href='(.*)'>(?=[<strong>view tutorial])/", $content, $matches);
    print_r($matches);
    ?>

    Findet immer den ersten Link der Seite, die von einem "<strong>view tutorial" gefolgt wird.

    Aber wirst du uns jetzt hier jedesmal um eine Lösung bitten wenn du eine neue Seite gefunden hast, die du parsen willst? -.-

    Das sind reguläre Ausdrücke. "" fassen für PHP nur den regulären Ausdruck (regexp) als String ein. Der regexp selber wird dann nochmal mit zwei identischen anfangs- und schlusszeichen eingegrenzt, z.B. mit so /regexp/.

    einfaches beispiel, ich prüfe, ob am anfang eines mixed-strings eine zahl ist:

    Code
    preg_match_all('/^([0-9])/', $string, $matches);


    / = regexp fängt an
    ^ = der wert wird am anfang des strings erwartet, nicht einfach irgendwo im string
    ( = hier beginnt der beschrieb dessen, was ich suche
    [ = eckige klammern enthalten jeweils einen bestimmten zeichensatz, den ich gerade definiere:
    0-9 = irgendeine einstellige zahl
    ] = der zeichensatz ist beschrieben, schlussklammer
    ) = meinen suchwert ist beschrieben, schlussklammer
    / = mein regexp ist fertig

    In diesem thread wurde ein link gepostet zu einem deutschen tutorial:
    https://www.forum-hilfe.de/showthread.php?t=43037

    alles andere was du darüber wissen musst:
    http://www.regular-expressions.info/tutorial.html

    reguläre Ausdrücke haben verschiedene "Dialekte", hier steht alles PHP/PERL spezifische:
    http://ch.php.net/manual/de/book.pcre.php

    Übernimm dich nicht beim lernen, du könntest die Welt in einem regexp abbilden :)
    Lern einfach mal die Grundsätze und dann jedes mal einfach das dazulernen, was du gerade brauchst.

    Du schon, deine Users vielleicht nicht.

    @Pion: du hast "Gib ganzen Code dann mach ich es dir" geschrieben.
    Da bin ich davon ausgegangen, dass du noch nichts gemacht hast, da er noch kein Code gepostet hat bevor ich begann, meine Antwort zu schreiben.
    Wir sollten einfach nicht so schnell sein, dann würde sowas nicht passieren :)

    Das passiert automatisch. Wenn der Benutzer bereits was eingegeben hat, und das Formular dann per JS abgeschickt wird, werden alle Felder des Formulars abgeschickt, also auch das "s" Feld und der darin enthaltene Wert.

    Bau für den Wert des Links ein zusätzliches hidden Feld ein. Also

    HTML
    <form action="s.php" name="search" method="get">
     <input type="hidden" name="link_wert">
     <input name="s" type="text" size="50" maxlength="50">
    </form>

    Dann brauchst du folgende Javascript Funktion (bau sie im <head> ein):

    HTML
    <script type="text/javascript">
      function send_form (link)
        {
        // wert des hidden felds auf den wert der link url setzen
        document.search.link_wert.value = link.getAttribute('href');
        document.search.submit();
        return false;
        }
    </script>

    (Wenn das nicht klappt, nimm mal das return false; raus)

    Und die links sehen dann so aus:

    HTML
    <li><a href="s.php?s=eingabe&link=A" onclick="send_form(this);" class="underline">A</a></li>

    PS. wenn jemand Javascript deaktiviert hat, wird das onclick nicht ausgeführt und somit wird stattdessen der Link in href="" aufgerufen. Mach also am besten die s.php so, dass sie auch Resultate liefert, wenn man sie direkt aufruft. Dann ist dein Skript für JS- und nicht JS-Browser geeignet. Wenn du nichts weisst was ich meine, deaktivier mal Javascript und klick auf einen der Links.

    Ok, warte mal kurz.

    *edit*
    da:

    Wenn du noch Fragen hast nur zu.

    *nochmal edit*
    Scheisse - hat die Tabulatoren verschoben. Sorry.

    Stimmt, wäre einfacher. Um herauszufinden wie die User session heisst, machst du wie gesagt mal ein print_r($_SESSION);

    @wulf - seit wann werden Passwörter in sessions gespeichert? :)

    Genau, oder du versuchst es einfach mal selber einzubauen. Probier die Stelle zu finden, wo die user_id session geschrieben wird, und füge den Code, den crazywulf gepostet hat direkt danach ein.

    Nimm den Code von crazywulf. Den ersten Teil baust du beim Login des Benutzers ein. "abc_ _abc" ersetzt du mit einem Schlüssel, der nur dir bekannt ist (was kompliziertes), $user_id mit der Id des Benutzers.

    Den zweiten Teil baust du dann auf der index.php des Proxys ein und ersetzst wieder "abc" mit deinem Schlüssel. $user_id ist die session des Users. Um herauszufinden wie sie heisst, kannst du ein print_r($_SESSION) machen. Die mit der user_id nimmst du dann statt $user_id (wird wohl sowas sein $_SESSION['user_id']).

    Naja wenn du eine Ahnung von PHP hast dann schau dir mal ein paar Tutorials an zu den genannten Fragen, dann kannst du hier konkrete Fragen stellen und das versuchen selber zu realisieren.

    Wenn das nicht realistisch ist - dann empfehle ich dir ein CMS zu nutzen, denn ein perfektes Script zu finden ist meistens schwieriger, als es selber zu schreiben.

    echo $_COOKIE['name'] gibt lediglich den Inhalt eines Cookies aus. Wenn du mal auf php.net/echo nachschaust, wirst du sehen, dass echo nichts mit einer Abfrage zu tun hat. Eine Abfrage des Cookies sähe eher so aus:

    PHP
    if ($_COOKIE['namedescookies'] != 'zu erwartender cookie wert')
      exit;

    So bricht er ab beim laden der Seite wenn das Cookie nicht den richtigen Wert hat.
    Du müsstest uns aber mehr Infos geben damit das richtig funktioniert. Wo wird denn z.B. das Cookie gesetzt?
    Wie genau willst du das Cookie im Zusammenhang mit dem proxy verwenden? Willst du, wenn man auf die index.php kommt und nicht eingeloggt ist, dass die Seite nicht geladen wird? Wenn ja - dann müsstest du die Abfrage des Cookies in eine Datei legen, die auf jeder Seite des Forums eingebunden wird. Ansonsten wird nur die Startseite blockiert sein.

    Der Geschindigkeitsunterschied ist minim und eh schlecht messbar.
    Grundsätzlich bevorzuge ich switch-case Anweisungen weil sie a) übersichtlicher sind und b) entweder einen einfacheren Codestil erlauben oder schneller sind. Beispiel:

    vs.

    PHP
    if (get_name_node($input_xml) == 'mike')
      foo();
    elseif (get_name_node($input_xml) == 'john')
      bar();
    elseif (get_name_node($input_xml) == 'cindy')
      bla();

    Nehmen wir an wir parsen ein ganzes XML und suchen darin einen bestimmten Namen. Beim switch-case wird das XML nur einmal geparst, was unter Umständen deutlich schneller ist als beim else-if, wo es 3x geparst wird. Man könnte argumentieren, dass man sowas machen könnte:

    PHP
    $xml_result = get_name_node($input_xml);
    if ($xml_result == 'mike')
      foo();
    elseif ($xml_result == 'john')
      bar();
    elseif ($xml_result == 'cindy')
      bla();

    was dann auch nur einmal ausgeführt wird. Dann hast du aber einfach eine Variable die du nicht brauchst. Ich persöhnlich code so faul wie möglich und mach es dann lieber so wie in der switch-case Anweisung.

    Eindeutig PHP.
    Wenn du aber nichts von PHP verstehst wird das ne schwierige Angelegenheit.
    Mach mal ein paar PHP Anfängertutorials, dann ein PHP File-upload Tutorial, dann ein PHP Bildergallerie Tutorial, dann ein PHP Wasserzeichen Tutorial und zum Schluss noch ein Logintutorial. Damit solltest du es packen :)