kostenloser Webspace werbefrei: lima-city


Suche auf lima-city

  • in: Login Account aktivierung

    geschrieben von soboo

    1. bei User-Anmeldung
    + User-Status in DB Speichern, z.B. Wert "1" für angemeldet aber noch nicht aktiviert
    (dazu musst Du evtl in die Tabellen-Struktur die Spalte 'status' einführen)
    + Bestätigungs-Code erstellen (Zufalls-String) und diesen auch in DB speichern
    (z.B. ein MD5 hash aus username + email + geheimer String / Salt)
    + Anmelde- (Bestätigungs-) Email an User senden mit dem Aktivierungs-Link
    (url mit GET-Parameter für Username ud der Aktivierungs-ID / String)

    2. Aktivierungs-Link (und Ziel-Seite)
    + der Link könnte so aussehen: http://DEINE-DOMAIN.TLD/aktivierung.php?user=donald&id=pZtg5Re4k
    + Auf Deiner Seite /aktivierung.php den GET['user'] und den GET['id'] Wert prüfen, ob zusammen passt
    wenn ja, dann User-Status in DB ändern z.B. Wert "2" für angemeldet und auch aktiviert
    und Weiter-Leitung zum Login

    3. Login-Seite
    + nicht nur Username + Passwort prüfen, sondern auch User-Status (ob aktiviert)
    + Wenn User vorhanden (+ Passwort richtig) aber noch nicht aktiviert,
    dann evtl. Button / Link anbieten, um Aktivierungs-Mail erneut zu zusenden

  • in: utf-8 bom in json file?

    geschrieben von soboo

    Hallo

    ich möchte eine JSON Datei auslesen,,
    aber am Anfang der Datei steht ein UTF8 BOM (Byte Order Mark)
    


    JSON Daten müssen ja in UTF-8 vorliegen, aber muss das BOM sein ?!?

    damit funktioniert json_decode() nicht, also die String-Daten in Objekt holen

    header("Content-Type: text/html; charset=utf-8");
    
    $jstring = file_get_contents($jfile); 
    
    $jdata = json_decode($jstring); 
    
    echo "<pre>\n"; 
    print_r($jdata); 
    echo "</pre>\n";

    ich bekomme damit keinen Inhalt ..... $jdata bleibt leer

    ... auch wenn ich vorher einen UFT-8 header setze, keine Daten

    wenn ich diesen BOM mit str_replace entferne, dann geht es
    $jstring = str_replace('','',$jstring);

    dann bekomme ich wie gewünscht die JSON Daten als Objekt
    ... aber das ist wohl nicht die "sauberste" Lösung ?!

    Frage 1:
    gehört das BOM da rein?
    sollte derjenige, der die JSON Datei erstellt es mit oder ohne BOM ausliefern ?

    Frage 2:
    wenn mit BOM ok (normal) ist,
    wie komme ich "eleganter" an die Daten ohne mein str_replace() ?

    Danke!
  • in: RSS content:encoded und CDATA mit SimpleXML auslesen ?

    geschrieben von soboo

    hmm Danke

    in der Tagesschau RSS steht oben die Zeile

    <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">


    und auf der verlinkten Seite steht im $ns Array

    'content' => 'http://purl.org/rss/1.0/modules/content/',


    also hat doch die Tagesschau RSS schon diesen NameSpace ?!
    warum es dann nicht geht ?

    ... ok, mit dem Code von der Seite funktioniert es

    aber da ich die RSS sowieso cache (nur nach mind. 30 Minuten neu abholen)
    habe ich noch eine etwas "dreckige" Lösungs-Möglichkeit:
    ---> einfach :content mit str_replace() aus dem XML-String entfernen

    $xmlstring = file_get_contents($cache_file); 
    
    $xmlstring = str_replace(':encoded','',$xmlstring); 
    
    $infodata = simplexml_load_string($xmlstring, null, LIBXML_NOCDATA);


    das geht auch, ist aber sicher nicht so eine "saubere" Lösung,
    ist dafür simple :)


  • in: RSS content:encoded und CDATA mit SimpleXML auslesen ?

    geschrieben von soboo

    Hallo

    Wenn ich die Tagesschau RSS mit SimleXML auslese,
    dann bekomme ich nicht alle Elemente ins Object (Array)

    der TAG <content:encoded> fehlt komplett ?!

    $cache_file = 'data/tagesschau.xml' 
    // --- Cache Funktion (hier entfernt) 
    
    $datastr = file_get_contents($cache_file); 
    
    $infodata = simplexml_load_string($datastr);
    
    foreach ($infodata->channel->item as $item) {  
    
    echo "<pre>\r\n"; 
    print_r($item); 
    echo "</pre>\r\n";  
    
    }


    Ausgabe ist dann (hier mal nur ein $item)

    SimpleXMLElement Object
    (
        [title] => Die Preise in Deutschland steigen langsamer
        [link] => http://www.tagesschau.de/wirtschaft/inflation184.html
        [pubDate] => Mon, 30 Jan 2012 16:25:58 +0100
        [description] => Die Preise in Deutschland steigen immer langsamer. Im Januar betrug die Teuerung vorläufigen Berechnungen zufolge 2,0 Prozent, wie das Statistische Bundesamt mitteilte. Das wäre der vierte Rückgang der Inflationsrate in Folge. Im September hatte das Plus noch bei 2,6 Prozent gelegen.
        [guid] => http://www.tagesschau.de/wirtschaft/inflation184.html
    )


    aber in der RSS ist doch noch ein content TAG (Element of item)
    <content:encoded><![CDATA[<p>hier weiterer HTML code</p>]]></content:encoded>

    doch der wird einfach ignoriert ?!

    wie kann ich auch dieses Element mit einlesen
    ... so dass es mit im den Daten ($item Array) ist ?!

  • in: bei Formulareingabe nur Zahlen zulassen ?

    geschrieben von soboo

    habe es ausprobiert,
    Dein Script in den HTML <head> Bereich und

    <input type="text" name="pricemax" size="6" maxlength="6" onkeypress="validate(event);" />

    funktioniert aber leider nicht

    auch nicht, wenn ich validate(this) oder validate(pricemax) mache

    ich frage mich auch woher test(key) kommt, ist test eine vordefinierte JS Funktion ?

    und das hier:

    if(theEvent.preventDefault) theEvent.preventDefault();

    .... beisst sich doch in den Schwanz ?!
    Event Aufruf wenn Event aufgerufen Ist ? ... hä?

    ich habe noch mal ein bischen gegoogelt und dann das hier gefunden

    <script type="text/javascript">
    
    function validate_num(formdata) {
      formdata.value=formdata.value.replace(/\D/, '' );
    }
    
    </script>


    <input type="text" name="pricemax" size="6" maxlength="6" onkeyup="validate_num(this);" />


    damit geht es

    und onkeyup ist denke ich besser, weil bei Test mit onkeypress
    blieb der zuletzt eingetragene Buchstabe noch im Feld, nur vorlezter wurde entfernt

  • in: bei Formulareingabe nur Zahlen zulassen ?

    geschrieben von soboo

    Hallo

    wie kann ich für eine Formular-EIngabe (in ein Text-Feld)
    schon bei (während) der Eingabe nur Zahlen zulassen ?

    <input type="text" name="pricemax" size="6" maxlength="6" />


    so, dass auch kein Punkt oder Komma eingetragen werden kann,
    sondern nur max 6 Ziffern 0 bis 9 (bzw. Ganz-Zahlen von 0 bis 999999)

    Idee:
    mit JS die Eingabe je Zeichen prüfen, wenn nicht Zahl 0-9, dann dieses Zeichen löschen
    ... also nicht mit Meldung: alert('Bitte nur Ziffern 0-9 eingeben'); sondern einfach nicht zulassen.

    geht das ?

  • in: Textarea wird nicht richtig in CSV geschrieben

    geschrieben von soboo

    die Idee finde ich eigentlichganz gut, zuerst in MySQL speichern,

    und damit kann man dann eine CSV in verschiedenen Varianten exportieren, z.B. UTF-8 oder ISO

    auch kann man beim Speichern in MySQL "einfacher" doppelte Einträge abfangen

    und man hat die Daten, um sie in verschiedene Formate zu exportieren (z.B. CSV, XML, JSON)

    bei CSV schleichen sich schneller "Fehler" ein, welche die Struktur zerschießen können,

    aus MySQL kann man dann auch nur Teil-Daten als Export (CSV, etc) ausliefern,
    z.B. nur die Datensätze aus einer Kategorie ... oder mit Sortierung nach .... etc.

    also ich würde es so machen, in MySQL speichern
    und von dort aus Exportieren je nach Kriterium


  • in: Textarea wird nicht richtig in CSV geschrieben

    geschrieben von soboo

    php-oop schrieb:
    Wie kann ich die Umlaute auch in die CSV schreiben?.
    .

    Wenn Die Eingabe als UTF-8 ankommt, und Du aber ISO willst
    dann vor dem Speichern die Eingabe decodieren

    if(mb_check_encoding($save_code, 'UTF-8') === TRUE) { 
         $save_code = utf8_decode($save_code);
      }


    oder (besser) DU lässt es UTF-8 und machst bei der Ausgabe dann auch UTF-8 codierung

    header("Content-Type: text/html; charset=utf-8");



    die Spalten in Anführungszeichen einschließen ist natürlich auch eine (die bessere) Möglichkeit

    hackyourlife schrieb:
    Wenn ein Wert unter "Anführungszeichen" steht so wird ein Trennzeichen darin ignoriert..
    das ist vollkommen richtig, ABER

    hackyourlife schrieb:
    Gleiches gillt für Zeilenumbrüche. .
    ... das glaube ich nicht .... Zeilenumbruch macht auf jeden Fall Probleme (meiner Ansicht nach)
    weil beim Auslesen mit fgetcsv() wird ja Zeilenweise ausgelesen


    hackyourlife schrieb:
    Es wird ja beim beschreiben der CSV-Datei nicht htmlentities angewendet!


    ... naja, aber ein ; kömmt schonmal vor, wenn komplette HTML Webseite eingetragen wird
    es könnte ja auch Javascript enthalten oder der Code mit Entities eingetragen werden
    wenn er von woanders per Copy+Paste übernommen wird

    In dem Beispiel waren ja die Felder nicht mit " enclosure,
    da würde es schon Sinn machen den Trenner raus zu filtern

    aber wenn man es mit " enclosure macht, dann sollte das egal sein.
    bzw. zur Sicherheit könnte man evtl. noch gemeinsames Vorkommen von enclosure und Trenner filtern
    also ";" und ": und ;"
    denn bei User-Eingabe weiss man ja nie, was übergeben wird ^^

    $felder = ''; // ---- Leer-String ... in folgenden Zeilen Felder anfuegen 
    $felder .= '"Add"'.$trenner; 
    $felder .= '"Germany"'.$trenner; 
    $felder .= '"Auction"'.$trenner; 
    $felder .= '"'.$save_code.'"'.$trenner; 
    // usw.


    ich würde aber auf jeden Fall Zeilenumbrüche entfernen,
    geht ja auch im fertigen $felder String

    $felder = str_replace("\r", "", $felder); 
    $felder = str_replace("\n", "", $felder);


    denn ich bin immernoch fest der Meinung,
    dass Zeilenumbruch in CSV als neuer Datensatz gilt

    ... vielleicht kann excel damit umgehen, aber PHP: fgetcsv liest immer genau eine Zeile


  • in: mysql eintrag nicht doppelt escapen ?

    geschrieben von soboo

    hackyourlife schrieb:
    soboo schrieb:
    Problem? ... Wenn der Eingabe-String (in die Funktion) schon escaped ist
    dann wird er ja doppelt escaped ?! ... wie kann ich das verhindern?
    Warum sollte er das sein?


    na z.B. wenn der String vorher durch ein addslashes() gejjagt wurde
    macht dann mysql_real_escape_string() nochmal Slashes dazu ?


    zu: mysql_real_escape_string und Datenbank Verbindungs-Kennung
    hackyourlife schrieb:
    Ja, es funktioniert in einer Funktion. Warum sollte es das etwa nicht tun?


    naja, ich dachte innerhalb einer Funktion sind NUR Varaiablen verfügbar
    die a) als Parameter übergeben wurden, b) in der Funktion global gesetzt sind oder c) Konstanten
    und meine $con definiere ich ja nicht als Konstante ...

  • in: Textarea wird nicht richtig in CSV geschrieben

    geschrieben von soboo

    Hallo

    da in einer Textarea auch Zeilenumbrüche eingetragen werden
    solltest Du diese einfach vor dem Speichern entfernen
    $save_code = $_POST['code']; 
    $save_code = str_replace("\r", "", $save_code); 
    $save_code = str_replace("\n", "", $save_code); 
    // --- hier evtl weitere Steuerzeichen und Sonderzeichen entfernen

    zudem solltest Du nicht $_POST[key] verwenden sondern $_POST['key'];
    bei allen Array Variablen den Key, der String ist, in Anführungszeichen setzen

    auch solltest Du aus jeder Eingabe das Trenner-Zeichen ersetzen
    wenn im Code ein ; vorkommt, dann springt CSV je eine Spalte weiter

    evtl auch anderes Trenner-Zeichen als ; nehmen, eines, das keine Funktion im HTML hat
    sonst wird von &amp; oder von &auml; das ; abgeschnitten, was dann HTML-Fehler ist

    z.B. Pipe | als Trenner .... und nicht in excel öffnen sondern in z.B. notepad++ editor


    $trenner = '|'; 
    // -------- Trenner durch Unterstrich _ ersetzen 
    $save_code = str_replace($trenner, "_", $save_code); 
    
    $felder = ''; // ---- Leer-String ... in folgenden Zeilen Felder anfuegen 
    $felder .= 'Add'.$trenner; 
    $felder .= 'Germany'.$trenner; 
    $felder .= 'Auction'.$trenner; 
    $felder .= '....'.$trenner; 
    // usw.



  • in: mysql eintrag nicht doppelt escapen ?

    geschrieben von soboo

    Hallo

    ich habe eine Funktion zum codieren und escapen von Strings
    zur Anwendung bevor ich sie in eine MySQL Tabelle schreibe
    (oder auch bevor ich den String mit einem Eintrag vergleiche)


    function DBconvertString($string) {
    
      if(!mb_check_encoding($string, 'UTF-8')) { 
         $string = utf8_encode($string);
      }
    
      $string = mysql_real_escape_string($string);
    
    return $string;
    }


    Problem? ... Wenn der Eingabe-String (in die Funktion) schon escaped ist
    dann wird er ja doppelt escaped ?! ... wie kann ich das verhindern?

    für UFT-8 codierung kann ich ja mit mb_check_encoding() prüfen,
    ob der String schon in UTF-8 vorliegt, um dann nicht doppelt zu codieren

    aber wie mache ich so eine Prüfung vor dem Escapen ?!?
    ... damit der String nicht doppelt escaped wird


    und ... noch ne Frage zu mysql_real_escape_string


    funktioniert mysql_real_escape_string() überhaupt innerhalb einer Funktion?

    vor Funktionsaufruf wird zwar die Verbindung zur Datenbank hergestellt,
    aber muss ich dann noch die Verbindungs-Kennung $con

    mit dem Aufruf übergeben bzw. in der Funktion global setzen
    und dann in der Funktion mysql_real_escape_string() mit dem Kennungs.Parameter aufrufen ?

    $con = mysql_connect($db_host, $db_user, $db_pass);
    ...
    function DBconvertString($string) {
      global $con; 
    
      if(!mb_check_encoding($string, 'UTF-8')) { 
         $string = utf8_encode($string);
      }
    
      $string = mysql_real_escape_string($string, $con);
    
    return $string;
    }


    ... also mit oder ohne Verbindungs-Kennung Parameter?
    und wie doppeltes escapen verhindern ?

    oder wie sonst kann man vor einer MySQL Anfrage die verwendeten Strings
    richtig codieren und escapen (ich verwende Koalition uft8_general)

    Danke!

  • in: Ein php Objekt als XML speichern?

    geschrieben von soboo

    Danke

    ja, XMLWrite ist ja wieder nur Stückchen-Weise so weit ich das sehe,

    eine fertige Klasse dafür wäre ne Idee, muss ich mir mal paar ansehen

    eine ganz einfache Variante habe ich auch bei php.net unter SimpleXML noch gefunden

    <?php 
    
    class Obj2xml {
    
        var $xmlResult;
       
        function __construct($rootNode){
            $this->xmlResult = new SimpleXMLElement("<$rootNode></$rootNode>");
        }
       
        private function iteratechildren($object,$xml){
            foreach ($object as $name=>$value) { 
                if (is_string($value) || is_numeric($value)) {
                    $xml->$name=$value;
                } else {
                    $xml->$name=null;
                    $this->iteratechildren($value,$xml->$name);
                }
            }
        }
       
        function toXml($object) {
            $this->iteratechildren($object,$this->xmlResult);
            return $this->xmlResult->asXML();
        }
    }
    
    ?>


    Aufruf:

    $converter = new Obj2xml("root");  // ---- Name des Rooot-Elements 
    
    $newxml = $converter->toXml($object);  // ---- Object Daten zu XML String


    leider macht diese Klasse keinen Zeilenumbruch oder Einrückung, wenn ein neues Element anfängt
    aber das ist ja nur Schönheits-Problem, zur Not wird das wohl gehen ...


    ... ist der PEAR XML serializer auf Lima-City verfügbar ?

    bzw. wie kann ich feststellen, ob er auf einem Server (Webspace) installiert ist
    ... und wie greife ich dann darauf zu ?
  • in: Ein php Objekt als XML speichern?

    geschrieben von soboo

    Hallo

    ich habe ein Objekt in PHP, diese Daten will ich als XML Datei speichern ... aber wie ?

    das Objekt ist in mehrere Ebenen verschachtelt
    und enthält weitere Objekte, Arrays und auch HTML-Codes

    gibt es eine Funktion, die Objekte und Arrays in XML umwandelst

    ... quasi das Gegenstück zu Simle XML Load ?

    stdClass Object
    (
        [Gesamt] => 57
        [Ergebnisse] => stdClass Object
            (
                [Elemente] => Array
                    (
    
                        [0] => stdClass Object
                            (
                                [Id]  => 1
                                [Info1]  => stdClass Object
                                            (
                                                [MinRate] => 2
                                                [MaxRate] => 7
                                            )
                                [Info2]  => Beispiel <strong>Text </strong> mit HTML
                            )
    
                         [1] => stdClass Object
                            (
                                [Id]  => 2
                                [Info1]  => stdClass Object
                                            (
                                                [MinRate] => 3
                                                [MaxRate] => 5
                                            )
                                [Info2]  => Beispiel <strong>Text </strong> mit HTML
                            )
    
                         [2] => stdClass Object
                            (
                                [Id]  => 3
                                [Info1]  => stdClass Object
                                            (
                                                [MinRate] => 1
                                                [MaxRate] => 9
                                            )
                                [Info2]  => Beispiel <strong>Text </strong> mit HTML
                            )
    
    
                   )
            )
    )



    Wie bringe ich diese Daten aus dem Objekt sauber in XML
    damit ich den XML-STring dann als .xml speichern kann ? (cachen)

    gibt es eine Gegenstück zu Simle XML Load ... Simple XML Write ?

    Danke


Login zum Webhosting ohne Werbung!