kostenloser Webspace werbefrei: lima-city


Suche auf lima-city

  • in: HTML zu Bild

    geschrieben von oindex

    Screenshot-Dienste Online (meist kostenlos)
    ... mit API zum Aufruf per GET - URL zum automatisch "abrufen"

    BSP

    * https://www.site-shot.com
    * https://snapr.seekxl.de
    * https://www.thum.io
    * ... usw ...

    oder viele viele andere Alternativen für Screenshopt-API mit URL zur für Nutzung mit PHP
    einfach mal googeln nach "Screenshot-Dienste" / "web screen capture" / ...

    achte auf kostenlos und dass eine API / bzw. ein Auftruf über URL dabei ist ...
  • in: Platzhalter in Template ersetzen

    geschrieben von oindex

    Hallo

    Danke für die Antworten und Diskussion ...

    also ich nehme jetzt mals an, ...
    .. dass es mit
    str_replace()
    performater ist als
    preg_replace()
    zu verwenden

    ... ich habs jetzt so:
    foreach($vars as $name => $value) { 
    
        $upname = strtoupper($name); // ---- Platzhalter im Template 
        $setvalue = stripslashes($value); // ---- Inhalt zum Ersetzen 
    
        $tpl = str_replace($upname, $setvalue , $tpl); 
    
    }


    anstatt "nur" stripslashes() kann ich ja vor Ausgabe
    den Inhalt ($setvalue) noch anders weiter "filtern"
    auch mal mit strip_tags() oder htmlentities() o.ä. ...


    alos meine Platzhalter sind immer die Array-Keys als Grossbuchstaben
    eingefasst in einfach (1x) "geschweiften Klammern" nicht doppelt

    ... titel ---> {TITEL}
    ... text ---> {TEXT}
    ... usw.

    Wobei es mit {{ doppelt geschweiften Klammern }} evtl ja doch besser wäre,
    damit es eindeutiger als ein Platzhalter zu erkennen ist.

  • in: Platzhalter in Template ersetzen

    geschrieben von oindex

    Danke @ggamee die klasse werd ich mal anschauen / beobachten,

    Danke @hackyourlife genau so ein preg_replace habe ich gesucht

    aber kannst Du mir sagen, warum Modifikator: e im Pattern ?!?
    ... ahhh .... ok .... gefunden dazu habe ich:

    e (PREG_REPLACE_EVAL)
    Wenn dieser Modifikator gesetzt ist, macht preg_replace() in der Ersetzungszeichenkette eine normale Ersetzung von Rückrefenzen, wertet sie als PHP-Code aus und verwendet das Ergebnis um damit die gesuchte Zeichenkette zu ersetzen. Einfache Anführungszeichen, doppelte Anführungszeichen, Backslashes (\) und NULL-Zeichen werden in den ersetzten Rückreferenzen mit einem Backslash maskiert.


    für den Fall, dass z.B. $vars['text'] weiteren HTML-Code enthält, und dieser richtig escaped wird ?
    ... hab ich das "richtig" verstanden ?

    würde ich vor dem preg_replace() machen:
    $vars['text'] = htmlentities($vars['text']);

    dann bekäme ich als Ausgabe nicht den interpretierten HTML sondern einen sichtbaren HTML-Code

    also anstatt:
    Chakka <span style="color:red;">Du</span> kannst es ...


    dann sowas:
    Chakka &lt;span style=&quot;color:red;&quot;&gt;Du&lt;/span&gt; kannst es ...


    ... aber es soll ja in $tpl der "string" für die Ausgabe mit echo / print richtig escaped sein ...

    $tpl = "Chakka <span style=\"color:red;\">Du</span> kannst es ...";

    (hier mal nur als kleiner Teil,
    ist schon klar das $tpl dann den gesamten Code aus template.tpl plus Variablen-Werte enthalten soll.

    Würde ich es ohne den Modifikator: e machen würde, wären die
    "
    im $tpl String nicht escaped
    ... richtig? ( ... ich will ja auch was lernen)

    Wäre dazu eine Alternative auch:
    $vars['text'] = addslashes($vars['text']);

    und dann geht's im preg_replace() ohne den Modifikator: e ..... oder hab ich da was falsch verstanen?

  • in: Platzhalter in Template ersetzen

    geschrieben von oindex

    @ hm4-blog ... hmmm, aber so einfach geht's dann doch nicht,
    zumindest bekomme ich so keine Werte in die Ausgabe,
    es werden weiterhin die Variablen-Namen $titel etc. ausgegeben, nicht die Werte dazu

    wenn Du mit include() meinst, dan evtl so:

    <div class="artikel">
       <h2><?= $titel; ?></h2>
       <p><?= $text; ?></p>
       <ul>
          <li>Rubrik: <?= $rubrik; ?></li>
          <li>Datum: <?= $datum; ?></li>
          <li>Autor: <?= $autor; ?></li>
       </ul>
    </div>


    bzw. ohne Short-TAGs

    <div class="artikel">
       <h2><?php echo $titel; ?></h2>
       <p><?php echo $text; ?></p>
       <ul>
          <li>Rubrik: <?php echo $rubrik; ?></li>
          <li>Datum: <?php echo $datum; ?></li>
          <li>Autor: <?php echo $autor; ?></li>
       </ul>
    </div>


    oder wie kann man es ohne die PHP-TAGs im Template machen,
    also direkt mit dem Template wie von hm4-blog vorgeschlagen ?

    ahhh .. Danke @hackyourlife ... für Antwort während ich das hier geschrieben habe
    Auch ne gute Möglichkeit ... muss die Template-Datei dann als .php vorliegen (nicht .htm oder .tpl) ?

    PS: Hinweis: bei meinen Beispiel-Variablen oben fehlt ein
    ;
    (Semikolon) !!!
    $datum = '16.11.2012 (09:27)';


    Oder soll ich doch "besser" mit Platzhalter und str_replace() arbeiten ?
    Denn ich will, dass auch Andere das Template einfach ändern können,
    die das Script nicht genau kennen bzw. gar kein PHP können ....


  • in: Platzhalter in Template ersetzen

    geschrieben von oindex

    Hallo

    ich möchte ein Script bauen mit einem (eigenen) Template-System,

    in der Template-Datei (HTML) stehen Platzhalter, die durch Inhalte von Variablen ersetzt werden sollen

    hier ein einfaches Beispiel der Template-Datei (HTML-Vorlage):
    <div class="artikel">
       <h2>{TITEL}</h2>
       <p>{TEXT}</p>
       <ul>
          <li>Rubrik: {RUBRIK}</li>
          <li>Datum: {DATUM}</li>
          <li>Autor: {AUTOR}</li>
       </ul>
    </div>


    dazu stehen jeweils als Variablen (Inhalte) bereit: (Beispiel)
    $titel = 'Motivation im Alltag'; 
    $text = 'Chakka - Du kannst es ... man muss nur wirklich Wollen, dann klappt einfach Alles ... '; 
    $rubrik = 'Allgemein'; 
    $datum = '16.11.2012 (09:27)'; 
    $autor = 'Donald Duck';


    ------
    EDIT: das ; (Semikolon) im der Zeile:
    $datum = '16.11.2012 (09:27)';
    hinzugefügt
    UND: der Satz in $text soll natürlich heissen: ... Wollen, dann klappt einfach Alles ... aber egal :)
    ------

    wie ersetzte ich jetzt am besten (schnell und Ressourcen schonend)
    die Platzhalter durch die Werte der dazu-gehörenden Variablen ?

    einfach mit str_replace() ?

    // ------------- Template einlesen ---------- 
    $tpl_strimg = file_get_contents($template_file); 
    
    // ------------- Platzhalter ersetzen ---------- 
    $tpl_strimg = str_replace('{TITEL}', $titel, $tpl_strimg); 
    $tpl_strimg = str_replace('{TEXT}', $text, $tpl_strimg); 
    $tpl_strimg = str_replace('{RUBRIK}', $rubrik, $tpl_strimg); 
    $tpl_strimg = str_replace('{DATUM}', $datum, $tpl_strimg); 
    $tpl_strimg = str_replace('{AUTOR}', $autor, $tpl_strimg); 
    
    // ------------- HTML Ausgabe ---------- 
    echo $tpl_strimg;


    ... oder gibt es eine andere, bessere Methode ? ... z.B. ein preg_replace mit Pattern ?

    Das ist ein stark vereinfachtes Beispiel, eigentlich sollen mind.10 Platzhalter ersetzt werden
    wobei sich das auch ver-vielfachen kann, für z.B. 5 Artikel pro Seite dann eben 5 mal
    und dazu kommen "globale" Platzhalter für Header-/ Footer-Bereich und Sidebar, etc.
    die auch auf jeder Seite ersetzt werden, (HTML-Head, Logo, Seiten-Titel, Navigation, usw.)

    ... macht es einen Unterschied, in welchen "Markern" der Platzhalter steht?
    also ob {TITEL} oder #TITEL# oder %TITEL% oder :TITEL: oder |TITEL| oder ... ?

    ... und was ist besser, die komplette HTML-Ausgabe in einen einzigen String zu packen,
    oder als "kleinere Teile" ablegen ($htmlhead, $pageheader, $content, $sidebar, $footer)
    und dann erst bei Ausgabe mit echo zusammen bauen ? ... oder ist das egal ?

  • in: Mit PHP Inhalt bestimmter CSS-Klassen in Array?

    geschrieben von oindex

    Hallo

    wie kann ich aus einem HTML-String
    die Inhalte von Elementen mit bestimmten Klassen auslesen und in Array speichern?

    Beispiel: $htmlcode
    <div id="inhalt">
    <ul>
      <li>
        <h2 class="name">Titel 111</h2>
        <div class="a"> Text 1a AAAAAAA <a href="ziel1.php">Link 1</a> ... A1 </div>
        <div class="b"> Text 1b <u>BBBBBB</u> ... B1 </div>
      </li>
      <li>
        <h2 class="name">Titel 222</h2>
        <div class="a"> Text 2a aaaaaa <a href="ziel2.php">Link 2</a> ... A2 </div>
        <div class="b"> Text 2b <u>bbbbbb</u> ... B2 </div>
      </li>
      <li>
        <h2 class="name">Titel 333</h2>
        <div class="a"> Text 3a xxxxxx <a href="ziel3.php">Link 3</a> ... A3 </div>
        <div class="b"> Text 3b <u>yyyyyy</u> ... B3 </div>
      </li>
    </ul>
    </div>



    gewünschtes Ergebnis: (Array je <li> Element)
    array ( 
      [0] => Array ( 
                [name] => Titel 111
                [a] => Text 1a AAAAAAA <a href="ziel1.php">Link 1</a> ... A1 
                [b] => Text 1b <u>BBBBBB</u> ... B1 
                )
      [1] => Array ( 
                [name] => Titel 222
                [a] => Text 2a aaaaaa <a href="ziel2.php">Link 2</a> ... A2 
                [b] => Text 2b <u>bbbbbb</u> ... B2 
                )
      [2] => Array ( 
                [name] => Titel 333
                [a] => Text 3a xxxxxx <a href="ziel3.php">Link 3</a> ... A3
                [b] => Text 3b <u>yyyyyy</u> ... B3 
                )
    )



    ... preg_match() mit entsprechendenn Pattern wäre wohl eine Möglichkeit
    aber geht doch sicher auch einfacher ... ressourcen-schonender ... DOM ? ... aber wie ?!?


    wenn ich
    simplexml_load_string($htmlcode);
    versuche,
    dann werden einige HTML-Elemente samt Inhalt einfach verschluckt ... kommen nicht an ?!

    also hier ... die Tagss <a> und <u> fehlen komplett, bzw. werden zu Leerstring ?!


    Hier das Ergebnis von simplexml_load_string()
    SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [id] => inhalt
            )
    
        [ul] => SimpleXMLElement Object
            (
                [li] => Array
                    (
                        [0] => SimpleXMLElement Object
                            (
                                [h2] => Titel 111
                                [div] => Array
                                    (
                                        [0] =>  Text 1a AAAAAAA  ... A1 
                                        [1] =>  Text 1b  ... B1 
                                    )
    
                            )
    
                        [1] => SimpleXMLElement Object
                            (
                                [h2] => Titel 222
                                [div] => Array
                                    (
                                        [0] =>  Text 2a aaaaaa  ... A2 
                                        [1] =>  Text 2b  ... B2 
                                    )
    
                            )
    
                        [2] => SimpleXMLElement Object
                            (
                                [h2] => Titel 333
                                [div] => Array
                                    (
                                        [0] =>  Text 3a xxxxxx  ... A3 
                                        [1] =>  Text 3b  ... B3 
                                    )
    
                            )
    
                    )
    
            )
    
    )


    ... also Elemente (hier <a> und <u>) werden einfach nicht erfasst, sind weg ?!

    anstatt diesem:
    Text 2a aaaaaa <a href="ziel2.php">Link 2</a> ... A2

    kommt aber an:
    Text 2a aaaaaa   ... A2

    ??? also ist SimpleXML hier unbrauchbar ?!?

    wie komme ich am besten auf das (oben gezeigte) gewünschte Ergebnis?
    kann mir jemand bitte ein Beispiel mit DOM ausleen geben ?
    Danke



  • in: Logfile funktioniert nicht

    geschrieben von oindex

    Zugriff log würde ich immer mit mysql machen,

    denn bei gleichzitigen Zugriff auf .txt basiertes Speichern
    kann die gesamte log- txt.Datei "geschossen" werden,
    übrig bleibt dann eine leere Datei, also alle Daten verloren

    wenn zwei User in der gleichen Sekunde zugreifen,
    wird die Datei zweimal geöffnet,
    da sie aber schon vom ersten geöffnet ist ... knallts ....

    mysql kann gleichzeitige Zugriffe (besser) verkraften

    und wenn Du nur "logfile.txt" nimmst,
    ohne Datums-Angaben im Dateiname
    dann ist diese "logfile.txt" ziemlich schnell ziemlich groß
    was ausleen und auswerten dann wieder erschwert
    wenn du auf .txt bestehst, dann mach mind. je Monat eine eigene log Datei

    <Jahr>_<Monat>_logfile.txt

    aber lass es am besten mit .txt lieber gleich sein, und nimm MySQL !!!
    ein Rat aus Erfahrung, mir hat es auch schon .txt Logfiles zerschossen
    seit dem ... lieber MySQL, wegen "gleichzeitigem" Zugriff beim Speichern
  • in: MySQL Profile

    geschrieben von oindex

    vexi schrieb:
    ... dass für $id nur ein leerer String eingesetzt wird. .


    ich denke auch, das der GET-Wert nicht (richtig) übergeben wurde, die Variable $id scheint leer zu sein

    versuch mal im Test-Script die Liste aller User auszugeben, mit Link zum klicken

    ich empfehle mysql_fetch_assoc anstatt mysql_fetch_row,
    dann ist das Array (in 2ter Ebene) mit Key-Namen, nicht Key-Zahlen
    ... alternativ geht auch mysql_fetch_object()
    dann hast Du halt die 2te Ebene als Objekte anstatt als Array

    test.php
    <?php
    // ------------------------------------------------------ 
    // --------------- config -------------------- 
    
    $db_host = 'mysql.lima-city.de';   // ---- MySQL Server/Host
    $db_user = 'USERxxxxxx';           // ---- MySQL Username
    $db_pass = 'YyYyYyYy';             // ---- MySQL User Passwort
    $db_name = 'db_xxxxxx_1';          // ---- MySQL Datenbank Name
    
    $db_table = 'my_user';             // ---- MySQL Tabelle
    
    
    // ------------------------------------------------------ 
    // --------------- connect ------------------- 
    
    $con = mysql_connect($db_host, $db_user, $db_pass)); 
    if (!$con) { die ('Fehler ... MySQL Verbindung <br />' . mysql_error()); exit; }
    
    $sel = mysql_select_db($db_name, $con);  
    if (!$sel) { die ('Fehler ... Datenbank Auswahl <br />' . mysql_error()); exit; }
    
    
    // ------------------------------------------------------ 
    // --------------- User Details -------------- 
    
    if (!empty($_GET['id'])) { 
    
    $run_id = trim(chop($_GET['id']));  
    
    // --- Optional --- 
    ## $run_id = preg_replace('/[^0-9]/','',$run_id);  // ---- Nur Zahlen (Zeichen 0 bis 9) zulassen
    
    $run_id = mysql_real_escape_string($run_id);      // ---- string fuer mysql escapen 
    
    // -------------------------- 
    
    $sql_user = "SELECT * FROM ".$db_table." WHERE ID = '".$run_id."'"); 
    $res_user = mysql_query($sql_user);
    if (!$res_user) { die ('Fehler ... res_user <br />' . mysql_error()); exit; }
    
    $user_data = array(); 
    
    while ($row_user = mysql_fetch_assoc($res_user)) {
    $user_data[] = $row_user; 
    }
    
    
    // -------------------------- 
    
    echo "<h2>User Details</h2>\n"; 
    
    
    if (!empty($user_data)) { 
    
    // -------- Hier werden Alle Spalten der Tabelle zum User ausgegeben ------- 
    // -------- um damit zu arbeiten anstatt print_r als foreach-Schleife ------- 
    
    print "<pre>\n"; 
    print_r($user_data); 
    print "</pre>\n"; 
    
    }
    else { 
    echo "<br /> ... Keine Daten zur ID ".$run_id." gefunden. \n";
    } 
    
    
    // ------------------------------------------- 
    // ------------------------------------------- 
    
    }
    else { 
    
    // ------------------------------------------------------ 
    // --------------- User Auswahl -------------- 
    
    echo "<br />\n";
    echo "<br />Bitte einen User aus der Liste ausw&auml;hlen.\n";
    echo "<br />\n";
    
    $sql_liste = "SELECT * FROM ".$db_table.""); 
    
    $res_liste = mysql_query($sql_liste);
    if (!$res_liste) { die ('Fehler ... res_liste <br />' . mysql_error()); exit; }
    
    $liste_data = array(); 
    
    while ($row_liste = mysql_fetch_assoc($res_liste)) {
    $liste_data[] = $row_liste; 
    }
    
    // -------------------------- 
    
    echo "<h2>User Auswahl</h2>\n"; 
    
    if (!empty($liste_data)) { 
    
    echo "<ul>\n"; 
    
    $n=1; 
    foreach($liste_data as $item) { 
      echo "<li> Nr: ".$n." <a href=\"test.php?id=".$row_liste['ID']."\">".$row_liste['Vorname']." ".$row_liste['Nachname']."</a> (User-ID: ".$row_liste['ID'].") </li>\n"; 
      $n++; 
    }
    
    echo "</ul>\n"; 
    
    }
    else { 
    echo "<br />... Keine User-Daten gefunden. \n";
    } 
    
    echo "<br />\n"; 
    echo "<br />\n"; 
    
    
    // ------------------------------------------- 
    // ------------------------------------------- 
    
    } 
    
    
    echo "<br />\n"; 
    echo "<br /> <a href=\"test.php\">TEST HOME</a>  \n"; 
    echo "<br />\n"; 
    
    
    // ------------------------------------------------------ 
    ?>


    Du musst halt Dattenbank-Zugangsdaten und Tabellen-Name anpasen

    und wenn Du diesen Code in andere Datei ausser "test.php" ausführen willst,
    dann musst Du die Links anpassen (überall wo test.php steht) ... logisch :)

    und wie schon gesagt wurde, bei Spalten-Namen auch auf groß-/klein- Schreibung achten

  • in: validate URL ?

    geschrieben von oindex

    hackyourlife schrieb:
    Und getestet ist das Script; es funktioniert auch perfekt ;-)


    Danke,
    aber bei Test auf lima-city.de Webspace bekomme ich als Fehlermeldung (Warning)

    Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set in /home/webpages/lima-city/oindex/html/urlcheck2.php on line 32


    habe dann noch bischen zu curl gesucht,
    und gefunden, das im HEADER auch die 'redirect_url' steht

    function getHttpCode( $url ) {
        $ch = curl_init();
    
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
        curl_exec($ch);
        $info = curl_getinfo($ch);
        curl_close($ch);
    
        return $info;
    ##  return array( $info['http_code'], $info['redirect_url'] );
    
    }



    Aufruf

    $urls_list = array(
      'http://google.de', 
      'http://www.google.de',
      'google.de', 
      'www.google.de', 
      'hddb://google.de', 
      'http://test.de/blubb/lala.php?x=aaa', 
      'http://www.test.de/blubb/lala.php?x=aaa', 
      'oindex.lima-city.de',  
      'http://oindex.lima-city.de', 
      'ftp://localhost', 
      'http://www.google.com/', 
      'http://nirvana/'
    ); 
    
    
    foreach($urls_list as $url) { 
    
    $hinfo = getHttpCode($url); 
    
    echo "<br />URL: ".$url."\n"; 
    echo "<br />Status: ".$hinfo['http_code']."\n"; 
    echo "<br />Redirect: ".$hinfo['redirect_url']."\n"; 
    echo "<br />\n"; 
    
    ## echo "<pre>\n"; 
    ## print_r($hinfo);
    ## echo "</pre>\n"; 
    
    }

    aber dabei bleibt das Problem bei Weiterleitung (auf 404 Fehlerseite)

    die URL: http://test.de/blubb/lala.php hat Status 301 und wird
    weitergeleitet zu: http://www.test.de/blubb/lala.php?x=aaa ... also mit www.
    prüfe ich direkt http://www.test.de/blubb/lala.php?x=aaa ... bekomme ich Status 404

    die URL: http://google.de hat Status 302 und wird
    weitergeleitet zu: http://www.google.de ... also mit www.
    prüfe ich direkt http://www.google.de ... bekomme ich Status 200

    also muss ich jedesmal wenn 'redirect_url' vorhanden ist
    nochmal die 'redirect_url' prüfen, um den Status der Ziel-Adresse zu bekommen


    ... 
    echo "<br />URL: ".$url."\n"; 
    echo "<br />Status: ".$hinfo['http_code']."\n"; 
    
    if (!empty($hinfo['redirect_url'])) { 
    echo "<br />Redirect: ".$hinfo['redirect_url']."\n"; 
    
    $hinfo2 = getHttpCode($hinfo['redirect_url']); 
    echo "<br />Redirect Status: ".$hinfo2['http_code']."\n"; 
    }
    
    echo "<br />\n"; 
    ...



    Weil eine Weiterleitung heisst ja noch nicht OK,
    es kann ja eine Weiterleitung zu einer Fehlerseite sein ....

    und für den Fall, das eine Weiterleitung wieder eine Weiterleitung ist
    bräuchte ich da wohl eine while() Schleife,
    ... auch um z.B. ab 3x redirect die URL zu blocken, oder wieviele sind noch OK?


    PS:
    komisch, das ein "normaler" .htaccess Rewrite wie index.php?name=horst als horst.html anzeigen
    gleich Status 200 hat und keine Info zum Rewrite, so wie bei mit www. Rewrite bei test.de ?!
    ... naja, keine Ahnung wie bei test.de der Rewrite gelöst ist, htaccess oder header(Location) in PHP
  • in: validate URL ?

    geschrieben von oindex

    Danke

    ich habe halt angenommen, dass:
    filter_var($url, FILTER_VALIDATE_URL);

    auch erkennt, ob es sich um ein "gängiges" Protokoll handelt, also http:// https:// oder ftp://
    aber da wird ja anscheinend "nur" die Syntax geprüft.

    daher nehme ich wohl doch lieber ein regex
    das von flashzeugs vorgeschlagene habe ich auch irgendwo gefunden,
    aber eben auch noch 10 andere, und bevor ich die alle stundenlang ausprobiere,
    halt (nochmal) die Frage: .... welches als "gut" bekannt ist, ... getestete Empfehlung(en) ?

    das file_get_contents() bzw. die function url_exists($url) { ... } ist auch bestimmt sehr hilfreich

    schön wäre halt, wenn ein Status zurück-gegeben wird, also ob 200, 404 oder 301 , etc.
    denn eine Webseite mit Fehler kann ja quasi auch immer erreichbar sein, halt als Fehlerseite

    aber mit
    get_headers($url, 1);

    bekomme ich bei 404 Fehlerseiten die weitergeleitet werden
    den Status 301 ... weil es wohl als Fehlerseite in .htaccess Rewrite steht

    BSP:

    get_headers('http://www.test.de/blubb/lala.php', 1);

    [0] => HTTP/1.1 301 Moved Permanently

    kann man das anders Abfragen, damit man in dem Fall doch den Status 404 bekommt ?

  • in: validate URL ?

    geschrieben von oindex

    Hallo

    anscheinend funktioniert filter_var($url, FILTER_VALIDATE_URL) nicht wirklich,

    $url = 'hddb://google.de'; 
    $checkurl = filter_var($url, FILTER_VALIDATE_URL); 
    var_dump($checkurl);


    die Ausgabe ist:

    string(16) "hddb://google.de"


    also würde die Adrese als Valide durchgehen, was ja Quatsch ist ... hddb://

    erwartet hätte ich als Ausgabe

    bool(false)



    alternativ ginge ja auch preg_match mit einem Regex für URLs
    aber da finde ich verschiedene Beispiele,

    welches regex für URL validate zur Prüfung mit preg_match() würdet Ihr mir empfehlen?
    oder besser gleich prüfen, ob URL erreichbar ist ... header-Status oder andere Methode?

    ---> Wie am besten prüfen, ob URL valide (und erreichbar) ist ?

    Danke

  • in: HTML-Entity Nummer und Dezimal-Code?

    geschrieben von oindex

    ja, wenn möglich, dann würde ich gerne direkt als UFT-8 ausgeben

    aber ich bekomme als String (nach Auslesen einer Datei) auch nicht codierte Sonderzeichen rein,
    und diese will ich "erkennen" und dann codieren, damit in Ausgabe dieser Sonderzeichen
    auch richtig dargestellt wird, und nicht als ? oder Viereck

    leider funktioniert utf8_encode() nicht für alle Sonderzeichen
    also brauche ich eine andere Methode um auch diese "lesbar" (in UTF-8) augeben zu können

    Beispiel: in dem String soll eigentlich ein langer Gedankenstrich stehen
    wenn ich mir die dazugehörige XML Datei (Quelltext) ansehe, oder diesen ausgebe
    dann sehe ich anstatt dem Gedankenstrich nur ein ?

    ... ich schätze mal, die Codierung ist schon beim Erstellen der XML-Datei "schief gegangen"
    und ich habe da keine Chance aus dem ? wieder einen Gedankenstrich zu machen




  • in: Ajax Daumen-Hoch script realisieren.

    geschrieben von oindex

    kleines Beispiel Script mit 3 Dateien

    Datei1: vote_page.php = Seite, auf dem das Voting angeboten wird
    Datei2: vote_result.php = Include-Datei, auf dem das Voting ausgewertet wird
    Datei3: vote_data.txt = Datei, in der das Voting-Ergebnis gespeichert wird


    kann sicherlich noch optimiert werden, aber mal als Beispiel für die Funktionsweise
    ... anstatt in .txt könnte man die Ergebnisse auch in MySQL speichern
    ... das CSS-Style (und Javascript) könnte man auch noch in eigene Dateien "auslagern"
    ... etc.

    zudem sollte man noch eine IP-Sperre machen, um mehrfache Votes zu verhindern


    --------------------------------------------------------------------
    Datei1: vote_page.php

    <html>
    <head>
    <title>Abstimmung</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    
    
    <script type="text/javascript">
    function getVote(usrvote) {
    
    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else { // code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
      
    xmlhttp.onreadystatechange=function() { 
      if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
        document.getElementById("res_poll").innerHTML=xmlhttp.responseText;
        }
      }
    xmlhttp.open("GET","vote_result.php?vote="+usrvote,true);
    xmlhttp.send();
    }
    </script>
    
    <style type="text/css">
    <!--
    .vclick { 
      font-family: Arial, Helvetica, sans-serif; 
      font-size:14px; 
      float:left; 
      margin:2px 6px 2px 6px; 
      padding:4px; 
      cursor:pointer;
      border: 1px solid #AAAAAA;
    }
    
    .bg_green { background:#AAFFCC; }
    .bg_red { background:#FFCCCC; }
    
    -->
    </style>
    
    </head>
    <body>
    
    <p>--- <a href="vote_page.php">Abstimmung</a> --- </p>
    
    <p>&nbsp;</p>
    
    
    <div id="get_poll">
    <h3>Sagst Du Ja oder Nein ... ?</h3>
    <p class="vclick bg_green" onclick="getVote('a')" />JA - Daumen hoch</p>
    <p class="vclick bg_red" onclick="getVote('b')" />NEIN - Daumen runter</p>
    </div>
    
    <p style="clear:both;">&nbsp;</p>
    
    <div id="res_poll">
    <?php include_once('vote_result.php'); ?>
    </div>
    
    <p>&nbsp;</p>
    
    </body>
    </html>


    anstatt dem Link "JA - Daumen hoch" könnte man eine "Daumen hoch Grafik" als Link machen
    und für den Link "NEIN - Daumen runter" entsprechend andere Grafik
    die Styles in den <p> TAGs kann man anpassen


    --------------------------------------------------------------------
    Datei2: vote_result.php

    <?php 
    // -------------------------------------------- 
    
    if (!empty($_REQUEST['vote'])) { 
    $vote = $_REQUEST['vote'];
    }
    else { 
    $vote = ''; 
    }
    
    // -------------------------------------------- 
    
    $filename = "vote_data.txt";
    
    // -------------------------------------------- 
    
    
    // ---- Altes Ergebnis laden---- 
    
    $content = file_get_contents($filename);
    
    //put content in array
    $res_array = explode("|", $content);
    $res_a = $res_array[0];
    $res_b = $res_array[1];
    
    
    // ---- Neues Ergebnis berechnen ---- 
    
    if (!empty($vote)) { 
    
    if ($vote == 'a') {
    $res_a = $res_a + 1;
    }
    
    if ($vote == 'b') {
    $res_b = $res_b + 1;
    }
    
    // ---- Neues Ergebnis speichern ---- 
    
    $insertvote = $res_a."|".$res_b;
    $fp = fopen($filename,"w",0666);
    fputs($fp,$insertvote);
    fclose($fp);
    
    }
    
    
    // -------------------------------------------- 
    
    $gesamt_ab = ($res_b + $res_a); 
    $gesdif_ab = ($res_a - $res_b); 
    
    if (0 < $res_a) { 
    $percent_a = (100*round($res_a/$gesamt_ab,2));
    }
    else { 
    $percent_a = 0;
    }
    
    if (0 < $res_b) { 
    $percent_b = (100*round($res_b/$gesamt_ab,2));
    }
    else { 
    $percent_b = 0;
    }
    
    if (0 < $gesamt_ab) { 
    $rank_a_b = (100*round(($gesdif_ab/$gesamt_ab),2));
    }
    else { 
    $rank_a_b = $res_a; 
    }
    
    $width_a = ($percent_a * 2);
    $width_b = ($percent_b * 2);
    
    // -------------------------------------------- 
    ?>
    
    <h2>Ergebnis:</h2>
    <table width="400" cellpadding="2" cellspacing="2" border="0" bgcolor="#DEDEDE">
      <tr align="left" valign="top">
        <td width="45">Yes:</td>
        <td width="224"><img src="vote1.gif" width="<?php echo $width_a; ?>" height="20" /></td>
        <td width="58"><?php echo $percent_a.'%'; ?></td>
        <td width="71"><?php echo $res_a; ?></td>
      </tr>
      <tr align="left" valign="top">
        <td width="45">No:</td>
        <td width="224"><img src="vote2.gif" width="<?php echo $width_b; ?>" height="20" /></td>
        <td width="58"><?php echo $percent_b.'%'; ?></td>
        <td width="71"><?php echo $res_b; ?></td>
      </tr>
    </table> 
    
    <p>&nbsp;</p>
    
    <p><?php echo 'Stimmen Gesamt: ' . $gesamt_ab; ?></p>
    <p><?php echo 'Verh&auml;ltnis: ' . $res_a .' zu '. $res_b; ?></p>
    <p><?php echo 'Rank-Wert: ' . $rank_a_b; ?></p>
    
    <p>&nbsp;</p>


    Rank-Wert Berechnung, Ergebnis-Ausgabe und Art der Speicherung (z.B. MySQL)
    kann man ja nach Bedarf / Vorlieben ändern und anpassen ...


    --------------------------------------------------------------------
    Datei3: vote_data.txt

    0|0


    hier werden die Ergenisse der Abstimmung gespeichert,
    Alternative wäre Speichern in MySQL, dazu muss Datei2: vote_result.php angepasst werden



    Insgesamt ist das hier nur ein "kleines" Beispiel
    und wie gesagt, Optimierung geht noch einiges

    für Abstimmungen für jeden Kommentar müsste man in AJAX-Übergabe
    noch weitere Werte übergeben (ID vom Post/ Kommentar) und entprechend speichern
    entweder über $filename oder weitere Spalte(n) in MySQL
    damit man auch unterschiedliche Ergebnisse bekommt, je Kommentar / was auch immer

    auch sollte man Mehrfach-Abstimmungen durch IP-Sperre blocken
    aber das ist wieder ein anderes Thema, wäre zuviel für diesen Beitrag

    ich hoffe das hilft schonmal ein bischen weiter

  • in: HTML-Entity Nummer und Dezimal-Code?

    geschrieben von oindex

    hmm, ok

    aber warum geht dann das:

    $mapping = array();
    $i=0; 
    foreach (get_html_translation_table(HTML_ENTITIES, ENT_QUOTES) as $char => $entity){
       $mapping[$i]['entity']  = $entity;
       $mapping[$i]['char']    = $char;
       $mapping[$i]['code']    = '&#' . ord($char) . ';';
     $i++; 
    } 
    
    print "<pre>\n"; 
    print_r($mapping); 
    print "</pre>\n";


    Problem ist, das get_html_translation_table ... für Einsatz von htmlentities()
    nicht wirklich Alle Sonderzeichen enthält

    ich habe eine Liste zusätzlicher Sonderzeichen, die nicht in htmlentities() berücksichtigt werden
    allerdings nur mit diesem &# Code und als Entities, und bestimmt auch nicht komplett

    Array
    (
        [&#39;] => &apos;
        [&#8722;] => &minus;
        [&#710;] => &circ;
        [&#732;] => &tilde;
        [&#352;] => &Scaron;
        [&#8249;] => &lsaquo;
        [&#338;] => &OElig;
        [&#8216;] => &lsquo;
        [&#8217;] => &rsquo;
        [&#8220;] => &ldquo;
        [&#8221;] => &rdquo;
        [&#8226;] => &bull;
        [&#8211;] => &ndash;
        [&#8212;] => &mdash;
        [&#8482;] => &trade;
        [&#353;] => &scaron;
        [&#8250;] => &rsaquo;
        [&#339;] => &oelig;
        [&#376;] => &Yuml;
        [&#402;] => &fnof;
        [&#913;] => &Alpha;
        [&#914;] => &Beta;
        [&#915;] => &Gamma;
        [&#916;] => &Delta;
        [&#917;] => &Epsilon;
        [&#918;] => &Zeta;
        [&#919;] => &Eta;
        [&#920;] => &Theta;
        [&#921;] => &Iota;
        [&#922;] => &Kappa;
        [&#923;] => &Lambda;
        [&#924;] => &Mu;
        [&#925;] => &Nu;
        [&#926;] => &Xi;
        [&#927;] => &Omicron;
        [&#928;] => &Pi;
        [&#929;] => &Rho;
        [&#931;] => &Sigma;
        [&#932;] => &Tau;
        [&#933;] => &Upsilon;
        [&#934;] => &Phi;
        [&#935;] => &Chi;
        [&#936;] => &Psi;
        [&#937;] => &Omega;
        [&#945;] => &alpha;
        [&#946;] => &beta;
        [&#947;] => &gamma;
        [&#948;] => &delta;
        [&#949;] => &epsilon;
        [&#950;] => &zeta;
        [&#951;] => &eta;
        [&#952;] => &theta;
        [&#953;] => &iota;
        [&#954;] => &kappa;
        [&#955;] => &lambda;
        [&#956;] => &mu;
        [&#957;] => &nu;
        [&#958;] => &xi;
        [&#959;] => &omicron;
        [&#960;] => &pi;
        [&#961;] => &rho;
        [&#962;] => &sigmaf;
        [&#963;] => &sigma;
        [&#964;] => &tau;
        [&#965;] => &upsilon;
        [&#966;] => &phi;
        [&#967;] => &chi;
        [&#968;] => &psi;
        [&#969;] => &omega;
        [&#977;] => &thetasym;
        [&#978;] => &upsih;
        [&#982;] => &piv;
        [&#8194;] => &ensp;
        [&#8195;] => &emsp;
        [&#8201;] => &thinsp;
        [&#8204;] => &zwnj;
        [&#8205;] => &zwj;
        [&#8206;] => &lrm;
        [&#8207;] => &rlm;
        [&#8218;] => &sbquo;
        [&#8222;] => &bdquo;
        [&#8224;] => &dagger;
        [&#8225;] => &Dagger;
        [&#8230;] => &hellip;
        [&#8240;] => &permil;
        [&#8242;] => &prime;
        [&#8243;] => &Prime;
        [&#8254;] => &oline;
        [&#8260;] => &frasl;
        [&#8364;] => &euro;
        [&#8465;] => &image;
        [&#8472;] => &weierp;
        [&#8476;] => &real;
        [&#8501;] => &alefsym;
        [&#8592;] => &larr;
        [&#8593;] => &uarr;
        [&#8594;] => &rarr;
        [&#8595;] => &darr;
        [&#8596;] => &harr;
        [&#8629;] => &crarr;
        [&#8656;] => &lArr;
        [&#8657;] => &uArr;
        [&#8658;] => &rArr;
        [&#8659;] => &dArr;
        [&#8660;] => &hArr;
        [&#8704;] => &forall;
        [&#8706;] => &part;
        [&#8707;] => &exist;
        [&#8709;] => &empty;
        [&#8711;] => &nabla;
        [&#8712;] => &isin;
        [&#8713;] => &notin;
        [&#8715;] => &ni;
        [&#8719;] => &prod;
        [&#8721;] => &sum;
        [&#8727;] => &lowast;
        [&#8730;] => &radic;
        [&#8733;] => &prop;
        [&#8734;] => &infin;
        [&#8736;] => &ang;
        [&#8743;] => &and;
        [&#8744;] => &or;
        [&#8745;] => &cap;
        [&#8746;] => &cup;
        [&#8747;] => &int;
        [&#8756;] => &there4;
        [&#8764;] => &sim;
        [&#8773;] => &cong;
        [&#8776;] => &asymp;
        [&#8800;] => &ne;
        [&#8801;] => &equiv;
        [&#8804;] => &le;
        [&#8805;] => &ge;
        [&#8834;] => &sub;
        [&#8835;] => &sup;
        [&#8836;] => &nsub;
        [&#8838;] => &sube;
        [&#8839;] => &supe;
        [&#8853;] => &oplus;
        [&#8855;] => &otimes;
        [&#8869;] => &perp;
        [&#8901;] => &sdot;
        [&#8968;] => &lceil;
        [&#8969;] => &rceil;
        [&#8970;] => &lfloor;
        [&#8971;] => &rfloor;
        [&#9001;] => &lang;
        [&#9002;] => &rang;
        [&#9674;] => &loz;
        [&#9824;] => &spades;
        [&#9827;] => &clubs;
        [&#9829;] => &hearts;
        [&#9830;] => &diams;
    )


    wenn aber in einem String dann eines der Zeichen im "Klartext" vorkommt, wie das EURO-Zeichen €
    kann ich es damit nicht erkennen und zu Entity (oder Unicode &#) umwandeln

    Auch die Browser-Ausgabe per Copy+Paste in eine .txt Datei geht nicht bei allen Zeichen
    selbst mit Notepad++ und UTF-8 (mit oder ohne BOM) kommen nicht alle Zeichen an
    viele bleiben ? oder so ein nichts-sagendes Viereck .... also kann ich diese dann nicht
    in einem String "erkennen" ... mit Array vergleichen (mit file() aus .txt je Zeile ein Zeichen)

    die Frage ist, wie bekomme ich saubere Ausgabe (sowohl in ISO-8859-1 als auch in UTF8)
    von möglichst allen Sonderzeichen? ... meie Idee war halt Entities bzw. &# Codierung ... ?!

  • in: HTML-Entity Nummer und Dezimal-Code?

    geschrieben von oindex

    Hallo


    wie komme ich von einer HTML-Entity Nummer zum Dezimal-Code?

    BSP: wie komme ich von
    &#8364;
    auf 128 ??

    mit
    echo ord('€');
    bekomme ich als Ergebnis: 128

    ok, denn mit
    echo chr(128);
    bekomme ich wieder €

    ABER
    wenn ich das Zeichen nicht im "Klartext" als € vorliegen habe,
    sondern nur als
    &#8364;


    wie komme ich davon auf den Dezimal-Wert ???

    gibt es eine PHP Funktion, die mir zur HTML-Entity Nummer
    &#8364;
    den Dezimal-Wert ausgibt?

    oder über Umweg, aus
    &#8364;
    den "klartext" ASCII, den ich dann wieder durch ord() jagen kann ?!

Login zum Webhosting ohne Werbung!