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:
das ist vollkommen richtig, ABER
Wenn ein Wert unter "Anführungszeichen" steht so wird ein Trennzeichen darin ignoriert..
hackyourlife schrieb:
... das glaube ich nicht .... Zeilenumbruch macht auf jeden Fall Probleme (meiner Ansicht nach)
Gleiches gillt für Zeilenumbrüche. .
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:
Warum sollte er das sein?
Problem? ... Wenn der Eingabe-String (in die Funktion) schon escaped ist
dann wird er ja doppelt escaped ?! ... wie kann ich das verhindern?
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 & oder von ä 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