php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 31-03-2009, 07:03
ostems
 Registrierter Benutzer
Links : Onlinestatus : ostems ist offline
Registriert seit: May 2008
Beiträge: 44
ostems ist zur Zeit noch ein unbeschriebenes Blatt
Standard Verschlüsselte Textdatei auslesen

Hallo Proggis...

ich habe eine txt-datei die verschlüsselte daten beinhaltet.
(base64_encode)

diese datei gibt die aktuellen tagesumsätze wieder als tabelle aus.

PHP-Code:
$YourFile "kasse/umsatz.txt";
$handle fopen($YourFile'r');
$Data fread($handle50000);
$Data base64_decode($Data);

            echo 
$Data; echo "<tr>"
Anzeige in PHP:
<td>Kundenname1</td><td>22.03.2009 - 21:22</td><td>12,90</td><td> €</td><tr>

<td>Kundenname2</td><td>22.03.2009 - 21:45</td><td>12,90</td><td> €</td><tr>

<td>Kundenname3</td><td>22.03.2009 - 21:50</td><td>12,90</td><td> €</td><tr>

<td>Kundenname4</td><td>22.03.2009 - 22:30</td><td>12,90</td><td> €</td><tr>
usw.....
Klappt wunderbar.
doch wie kann ich die summe aus spalte 3 zusammenrechnen?

in der verschlüsselten datei ist nach jedem </td> ein nichtverschlüsseltes + zeichen
(zur sicherheit falls tatsächlich mal eine angabe gelöscht werden muss)

Hat jemand eine Idee wie ich das machen kann?

achja... es ist kein zeilenumbruch in der textdatei.
Mit Zitat antworten
  #2 (permalink)  
Alt 31-03-2009, 08:23
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Mit explode() zerlegst du den Dateiinhalt am <tr>. Über das Ergebnis iterierst du in einer Schleife, zerlegst jeden Teil wiederum am </td><td>. Nun greifst du dir aus dem Ergebnis die gewünschte Spalte, entfernst die HTML-Tags mit strip_tags() oder simplen Stringoperationen. Dann wandelst du das Komma in der Zahl in einen Punkt um und summierst.

Oder du benutzt preg_match_all() um die Werte rauszufischen.
Mit Zitat antworten
  #3 (permalink)  
Alt 31-03-2009, 10:04
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Steht das <tr>-Tag mit in der Datei? Fehlt das schließende Tag wirklich? Wenn gültiges XML in der Datei steht, kannst du auch mit der DOM-Extension und XPath drauf losgehen und dir die passenden Werte herausfischen.
Mit Zitat antworten
  #4 (permalink)  
Alt 01-04-2009, 17:14
ostems
 Registrierter Benutzer
Links : Onlinestatus : ostems ist offline
Registriert seit: May 2008
Beiträge: 44
ostems ist zur Zeit noch ein unbeschriebenes Blatt
Standard ich habs..

nochmals danke für die raschen hilfestellungen...

ich habe es nach stunden-langem rumprobieren hinbekommen.

das einzige was den soll erfüllt ist ist zwar sehr laienhaft aber es funktioniert...

wenn jemand ne bessere lösung hat... her damit! :-)

PHP-Code:
 // Die gespeicherten Tageseinnahmen in Form: (base64_encode verschlüsselst und ohne Zeilenumbruch)
 /*
<td>Name1</td><td>Uhrzeit1</td><td align="right">Betrag1</td><td> €</td><tr>
<td>Name2</td><td>Uhrzeit2</td><td align="right">Betrag2</td><td> €</td><tr>
<td>Name3</td><td>Uhrzeit3</td><td align="right">Betrag3</td><td> €</td><tr>
<td>Name4</td><td>Uhrzeit4</td><td align="right">Betrag4</td><td> €</td><tr> 
... usw
*/     

//Aufrufen der gewünschten Datei in Form: Ordner/Datei.txt
       
$file "kasse/umsatz.txt";  
       
$txt file_get_contents($file); 

//Inhalt weider entschlüsselln          
       
$txt1 base64_decode($txt);             
           
// Ein paar Zellen entfernen und durch Leerstellen ersetzen !!!!
// Ersetzt man ohne Leerstellen werden die einzelnen Blöcke nicht getrennt
// Somit ergibt das auch nur ein zusammenhängendes Gebilde
       
$txt2 str_replace("<td>"" ",$txt1);
       
$txt3 str_replace("</td>"" ",$txt2);
       
$txt4 str_replace('<td align="right">'" ",$txt3);

// Satzende erzwingen ( Da der Inhalt nur ein Einzeiler ist)
// Tabellenumbruch durch * ersetzen
       
$string str_replace("<tr>""*",$txt4);
       
$sum11 0;
       
$tok strtok($string"*"); 

// Auslesen aller Sätze bis zum * und wiederholen so oft wie * vorhanden sind
       
while ($tok !== false) {
            
#echo "$tok<br />";         // Auflistung des Inhalts  (# Hier ausgeblendet)
            
$tok strtok("*");         // Array ausgeben

// Splitten der der Sätze in einzelne Blöcke bei jedem Leerzeichen
            
list($ago$bgo$cgo$dgo$ego$fgo) =explode(" "$tok);
           
#echo "$ago, $bgo, $cgo, $dgo, $ego, $fgo<br>";

// Zusammenrechnen von spalte 6 (alle buchungen des Tages als Endsumme)
            
$sum11 += $fgo;
       }
        
       if (
$sum11 0.1) { 
           
$sum11 "0,00";
       } else {
           
$sum11 =sprintf("%01.2f",$sum11);
       }
// Ensumme mit zwei stellen hinterm Komma ausgeben
       
echo $sum11
Mit Zitat antworten
  #5 (permalink)  
Alt 01-04-2009, 17:39
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

base64 ist keine Verschlüsselung. Diese Daten sind für jeden frei lesbar.
Mit Zitat antworten
  #6 (permalink)  
Alt 02-04-2009, 00:53
ostems
 Registrierter Benutzer
Links : Onlinestatus : ostems ist offline
Registriert seit: May 2008
Beiträge: 44
ostems ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@ h3ll

base64 ist keine Verschlüsselung. Diese Daten sind für jeden frei lesbar.

Dann öffne doch bitte mal eine Textdatei mit dem Editor dessen daten base64_encode sind.
Mit Zitat antworten
  #7 (permalink)  
Alt 02-04-2009, 00:58
pekka
 PHP Master
Links : Onlinestatus : pekka ist offline
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
pekka befindet sich auf einem aufstrebenden Ast
Standard

Base64 ist keine Verschlüsselung.
Es reicht ein base64_decode($inhalt_der_textdatei); um an die Daten zu kommen.
Mit Zitat antworten
  #8 (permalink)  
Alt 02-04-2009, 01:03
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von ostems
Dann öffne doch bitte mal eine Textdatei mit dem Editor dessen daten base64_encode sind.
Guckst du hier:
http://wingloon.com/2008/10/28/base6...using-notepad/

Außerdem kann Total Commander im Handumdrehen jede base64-codierte Datei ruck zuck in normalen Text konvertieren. Total Commander ist ein sehr beliebter und verbreiteter Dateimanager für Windows (für alle Leute, die den Explorer nicht leiden können).

http://www.ghisler.com/deutsch.htm

Geändert von h3ll (02-04-2009 um 01:06 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 02-04-2009, 01:57
ostems
 Registrierter Benutzer
Links : Onlinestatus : ostems ist offline
Registriert seit: May 2008
Beiträge: 44
ostems ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Äh... um missverständnisse zu vermeiden...

es geht bei dieser verschlüsselung darum, das angestellte
beim arbeiten mit der kasse nicht einfach daten aus der datei rauslöschen.

aber, die datei muss für den admin wieder lesbar im umsatz-Adminbereich
angezeigt werden.
darum die base64_encode.

auf dem kassenrechner befinden sich keine programme die diese datei lesbar anzeigen würden.

gibt es noch etwas besseres?
dann sach mal an...
so überzeugt bin ich nämlich auch nicht von base64

ach ja... wo ich schon mal hier bin...

kennst du dich mit zeitberechnung aus?
Mit Zitat antworten
  #10 (permalink)  
Alt 02-04-2009, 02:08
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von ostems
Äh... um missverständnisse zu vermeiden...

es geht bei dieser verschlüsselung darum, das angestellte
beim arbeiten mit der kasse nicht einfach daten aus der datei rauslöschen.
Nochmal: Es ist keine Verschlüsselung. Bitte verwende nicht dieses Wort dafür.

Zitat:
Original geschrieben von ostems
aber, die datei muss für den admin wieder lesbar im umsatz-Adminbereich
angezeigt werden.
darum die base64_encode.

auf dem kassenrechner befinden sich keine programme die diese datei lesbar anzeigen würden.
Die Wahrscheinlichkeit ist sehr gering, aber die Angestellten können Verwandte haben, die sich damit auskennen oder selber nur vorübergehend den Job machen, aber nebenbei Informatik studieren. Jetzt fehlt nur noch eine böse Absicht und schon hast du den Scherbenhaufen.

Zitat:
Original geschrieben von ostems
gibt es noch etwas besseres?
dann sach mal an...
so überzeugt bin ich nämlich auch nicht von base64
Eine Verschlüsselung mit mcrypt zum Beispiel:
http://de.php.net/manual/en/book.mcrypt.php

Oder noch besser:
Den Leuten, die das nichts angeht, erst gar nicht einen Zugang zu den sensiblen Daten ermöglichen.

Zitat:
Original geschrieben von ostems
ach ja... wo ich schon mal hier bin...

kennst du dich mit zeitberechnung aus?
Ja.
Mit Zitat antworten
  #11 (permalink)  
Alt 02-04-2009, 02:44
ostems
 Registrierter Benutzer
Links : Onlinestatus : ostems ist offline
Registriert seit: May 2008
Beiträge: 44
ostems ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Kanns du mit nachfolgendem code etwas anfangen?

musste einiges rausnehmen weil es nicht dazu gehörte.
hoffe ich hab jetzt nix wichtiges rausgenommen

PHP-Code:
// Hier wird ermittelt um welche spielart es sich handelt

 
$sql mysql_query("SELECT nr, art FROM koordinaten Where id='$id'");
        
$art_select mysql_fetch_array($sql);

        
$art $art_select['art'];     // Z.B. Billard
        
$numr  $art_select['nr'];
       
// Ab hier wird wird unterschieden die Art und der Preis zu welcher Zeit
// In Billard1 steht z.B 3.50 in Billard2 steht 4.50 und in Billard3 5.50 für die Preis  

        
$sql mysql_query("SELECT
        Billard1, Billard2, Billard3,
        Snooker1, Snooker2, Snooker3,
        Karambol1, Karambol2, Karambol2,
        Internet1, Internet2, Internet3,
        zeit1, zeit2, zeit3, zeit4 FROM config"
);
        
$row mysql_fetch_array($sql);

//von 0:00 Uhr bis 8:00 kostet eine Stunde Billard 5.50 
        
$time3 $row['zeit4'];  // Zeigt 00:00:00  
// von 8:00 Uhr bis 16:00 kostet eine Stunde Billard 3.50
        
$time4 $row['zeit1'];    // Zeigt 08:00:00 Uhr  
// von 16:00 Uhr bis 20:00 kostet eine Stunde Billard 4.50                                            
        
$time5 $row['zeit2'];    // Zeigt 16:00:00 Uhr
// von 20:00 Uhr bis 00:00 kostet eine Stunde Billard 5.50      
        
$time6 $row['zeit3'];    // Zeigt 20:00:00 Uhr       
                                          
        
       
$wert = array();
                       for (
$i 1$i <= 4$i++) {
                            if (
$i != 4) {
                                
$wert[$i] = $row[$art $i];
                            } else {
                                
$wert[4] = $row[$art 3];
                            }
                       }


// Abfrage der Startzeit, Endzeit, Spielart, anzahl Personen und was schon gezahlt wurde
        
$abfrage mysql_query("SELECT  zeit1, zeit2  FROM abr WHERE id = '$id'");
       while (
$rows mysql_fetch_array($abfrage)) {
      
        
$time1=$rows['zeit1'];  //  ist die startzeit (z.B. 2009-03-28 15:55:32)
        
$time2=$rows['zeit2'];  //  ist die endzeitzeit (z.B. 2009-03-29 02:16:17)

       
}
#******************************************************
//Der Nachfolgende code ist von dir!  hab ich gerade gesehen.[/b]
#******************************************************
        // aufsplitten der Zeiten $time1 und $time2 



        
function time_to_hours($rows) {
            list(
$x_date$first_time)=explode(' '$rows);
            list(
$Y$mo$d) = explode('-'$x_date);
            list(
$h$m$s) = explode(':'$first_time);
            return 
$h $m 60 $s 3600;

        }

         
$prices = array(
            array(
'value' => $wert[4], 'time' => $time3),    //   => 00:00
            
array('value' => $wert[1], 'time' => $time4),    //   => 08:00
            
array('value' => $wert[2], 'time' => $time5),    //   => 16:00
            
array('value' => $wert[3], 'time' => $time6)     //   => 20:00
         
);

        
    if (
$end_time $start_time)
       
$end_time += 24.0;
       
$sum 0.0;

      
$sum 0.0;

    for (
$i_cnt 0$i_max count($prices) - 1$i_cnt <= $i_max$i_cnt++) {
    
$current_time time_to_hours($prices[$i_cnt]['time']);
    
$next_time $i_max $i_cnt time_to_hours($prices[$i_cnt 1]['time']) : 48.0;

    if (
$start_time $next_time && $end_time >= $current_time) {
        
$diff_time  $end_time $next_time $end_time $next_time;
        
$diff_time -= $start_time $current_time $start_time $current_time;

        
$sum += $prices[$i_cnt]['value'] * $diff_time;
    }
}
       
echo 
$sum
Die Summe ($sum) ist nicht richtig berechnet.

Geändert von ostems (02-04-2009 um 03:24 Uhr)
Mit Zitat antworten
  #12 (permalink)  
Alt 02-04-2009, 02:50
Blackgreetz
 PHP Junior
Links : Onlinestatus : Blackgreetz ist offline
Registriert seit: Oct 2005
Beiträge: 901
Blackgreetz ist zur Zeit noch ein unbeschriebenes Blatt
Standard

OffTopic:
Hattest du den Code zur $sum-Berechnung nicht aus diesem Forum? Ich erinner mich schwach an dieses Problem
Mit Zitat antworten
  #13 (permalink)  
Alt 02-04-2009, 02:58
ostems
 Registrierter Benutzer
Links : Onlinestatus : ostems ist offline
Registriert seit: May 2008
Beiträge: 44
ostems ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ja, schon
hat aber nie funktioniert.
bin gerade aber wieder dabei genau dises thema zu behandeln weil die kasse in den verkauf geht.
in meinem laden sind die preise 24 std. gebunden.
daher ist das auch bei unserer kasse kein problem.

aber gelöst hab ich es immer noch nicht.
leider
Mit Zitat antworten
  #14 (permalink)  
Alt 02-04-2009, 19:08
Blackgreetz
 PHP Junior
Links : Onlinestatus : Blackgreetz ist offline
Registriert seit: Oct 2005
Beiträge: 901
Blackgreetz ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das hat sich hier aber noch anders angehört

Falls es wirklich falsch ist, dann musste nochmal kurz warten, bis jmd. / ich Zeit dafür hat, sich das Script etc. nochmal anzugucken

btw: // Abfrage der Startzeit, Endzeit, Spielart, anzahl Personen und was schon gezahlt wurde
Diese Whileschleife kann man sich sparen und es in eine Zeile tun. Fiel mir gerade in den Blick. Du hast da sowieso nur 1 Ergebnis.

mfg
Mit Zitat antworten
  #15 (permalink)  
Alt 03-04-2009, 00:09
ostems
 Registrierter Benutzer
Links : Onlinestatus : ostems ist offline
Registriert seit: May 2008
Beiträge: 44
ostems ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@ Blackgreetz
Zitat:
Das ha sich aber anders angehört.
ich hatte es nur getestet mit den einzelnen zeitabschnitten.
und wenn du keine zeit hast oder lust...
musst du es nicht tun.
ich hatte h3ll darum gebeten, weil das script auch von ihm ist.

ich werd indessen weiter versuchen es selbst zu lösen...


Meimst du so?

PHP-Code:
$abfrage mysql_query("SELECT  zeit1, zeit2  FROM abr WHERE id= '$id'");
$rowsmysql_fetch_array($abfrage);
        
$time1=$rows['zeit1'];
        
$time2=$rows['zeit2']; 
Ergebnis ist das gleiche

Geändert von ostems (03-04-2009 um 00:35 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:00 Uhr.