kostenloser Webspace werbefrei: lima-city


Suche auf lima-city

  • in: Notebook für Hackintosh

    geschrieben von sincer

    Hey ;)
    chromecraft schrieb:
    Ich suche einen Laptop auf dem ich Hackintosh installieren kann.
    Chrome

    Ich habe ein Frage an dich: Wenn du dir sowieso ein neues Gerät kaufen willst, warum nimmst du dir dann nicht gleich ein günstiges (eventuell gebrauchtes) MacBook?
    Auf eBay findest du sicher ein gebrauchstes MacBook für ~500 €.
    // EDIT: Und bei einem gebrauchten MacBook sollte das OS ja schon drauf sein, also kostet das dann nichts extra.

    Wäre mein Tipp für dich ;)

    lg
    Sincer
  • in: Themenfindung Facharbeit

    geschrieben von sincer

    Hey ;)
    mermadalis schrieb:
    Ich werde demnächst wohl eine Facharbeit über Sicherheitsprinzipien im Internet schreiben. Insbesondere möchte ich dabei auf Angriffsmethoden (SQL-Injection, XSS und Co.) und deren Abwehrmethoden beziehen. Obwohl ich diesen Rahmen gefunden habe, bin ich mir noch nicht darüber im Klaren, welche Themen konkret ich dabei berücksichtigen soll.

    Cooles Thema. Ich nehme an, du willst nicht sehr in die Tiefe gehen, also lieber einen Überblick über das Thema geben, und benötigst deswegen viele Themen, denn alleine über SQL Injections kann man Bücher schreiben...

    Es ist sicher ein guter Ansatz, wenn man sich mit IT-Security auseinander setzen will, mit den Angriffsmethoden anzufangen, von denen du ja 2 genannt hast. Davon gibt es natürlich auch mehr, von denen manche heute vielleicht nur mehr in historischer Sicht interessant sind (wie z.B. den "../" Pfad, um in geschützte Verzeichnisse eines Webservers zu kommen).
    Andere Angriffsmöglichkeiten findest du z.B. noch im Diebstahl von Sessions oder dem Diebstahl bzw. der Manipulation von Cookies.

    Du könntest weiters auf die Schutzmaßnahmen (sei es jetzt vorsorgend, oder nachträgliche Schadensbegrenzung) eingehen.

    Schadenbegrenzung wären z.B. Backups.
    Viele finden das vielleicht nicht so spannend, aber es gibt Strategien, um Backups zu erstellen, und sinnvoll zu verwalten bzw. zu schützen, denn auch das Backup selbst kann zur Sicherheitslücke (Stichwort "Diebstahl von Daten") werden...

    Vorsorgend sind u.a. Verschlüsselungen.
    Gerade im Internet spielen Verschlüsselungen eine große Rolle.
    Angefangen bei SSL (z.B. https), (a-)symmetrische Verschlüsselungsverfahren zum Kommunizieren mit Webservern, Zertifikate (Stichwort "Web of Trust"), Hashverfahren zum Speichern von Passwörtern, über PGP / GPG für Emails... Ist teilweise das gleiche, und hängt auf jeden Fall zusammen.

    Das ist jetzt nur eine Zusammenfassung von dem, was mir auf die Schnelle eingefallen ist. Zum Googlen sollte es für's Erste auf jeden Fall genug Stoff sein.

    lg
    Sincer
  • in: div automatisch eine id zuweisen // Javascript

    geschrieben von sincer

    Hey ;)

    Ich bin kein JS-Experte, aber ich denke, ich kann dir ein bisschen weiter helfen :)

    Was du benötigst um alle Tags (z.B. alle Divs) durch zu iterieren ist getElementsByTagName().
    Diese Methode kannst du entweder direkt auf das document Object anweden (returnt alle Elemente vom Typ Div), oder an einen Node im HTML (returnt alle Sub-Elemente vom Ausgewählten Tag vom Typ Div).

    Das könnte dann (wie man es hier findet) so aussehen:
    var divs = document.getElementById("id").getElementsByTagName("div");
    for (var i=0; i < divs.length; i++) {
       divs[i].id = "DeineNeueIdPlusNummerierung" + i;
    }

    (Und wie gesagt... Wenn du das ".getElementById("id") weglässt, bekommst du alle Tags vom Typ Div.)
    Innerhalb der Schleife werden nun alle IDs der gefundenen Divs auf DeineNeueIdPlusNummerierung# (wobei # der aktuelle Iterations-Anzahl ist) geändert...

    Das ganze ist ungetestet, aber es sollte funktionieren ;)

    lg
    Sincer
  • in: vertikal zentrieren?

    geschrieben von sincer

    Hey ;)
    zun schrieb:
    das mit dem p-tag und span scheint, wie bei deinem Link, nur zu funktionieren, wenn in einer zeile unterschiedlich große texte sind.

    Da hast du vermutlich recht. Bilde mir ein, dass ich es schon einmal irgendwie hin bekommen habe... Konnte das auf jeden Fall jetzt auf die Schnelle nicht wieder rekonstruieren :/

    Naja, du kommst vermutlich nicht um das Table Layout herum, auch wenn's nicht schön ist.
    Aber wie heißt's so schön: Zuerst mal schauen, dass es läuft, und dann optimieren ;)

    lg
    Sincer
  • in: Welches Office benutzt ihr?

    geschrieben von sincer

    Hey ;)

    drafed-map schrieb:
    midgard-craft schrieb:
    bittet fast alle Funktionen wie das von Microsoft bloss ein bisl verstekt
    Also bitte. Versteckt? Du musst dich nur von der Anordnung, die man sich merken musste, lösen, und einfach beginnen, logisch zu denken.

    Als ich das gelesen habe, musste ich lachen :D
    Ich habe letztes Semester einen kleinen Bericht zum Thema "Software-Testen - Vergleichstest zwischen MS Office und OpenOffice" geschrieben.
    Unter anderem ging es in meinem Test dann auch darum, in welcher Office Suite man welche Funktionalitäten (die man jetzt nicht Tag-Täglich verwendet -> z.B. Fußnoten einfügen) leichter und / oder schneller findet. (Jetzt sollte ich dazu sagen, dass ich ein MS Office 2007 User bin... ^^) Ich war echt überrascht, dass ich die meisten Funktionen in OpenOffice schneller bzw intuitiver gefunden habe.

    Usability wird (zum Glück) ein immer wichtigeres Thema, und MS hat 2007 mit der Multifunktionsleiste einen interessanten Schritt gewagt. Man muss es nicht in den Himmel loben, aber man muss es auch nicht verurteilen :P
  • in: vertikal zentrieren?

    geschrieben von sincer

    Hey ;)

    zun schrieb:
    und mit vertikal-align funktionierts irgendwie nicht...


    vertical-align funktioniert schon. Nur muss man wissen WIE.
    Auf der Seite findest du auch eine Demo.
    Als aufmerksamer Beobachter fällt dir auf, dass du z.B. innerhalb eines <p> Tags die <span> Elemente Vertikal zentrieren kannst ;)
    (Diese Elemente können eine dynamische Höhe haben.)

    Wenn dir das nicht gefällt, oder es aus welchem Grund auch immer bei dir nicht funktionieren sollte, gäbe es noch eine alternative mit CSS3, die aber leider noch nicht von allen Browsern unterstützt wird.

    Wenn dir das auch nicht passt, kannst du dir noch ansehen, wie man das mit JavaScript macht. Ich habe das jetzt nicht probiert und würde dir auch nicht dazu raten, aber das ist nur meine ganz persönliche Ansicht. Verschweigen will ich es dir deswegen nicht.

    Hoffe, das hilft dir weiter ;)

    lg
    Sincer
  • in: Spieler Scene - Who is Who

    geschrieben von sincer

    Hey ;)

    Danke für die Infos und Links.
    Das geht schon in die Richtung, in die ich wollte. Vor allem der Link zur ESL :)

    syberpsace schrieb:
    Was willst du in der Gamer-Szene, wenn du nicht gamen willst? Viele dinge in der Community verstehst du nur schwer, wenn du nicht selbst Spielst. Du gehst ja auch nicht in einen Briefmarkensammlerverein, wenn du mit den Marken absolut nichts am Hut hast.

    Du hast natürlich recht. Ich habe mich da vorhin schlecht ausgedrückt... Der Satz "Ich habe nicht vor Profi-Spieler zu werden", trifft es wohl eher... Das heißt aber nicht, dass ich nicht auch zum einen oder anderen Spiel greife, um es selbst zu spielen xD

    Ich will einfach einen guten Einstieg in das Thema finden, einen Eindruck was läuft, sowie die Möglichkeit hin und wieder mitreden zu können, und da ist Recherche (und freundliche Limeaner fragen) sicher ein guter Weg... :)

    Das es keine Spieler gibt, überrascht mich nun ein wenig...
    Ich dachte immer, eGaming ist ein Sport, und beim Fussball kennt man die Spieler im Allgemeinen doch auch.

    Bin weiterhin dankbar für Infos :)

    thx
    Sincer
  • in: Spieler Scene - Who is Who

    geschrieben von sincer

    Hey ;)

    Ich würde gerne ein wenig in die Spieler Scene hinein schnuppern. Ich kenne mich mit eGaming nicht soo gut aus, weiß aber, dass es Contests oder ähnliches gibt, bei denen Spieler gegeneinander antreten, etc.

    Mich würde interessieren:
    - was man dabei unbedingt wissen und beachten sollte,
    - wer die Personen sind, die die Scene representieren (Top Gamer, Verantstaltert, etc.),
    - was es für Competitions, o.ä. gibt,
    - und Links zu interessanten Seiten / Blogs / Foren, und ähnlichem.

    Gibt es hier Gamer, die sich auskennen, und mir den Einstieg erleichtern können? (Und nein, es geht nicht darum, dass ich als Spieler in die Scene einsteigen möchte xD )

    Bin für jede Info, jeden Tipp und Link dankbar :)

    lg
    Sincer
  • in: vor strip_tags() Leerzeichen zwischen alle TAGs hinzufügen

    geschrieben von sincer

    Hey ;)
    osuche schrieb:
    man beachte die Leerzeichen bei Mit Regexp

    Nur zu den Leerzeichen... :)
    $rspaced = trim(preg_replace('/ {2,99}/', ' ', $rspaced));

    Wenn du in den geschwungenen Klammern {2,} schreibst, geht es von 2 bis unendlich. Denn was ist, wenn du (zugegeben unrealtisitscher Weise) mehr als 99 Leerzeichen hast... Dann bleiben die einfach drinnen...
    Eine Alternative wäre auch das "+", das angibt, dass es mindestens 1 sein soll... "Ab mindestens einem Leerzeichen ersetze es durch genau ein Leerzeichen. (Ist aber vermutlich nicht so performant...)
    Daher empfehle ich:
    $rspaced = trim(preg_replace('/ {2,}/', ' ', $rspaced));


    Ansonsten ist es eine nette Lösung ;)

    lg
    Sincer
  • in: index out of Range exception

    geschrieben von sincer

    Hey ;)

    Ich kann Basic nicht, aber den Code kann ich ein wenig nachvollziehen.

    Eine Exception ist ein Runtime Error. D.h. dein Code ist grundsätzlich korrekt, aber zur Laufzeit passiert ein Fehler, den der Compiler nicht vorhersehen kann.
    Die besten Beispiele sind Division by zero,
    // Wenn c z.B. durch einen impliziten cast auf 0 gesetzt wird, sieht man das im Code nicht gleich...
    a = b / c; // wenn c == 0 -> Error / Exception.

    oder eben eine Index out of Range Exception. (Es gibt noch viele mehr, bzw. kann man sich (vermutlich auch in Basic) eigene Basteln.)

    In deinem Fall heißt das einfach, dass es im Array strDomain auf Stelle 1 keinen Eintrag gibt.
    Normalerweise entstehen diese Fehler, wenn du als Index eine Variable stehen hast, die irgendwann zu groß wird.
    In diesem Konkretem Fall gehe ich davon aus, dass etwas beim Input nicht stimmt, denn der Index ist ja immer 1.

    Ich könnte mir vorstellen, dass du eine URL bekommst, in der "https://www..." steht.
    In dem Fall scheitert der Befehl Split(s, "http://"); bzw. gibt dir ein leeres Array zurück, etc.
    Wenn du nun auf die Stelle 1 zugreifst, kracht es. (Ist aber nur meine Vermutung. Habe noch nie mit Basic gearbeitet...)

    Mein Tipp:
    Lass dir in jedem Durchgang deiner For-Each den String ausgeben, und nach dem Split das komplette Array, dass du erhältst. Dann solltest du sehen, woran es liegt.

    Liebe Grüße,
    Sincer
  • in: Text ohne Abstand zum Seitenrand (top) ausrichten

    geschrieben von sincer

    Hey ;)

    Aus deiner Beschreibung werde ich nicht ganz schlau, aber mein Tipp wäre, dich mit margin und padding vertraut zu machen...

    Du kannst dem <body> Tag margin:0; zuweisen, sodass kein Abstand zwischen deinem ersten Element und dem Browser-Rand entsteht.

    CSS:
    body {
      margin: 0;
    }


    Hoffe, dass ich deine Frage richtig interpretiert habe xD

    lg
    Sincer
  • in: Lightbox & Slinky Slider verwenden

    geschrieben von sincer

    Hey ;)

    Mit den vorhandenen Informationen kann ich dir nur bedingt weiter helfen, aber einen Tipp habe ich für dich:
    Und in den Body kann ich ja auch schlecht 2 onloads einbauen.

    Das nicht, aber du kannst 2 Funktionen aufrufen...
    <body onload="startSlider(); startLightbox();">

    Alternativ kannst du auch eine Initialisierungs Funktion haben, in der du alles initialisiert, und die du im onload vom body-Tag aufrufst. Das führt meistens dazu, dass man den Code besser lesen kann und eventuelle Fehler schneller findet.
    <script>
    function init() {
      // Initialize everything you need:
      startSlider();
      startLightbox();
    }
    </script>
    
    <body onload="init();">


    Hoffe, das hilft dir weiter,
    Sincer
  • in: Ladezeit der Bilder verringern

    geschrieben von sincer

    Hey ;)

    Du kannst dir ansehen, wie man mit Sprites arbeitet.
    D.h. kurz gesagt, dass du eine große Grafik lädst, die alle (kleineren) Grafiken beinhaltet, und sie mit CSS entsprechend positionierst.

    Der Vorteil dieser Methode ist, dass du beim Laden der Grafiken nicht mehr all zu viel HTTP-Overhead hast, und die Grafik dadurch schneller geladen ist.
    Der Nachteil, den ich dir nicht verschweigen will, ist, dass du dir diesen Sprite erst mal erstellen muss (also überlegen musst, wo du was positionierst) und dich dann mit dem CSS spielen darfst... (Aber das ist nur ein Einmal-Aufwand.)

    Google wendet diese Technik auch an.
    -> Google.at -> irgendetwas suchen...
    -> Ganz hinunter scrollen
    -> Rechtsklick auf das G von "Gooooooooooogle" -> Hintergrundgrafik ansehen...
    -> http://www.google.at/images/nav_logo91.png

    Und wenn du dir dann den Style von dem Element ansiehst, merkst du, dass sie mit dem CSS Attribut "background-position" arbeiten.

    Den Rest, wie das ganze genau funktioniert, findest du sicher selbst heraus ;)

    lg
    Sincer
  • in: array_push() und Mehrdimensionales Array

    geschrieben von sincer

    volnerius schrieb:
    Erstmal danke für die Antwort :)

    Gerne ;)
    volnerius schrieb:
    Wie macht man es dann? Wenn schon denn schon...

    Das kommt ganz darauf an, was du machen willst ^^

    Mit "macht man in der Regel nicht so" meinte ich, dass man das Array selten hardcoded auflistet und füllt. Oft erledigt man diesen Vorgang in einer verschachtelten Schleife... zB:

    // Ein 2D Array erzeugen, dass das kleine 1*1 beinhaltet:
    $array = array();
    for($i = 1; $i <= 10; $i++) {
      $array[$i] = array();
      for($j = 1; $j <= 10; $j++) {
        $array[$i][$j] = $i * $j;
      }
    }
    
    // Aus dem Array erfahren, was 7*8 ergibt:
    echo '7 * 8 = '.$array[7][8];


    Das ist jetzt ein wenig sinnhaftes Beispiel für die Verwendung eines 2D Arrays, aber es zeigt, wie man es in einer Schleife füllen könnte.
    Praxisnaher wäre z.B. Das Auslesen einer XML Datei, für die du ein mehrdimensionales Array verwenden könntest, um die Daten zu speichern und zu verwalten.

    Wenn du mir sagst, was du genau machen willst, kann ich oder ein anderer dir eventuell einen spezifischeren Tipp geben ;)

    lg
    Sincer
  • in: array_push() und Mehrdimensionales Array

    geschrieben von sincer

    Hey ;)

    Probiers mal mit 4 eckigen Klammern -> [ ][ ]

    $array2d = array();
    $array2d[0] = array();
    $array2d[0][0] = "value.0.0";
    $array2d[0][1] = "value.0.1";
    $array2d[0][2] = "value.0.2";
    $array2d[1] = array();
    $array2d[1][0] = "value.1.0";
    $array2d[1][1] = "value.1.1";
    $array2d[1][2] = "value.1.2";
    // usw...


    So macht man das in der Regel nicht, aber zur Erklärung sollte es gut sein ;)
    Meistens wendet man diese Methode in ein Schleife an, in der man das Array dann mit den gewünschten Daten füllt.

    lg
    Sincer
  • in: php sql problem

    geschrieben von sincer

    Hey ;)

    Kurz um: Dein Problem ist ein SQL Syntaxproblem. Es fehlen die Kommas (,) zwischen den Werten.
    Siehe -> http://www.w3schools.com/php/php_mysql_update.asp
    UPDATE table_name
    SET column1=value, column2=value2,...
    WHERE some_column=some_value


    Tipp #1:
    Die Fehlermeldung sagt so etwas wie: "Dein Problem beginnt irgendwo bei 'month='8' ..." Das ist ein Hinweis dafür, dass davor alles passt. nach day="" benötigst du also ein Komma.

    Tipp #2:
    Mach in deine Zeile des SQL-Befehls Zeilenumbrüche. Das macht es nicht nur übersichtlicher für dich beim Programmieren, sondern die Fehlermeldung gibt dir dann auch an, in welcher Zeile der Fehler genau ist. "at line 1" in deinem Fall bringt dir gar nichts. Wenn du dein Statement mit Zeilenumbrüche schön in Abschnitte unterteilst, kann das sehr hilfreich sein.

    Tipp #3:
    Du arbeitest mit mysqli. Warum verwendest du (aus Sicherheitsgründen) nicht gleich Prepared Statements? Anleitungen wie das geht findest du wie Sand am Meer ;)
    In deinem Fall kann man leicht eine SQL Injection einfügen.

    Auch auf der PHP.net Seite wird darauf hingewiesen:
    http://php.net/manual/en/mysqli.query.php
    mixed mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )
    (...)
    Parameter: query
    The query string.
    Data inside the query should be properly escaped.


    Also wenn du keine Prepared Statements verwenden willst, solltest du zumindest die POST-Parameter ordentlich escapen.

    lg
    Sincer
  • in: Homepage hintergrund fade

    geschrieben von sincer

    Hey ;)

    Das was du beschreibst, geht ziemlich sicher. Ist nur die Frage, ob du das dann auch wirklich willst. Eine Hintergrund-Grafik sollte eigentlich nichts sein, was extra lange laden muss.
    Mein Tipp ist: Schraube die Qualität deines Hintergrundbilds runter. Damit wird die Datei leichter und ist somit schneller geladen.

    Falls du dich aber nicht von deinem Lade-Fade-Effekt abbringen lassen willst habe ich auch einen Tipp:
    Sieh die die JavaScript-Bibliothek "jQuery" an. Damit ersparst du dir eine Menge Arbeit, was den Fade-Effekt angeht. (Wobei der jetzt in JS auch nicht soo kompliziert wäre.)

    Ich will dir den Spaß am Googlen und herum probieren nicht nehmen, aber so als Leitfaden kannst (musst natürlich nicht) du dich an folgende Eckpfeiler halten:
    Mit dem JS Objekt "Image" kannst du dir ein Bild (deine schwere Hintergrundgrafik) laden.
    Mit dem Image Attribut "complete" kannst du abfragen, ob das Bild schon geladen ist, oder nicht. (Ich weiß jetzt nicht, ob man da ein Event drauf ansetzen kann, oder ob du z.B. alle 500 MS abfragen musst, ob das Bild schon geladen ist... Vermutlich zweiteres, so gut kenne ich mich mit JS nicht aus ^^)
    Mit dem jQuery-Befehl fadeOut() / fadeIn() kannst du deine Lade-Grafik ausfaden, und dein Vorgeladenes Hintergrundbild einfaden lassen.

    Ich hoffe, dass dir das weiterhilft :)
    Sincer
  • in: Zwei class bezeichnungen mit php setzen

    geschrieben von sincer

    Hey ;)

    Du kannst die Priorität deiner css class über die Reihenfolge festlegen. Das Attribut, dass später im css File steht, überschreibt den Wert eines früher notierten Attributs.

    Ein bisschen Pseudo-Code zur Veranschaulichung:
    // .css File:
    .classA { text-decoration: underline; }
    .classB { text-decoration: none; }
    
    // .html File:
    <a href="#" class="classA classB">Link</a>


    In dem Fall wird der Link nicht unterstrichen sein, da der das Attribut "text-decoration" mit dem Wert "none" überschrieben wird. Würde ich im Beispiel classA und classB von der Reihenfolge vertauschen, wäre der Link unterstrichen.

    lg
    Sincer

    PS: Sei bitte etwas vorsichtiger mit der Wahl des Formus, in dem du schreibst. Wenn du im PHP Forum von Klassen sprichst, das Thema aber in Wahrheit auf CSS abzielt, ist das recht verwirrend...
  • in: PHP Upload bricht ab mit HTTP 414 Error Code

    geschrieben von sincer

    Hey ;)

    Kann es sein, dass das Problem nicht die Größe der Datei, sondern die ausführende Zeit des Upload-Scripts ist?

    <?php
    // php.ini: Set the maximum execution time for this script to 24 hours. (Better than 0 = inifinity)
    ini_set('max_execution_time', 86400); // 60*60*24 = 86400
    ?>


    Bzw. kannst du es ja gleich in der php.ini ändern.
    Ich weiß nicht, ob max_execution_time die einzige Zeiteinstellung ist, aber es ist mal einen Versuch wert ;)

    lg
    Sincer
  • in: Upload Progress Bar (ohne APC oder Flash)

    geschrieben von sincer

    simuliertes schrieb:
    http://www.ajaxf1.com/tutorial/ajax-file-upload-tutorial.html


    Hey ;)

    Danke. Das ist zwar nicht, was ich suche, denn es zeigt nicht den Upload-Fortschritt an, sondern nur einen Endlos-Ladebalken, aber es ist eine gute Alternative :)

    Ich werde es so ähnlich implementieren, bis ich was besseres finde, denn es ist ein guter Kompromiss, mit dem ich durchaus leben kann :D

    Vielen Dank ;)
    Sincer
  • in: Upload Progress Bar (ohne APC oder Flash)

    geschrieben von sincer

    Hey ;)

    Da mein letzter Versuch, eine Upload Progress Bar (mit dem APC Paket) nicht 100% geglückt ist, wollte ich jetzt Fragen, ob mir jemand sagen kann, wie ich eine Upload Progress Bar mit anderen Mitteln realisieren kann.

    2 Bedingungen muss diese Uploadbar allerdings erfüllen:
    - Sie muss ohne dem APC und ohne Flash auskommen.
    - Sie muss halbwegs einfach zu implementieren sein.

    Hat jemand so etwas schon mal erfolgreich gemacht?
    Kennt jemand Tutorials / Dokumentationen für so etwas?

    Bin dankbar für alle Tipps :)

    lg
    Sincer
  • in: apc_fetch() returns false in Safari, Chrome & Opera

    geschrieben von sincer

    nikic schrieb:
    Seit 5.4 hat PHP eingebauten Upload Progress Support, vielleicht möchtest du das mal testen.


    Danke für den Tipp :)
    Leider ist die aktuelle Version noch eine Alpha, die ich für ein Live-System nicht verwenden kann...
    Aber das ist auf jeden Fall gut zu wissen.

    lg
    Sincer
  • in: apc_fetch() returns false in Safari, Chrome & Opera

    geschrieben von sincer

    trueweb schrieb:
    Ich würde erst mal alle header()-Angaben entfernen und dann überprüfen, ob es bei allen Browsern funktioniert. Sollte dem so sein, kannst du nach und nach die verschiedenen Angaben durchtesten.


    Hey ;)

    danke für den Tipp, aber er hat leider nicht funktioniert.
    Ich habe alle header() Angaben entfernt und in meinem JS Code (dort, wo der AJAX request an die gepostete PHP Seite im 750MS-Takt abgesendet wird) ein t=<timestamp> hinzugefügt.
    Der Code funktioniert nach wie vor nur im FireFox und im Internet Explorer 9. In allen anderen genannten liefert mir die gepostete PHP Datei false (anstatt eines JSON Strings) zurück, und funktioniert damit nicht.

    Ich habe jetzt noch den Tipp von der php.net Seite über apc_fetch beherzigt
    Anyone who has enabled apc.rfc1867 for a file upload progress bar. Please note that if you are not getting any results back or a Null() data set. Then set apc.rfc1867_freq to 10k or 100k or whatever you see fit like this.

    und
    apc.rfc1867_freq = 100k

    in die PHP.ini eingefügt. Das hat auch nichts gebracht.

    Hast du noch einen Vorschlag?
    Alles, was ich über Google finde sind Probleme (und Lösungen), dich ich größtenteils selbst schon hatte und gelöst habe, um die Statusbar grundsätzlich zum Laufen zu bekommen, aber nichts Browserspezifisches, wie es bei mir der Fall ist :/

    Liebe Grüße,
    Sincer
  • in: apc_fetch() returns false in Safari, Chrome & Opera

    geschrieben von sincer

    Hey ;)

    Ich hoffe, dass jemand von euch Erfahrung mit dem APC Paket hat.
    Habe mich relativ lange durch Tutorials und Demo-Codes gewühlt und eine Status-Uploadbar zum laufen bekommen.

    Die (AJAX) PHP File, die mir den Status einer hochzuladenen Datei ausgibt sieht bei mir so aus:
    <?php
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // disable IE caching
    header("Last-Modified:" . gmdate("D, d M Y H:i:s") . " GMT" );
    header("Cache-Control: no-cache, must-revalidate");
    header("Pragma: no-cache");
    
    if (@$_GET['uid']) {
    	echo json_encode(apc_fetch("upload_{$_GET['uid']}"));
    	exit();
    }
    ?>


    Diese Code liefert mit im FireFox und im IE9 einen JSON String zurück, den ich parsen kann, um den Status des Uploads zu berechnen und anzuzeigen.
    Im Safari, Chrome, und Opera liefert mir der gleiche PHP Code nur "false" zurück. Der ganze Uploadvorgang funktioniert dadurch nicht.
    Ich habe mir das etwas genauer angesehen und bemerkt, dass apc_fetch() gar nichts zurückliefert, und json_encode() von einem leerString einfach false zurück liefert...

    Hat jemand Erfahrung damit?
    Wie kann ich das Problem beheben?
    Wie kann es sein, dass PHP Code Browserabhängig funktioniert? Warum gehts im einen Browser perfekt, und im anderen überhaupt nicht?

    Liebe Grüße vom verwirrten und etwas verzweifelten
    Sincer
  • in: Session-Variablen werden vergessen

    geschrieben von sincer

    Hey ;)

    Vom Code her hätte ich gesagt, dass dieser korrekt ist.
    Ich kann also nur raten, um dir zu helfen:

    Die Session-Names sind Case Sensitive.
    Also $_SESSION['zufall'] != $_SESSION['Zufall'] (großes / kleines Z, etc.)

    Hast du schon versucht, dir die Session auf Seite A.php auch ausgeben zu lassen?
    Also nicht die SessionID, sondern den Session-Inhalt von "zufall"?

    Lässt du die Sessions irgendwo zwischen A.php und B.php unsetten oder ganz löschen?

    lg
    Sincer
  • in: XML Parser liefert bei Umlaut nicht kompletten String

    geschrieben von sincer

    Hey ;)

    Danke für deine Hilfe :)
    Die UTF-8 Konvertierung der Datei hat mir die Sonderzeichen aus dem Weg geräumt.

    Der schwierige Fehler lag in einem Teil des Codes, der in dem geposteten Ausschnitt gar nicht zu sehen war: Dem Parsen selbst.

    http://www.php.net/manual/de/function.xml-set-character-data-handler.php:
    Character data handler is called for every piece of a text in the XML document. It can be called multiple times inside each fragment (e.g. for non-ASCII strings).


    Ich habe in meiner Funktion immer nur so etwas:
    function contents($parser, $data) {
      if(...)
        $inhalt = $data;
      // Do something...
    }


    Laut der definition kann $data aber auch nur einen Teil des Inhalts eines Elements haben, und so muss man den String selbst zusammen basteln.

    Richtig ist also:
    function contents($parser, $data) {
      if(...)
        $inhalt .= $data;
      // Do something...
    }


    Sprich .= (statt nur = ) um den String zusammen zu setzen.

    Das habe ich nicht gewusst.
    Das Problem ist also gelöst :)

    Danke,
    Sincer
  • in: XML Parser liefert bei Umlaut nicht kompletten String

    geschrieben von sincer

    Hey ;)

    hemiolos schrieb: (sollen wir das alles NOCHMALS aufzählen, was ALLES ist?)


    Also ich habe jetzt mal die Kodierung der PHP Datei selbst von ANSI auf UTF-8 gestellt.
    Jetzt werden mir keine kryptischen Zeichen mehr angezeigt. Der String mit einem Umlaut wird aber dennoch abgeschnitten.

    Das utf8_decode() habe ich nun weg genommen.

    Hast du noch einen Tipp für mich?

    lg
    Sincer
  • in: XML Parser liefert bei Umlaut nicht kompletten String

    geschrieben von sincer

    Hey ;)

    Ich habe ein kleines Problem mit meinem XML Parser...

    Grundsätzlich habe ich alles hin bekommen, wie ich es will, allerdings bekomme ich bei einem Umlaut als Inhalt eines Elements nur alles von dem Umlaut weg.

    z.B. <element>Geräte</element>
    Nach dem parsen -> Inhalt von element: "äte"

    Wenn ich die Details weg lasse, sieht mein PHP Code so aus:
    (...)
    function contents($parser, $data) {
      $inhalt =utf8_decode($data);
      echo $inhalt;
    }
    (...)
    $xml_parser = xml_parser_create();
    xml_set_element_handler($xml_parser, "startTag", "endTag");
    xml_set_character_data_handler($xml_parser, "contents");
    xml_parse($xml_parser, $xml, true);


    Der Code für's parsen an sich ist denke ich uninteressant. Wenn ich mit die Daten ausgeben lassen will, bekomme ich bei Worten mit Umlaut halt nur alles ab (und inklusive) dem Umlaut.
    utf8_decode() verwende ich nur, damit ich keine komischen Zeichen, sondern richtige Umlaute bekomme.

    Kann mir jemand sagen, warum ich nicht das vollständige Wort erhalte?
    Bzw. wie ich das vollständige Wort erhalte?

    // EDIT:
    Habe bemerkt, dass das utf8_decode() sehr wohl einen Einfluss hat.
    Es ändert mir zwar das komische Zeichen in einen Umlaut um, schneidet den Rest des Strings aber ab.

    Ich habe bei StackOverflow jemanden gefunden, der genau das gleiche Problem hat. Ihm wurde nicht geholfen, und ich habe es ebenfalls probiert. Die dort genannten Tipps funktionieren nicht (bzw. ich habe es nicht zusammengebracht.), aber vielleicht hat ja jemand von euch damit Erfahrung?!
    Link: http://stackoverflow.com/questions/4278071/utf8-decode-returns-only-a-part-of-the-encoded-string

    Danke im voraus,
    Sincer
  • in: MySQLi - Escapen von Parametern bei Prepared Statements

    geschrieben von sincer

    Alles klar, danke ;)

    Dann war ich eh richtig informiert... Wollte nur eine Bestätigung :)
    Ist ja voll irritierend, wenn's in machen Tutorials bei Prepared Statements trotzdem gemacht wird...

    Thx
    Sincer
  • in: MySQLi - Escapen von Parametern bei Prepared Statements

    geschrieben von sincer

    Hey ;)

    ggamee schrieb:
    In der Tat, es sollten alle slashes die hinzugefügt wurden irgendwo entfernt werden.
    (...)
    Außerdem sind prepared statements in sowas absolut sicher, da der SQL code beim Preparen quasi bereits compiliert wird, und nur mit variablen ergänzt wird. Du fügst nurnoch Werte in die Variablen ein mittels dem bind_param. Daher können die Zeichen nicht als zur Anfrage gehörend manipulierend wirken, sondern nur als Variable, was sie auch sind.


    Also wie jetzt?
    Sind Prepared Statements absolut sicher, oder muss ich Usereingaben auf jeden Fall escapen? (Und wenn ja warum?)

    lg
    Sincer
  • in: MySQLi - Escapen von Parametern bei Prepared Statements

    geschrieben von sincer

    Hey ;)

    Ich beschäftige mich zur Zeit mit MySQLi und habe nun eine Frage, die ihr mir hoffentlich beantworten könnt.

    Meines Wissens ist es so, dass wenn man Prepared Statements verwendet (egal, welche Sprache / Datenbank), kein Escapen der Parameter mehr nötig ist, da die Parameter als eigenes Objekt angesehen werden, und nicht Bestandteil der eigentlichen Query sind.

    Nun sehe ich in Tutorials aber immer wieder bei Prepared Statements so etwas:

    z.B. von hier
    // Maskierende Slashes aus POST Array entfernen
    if (get_magic_quotes_gpc()) { $_POST = array_map( 'stripslashes', $_POST ); }
    $name    = $_POST['name'];
    $bereich = $_POST['bereich'];
    
    // ...
    
    $sql = 'INSERT INTO `moderatoren` (`name`, `bereich`) VALUES (?, ?)';
    $eintrag = $db->prepare( $sql );
    $eintrag->bind_param( 'ss', $name, $bereich );
    $eintrag->execute();

    Das verwirrt mich ein wenig. Sollte ich Parameter immer von Magic Characters befreien? Oder brauche ich das nur bei Insert-Statements? Oder ist es in dem Fall eigentlich eh unnötig?

    Ich hoffe, ihr könnt mir ein wenig Theorie-Nachhilfe geben :D

    lg
    Sincer
  • in: PHP-Parameter mit htaccess weiterleiten

    geschrieben von sincer

    Hey ;)

    Wenn der einzige Grund für diese htaccess Sache tatsächlich die Furcht vor SQL Injections via GET-Parameter ist, solltest du das anders verhindern.

    a) Verwende niemals $_GET direkt in einer SQL Anweisung, es sei denn, du hast das ganze Array vorher von Magic Characters befreit.
    b) Verwende parametrisierte SQL Statements.

    Erkundige dich mal zu diesen Themen, und wenn du dann noch Fragen dazu hast, kannst du ja weiter hier nach Hilfe suchen. Von der Sache mit .htaccess würde ich dir (für diesen Zweck) abraten.

    lg
    Sincer
  • in: Problem mit JS Aufklappmenü

    geschrieben von sincer

    Hey ;)

    toby-f schrieb:
    also ich möchte das so haben, dass man auf den link klicken muss damit sich das untermenü öffnet, weil ich direkt unter Bildergalerie auch nen eigenen Content haben möchte.
    (...)
    Hast du viell noch ne andere Idee?
    (Kann auch gerne eine PHP Lösung sein) <- wär mir sogar fast lieber.

    Ich bin mir jetzt nicht ganz sicher, was du willst, deswegen rate ich mal drauf los:

    Du hast geschrieben, dass das Submenü nur dann zu sehen sein soll, wenn man drauf klickt.
    Gleichzeitig willst du aber keine Links, die nach "#" führen, denn es soll sich der Content verändern.

    Wenn ich das richtig sehe, bist du bei JavaScript an der falschen Adresse und es wird dich freuen zu hören, dass die Lösung mit PHP umzusetzen ist ;)
    Nur um sicher zu gehen: Du willst keinen "Menü fährt von oben nach unten aus, und wird langsam sichtbar" Effekt, sondern, du willst, dass wenn man auf ein Menü klickt, bestimmte Submenü-Punkte sichtbar sind und sich der Content der Seite dem angeklickten Menüpunkt anpasst.

    z.B.
    Hauptmenü:
    Link1
    Link2
    Link3

    Ich klicke auf Link1:
    Link1
    - Sublink 1.1
    - Sublink 1.2
    Link2
    Link3

    Dazu verändert sich der Content der Seite.

    Wenn das stimmt, sieht die Lösung theoretisch so aus:
    Du lagerst dein komplettes Menü in eine eigene .php Datei aus, und inkludierst diese dann in jener Stelle, an der du es brauchst.
    Diese menu.php Datei macht dann nichts anderes, als eine if-else Kombination, die Abfragt, welche GET Parameter es gibt, und welches Menü eingeblendet werden soll.

    Code Beispiel:
    echo '<ul>';
    echo '<li class="mainMenu">Link 1</li>';
    if($_GET['page'] == "bildgallerie") {
      echo '
      <li class="SubMenu">Link 1.1</li>
      <li class="SubMenu">Link 1.2</li>
      ';
    }
    echo '<li class="mainMenu">Link 2</li>';
    else if($_GET['page'] == "whatever") {
      echo '
      <li class="SubMenu">Link 2.1</li>
      <li class="SubMenu">Link 2.2</li>
      ';
    }
    // usw
    echo '</ul>';

    Die echo Befehle mit den Submenüs werden nur dann ausgegeben, wenn ein entsprechender GET Parameter gefunden wurde. (Durch else-if sorgst du dafür, dass auch nur 1 Submenü zu sehen ist, und nicht z.B. 2 Submenüs von 2 verschiedenen Mainmenüs, wenn jemand die URL verändert.)

    Also in diesem Beispiel fehlen jetzt die ganzen <a> Tags, aber ich hoffe dass du verstehst, was ich meine ;)
    Und ich hoffe vor allem, dass es überhaupt das ist, was du suchst xD
    (Also kein Effekt (JS), sondern eine dynamische Darstellung (PHP))

    Ich bilde mir ein, dass man via CSS einstellen kann, wie weit eingerückt eine Listen-Element ist. Falls das nicht geht, musst du den HTML Teil anders regeln, aber der PHP Teil verändert sich nicht.

    Alles klar?

    lg
    Sincer
  • in: Problem mit JS Aufklappmenü

    geschrieben von sincer

    Hey ;)

    Du kannst dafür nicht das Event "onClick" verwenden, sondern musst "onMouseOver" nehmen.

    onClick setzt nämlich nicht nur das Menü auf "display:block;", sondern aktiviert auch den Link -> Seitenwechsel.
    onMouseOver reagiert, sobald sich die Maus über dem entsprechenden Menüeintrag befindet und macht damit das Menü sichtbar.

    Zusätzlich müsstest du noch onMouseOut verwenden, und eine entsprechende Funktion für "display:none;" aufrufen, damit das Menü auch wieder ausklappt.

    Verwende in Zukunft bitte [ code ] Tags, um den Code herum. Dann kann man das ganze etwas besser lesen.

    lg
    Sincer
  • in: Objective C

    geschrieben von sincer

    Hey ;)

    Ich kenne weder deine Erfahrungen mit Programmiersprachen, noch dein Ziel, aber vielleicht kann ich dir das eine oder andere verraten, wenn du mir ein bisschen Auskunft dazu gibst :D

    Generell gilt:
    Leg dir ein Buch zu, und tu es. (Lesen alleine bringt nichts.)
    Und schreib dich bei den entsprechenden Foren ein, die dir helfen können.

    Ob du C brauchst? Praktisch ist es schon, ja; Notwendig ist es nicht, Nein.
    Es ist zwar nett, da C ein Subset von Objective C ist, und du sicher einen guten Überblick über die Pointerarithmetik (Wann benötigt man nun ein Sternchen und wann nicht?!) hat, aber notwendig ist es nicht. Objective C ist ansonsten eine Sprache, die dir vieles einfacher macht, als C es kann. (Wobei sich bei der Speicherreservierung und Speicherverwaltung darüber streiten lässt, was da wo einfacher ist, aber da wirst du schon noch früh genug selbst drauf kommen :D )

    lg
    Sincer
  • in: [PHP] Frage zum relativen Pfad beim Includen.

    geschrieben von sincer

    Hey ;)

    // EDIT: Gelöst -> Ganz unten :)

    drafed-map schrieb:
    Nimm $_SERVER['SCRIPT_FILENAME'] und hacke den Dateinamen ab

    Danke für deine Mühe, aber das funktioniert leider nicht :(

    Wenn ich deinen Code in meine Klasse gebe, und den Pfad ausgeben lasse, denkt die Klasse, dass ihr Dateiname die aufrufende Datei wäre.

    Um im Gegebenen Beispiel zu bleiben:
    Ich gebe deinen Code in class.php (mit dem echo), und rufe im Browser datei.php auf (die class.php einbindet). Nun gibt mit das Echo (aus class.php) den Dateinamen von datei.php aus. (Also sofern ich das Limit bei explode() von -1 auf 0 setze.)

    Gibt es da noch eine andere Möglichkeit, das absolut, aber dynamisch zu gestalten?

    Danke auf jeden Fall :)
    Sincer

    // EDIT:
    Hab's schon :)
    Es geht mit __FILE__
    $parts = explode('/', __FILE__, $limit);

    Vielen Dank drafed-map :)
  • in: [PHP] Frage zum relativen Pfad beim Includen.

    geschrieben von sincer

    Hey ;)

    Ja danke, genau diesen Effekt habe ich gerade bemerkt.
    Aber ich sehe, dass ich mein Problem (den Fall mit class2.php) schlecht beschrieben habe...

    Ist jetzt ein blödes Beispiel von der Namensgebung, aber egal:
    Wenn sich jetzt in dem Verzeichnis "class" eine "user.php" befindet, die vom User direkt aufgerufen wird.
    "user.php" benötigt ebenfalls "class.php", die wiederum "config.php" benötigt.
    Nun stimmt der relative Pfad zur config.php nicht mehr, wenn man user.php aufruft.

    *Knoten in der Zunge hab* ^^

    Jetzt sollte die Problembeschreibung stimmen. Verstehst du, was ich meine?
    Nun muss ich ja mit absoluten Pfaden arbeiten, oder gibt es eine alternative?

    lg
    Sincer
  • in: [PHP] Variablen aus anderer Datei übernehmen.

    geschrieben von sincer

    Danke euch beiden für die rasche Antwort :)

    Ich habe es jetzt mal auf $GLOBALS['var'] umgeschrieben. Finde das recht sympathisch, da ich dann (in meinem Fall) auch gleich sehe, dass es sich um eine Konfigurations-Variable handelt.

    Ein Klassenkonstrukt wollte ich vermeiden.

    Thx
    Sincer
  • in: [PHP] Frage zum relativen Pfad beim Includen.

    geschrieben von sincer

    Hey ;)

    Ich habe eine Frage zu relativen Pfaden wenn man in PHP include, require, etc. verwendet.

    Ich habe eine Verzeichnisstruktur, die in etwa so aussieht:
    FILE datei.php
    
    DIR config
    - FILE config.php
    
    DIR class
    - FILE class.php
    - FILE class2.php

    Also im Hauptverzeichnis befindet sich eine Datei und zwei Unterverzeichnisse. In jedem Unterverzeichnis befinden sich weitere Dateien.

    Nun will ich in datei.php meine Klasse verwenden, und muss in dieser also class.php einbinden.
    require('./class/class.php');

    Die Klasse selbst benötigt etwas aus der config.php. Um diese einzubinden, muss ich in class.php nun folgendes schreiben:
    require('./config/config.php');


    Das funktioniert, kommt mir aber eigenartig vor. Ich include beide male mit "./" , da alles von der datei.php ausgeht.
    Ich hätte aber erwartet, dass ich in class.php die config.php mit "../" einbinden muss, da ich ja erst ein Verzeichnis hoch gehen muss, um dann in config zu landen.

    Soweit funktioniert der Code allerdings.

    Nur wenn ich nun aus class2.php die class.php benötige, funktioniert das nicht mehr, denn aus dem Unterverzeichnis stimmt der relative Pfad "./config.php" ja nicht mehr.

    Ich hoffe, ich konnte das Problem halbwegs deutlich darstellen.

    Meine Frage lautet nun:
    Geht so etwas überhaupt mit relativen Pfaden?
    Oder muss ich mit absoluten Pfaden arbeiten?

    lg
    Sincer
  • in: [PHP] Variablen aus anderer Datei übernehmen.

    geschrieben von sincer

    Hey ;)

    Ich versuche gerade von einer anderen (eingebundenen) PHP Datei die Variablen zu verwenden und scheitere kläglich. Google hilft auch nicht wirklich.

    Beispiel:
    Ich habe eine config.php
    <?php
    // MySQL Config:
    $mysql_server = "mysql.server.at";
    $mysql_user = "username";
    $mysql_password = "password";
    // ...usw
    ?>

    Und ich habe meine Database Klasse, in der ich eine Verbindung zur Datenbank verwalten will:
    <?php
    // Hier will ich mir meine Variablen aus der anderen Datei holen:
    require_once('./pfad/config.php');
    
    class Database {
    	private $conn;
    	
    	function __construct() {
    		// Hier will ich meine eingebundenen Variablen verwenden:
    		$this->conn = mysql_connect($mysql_server, $mysql_user, $mysql_password); // LINE x
    		mysql_select_db($mysql_database, $this->conn); // LINE y
    	}
    
    	public function close() {
    		mysql_close($this->conn);
    	}
    }
    
    ?>


    Die Seite gibt mir dann aber folgenden Fehler aus:
    Notice: Undefined variable: mysql_server in /home/public/rip/rip/class/Database.class.php on line x

    Notice: Undefined variable: mysql_user in /home/public/rip/rip/class/Database.class.php on line x

    Notice: Undefined variable: mysql_pass in /home/public/rip/rip/class/Database.class.php on line x

    Notice: Undefined variable: mysql_database in /home/public/rip/rip/class/Database.class.php on line y

    Wobei Zeile x und y die ersten sind, in der ich meine "$mysql_*" Variablen verwendet habe. (Sind auch im Code markiert. -> "// LINE x")

    Ich bilde mir ein, dass ich es schon einmal so gemacht habe, dass ich eine Config Datei eingebunden habe, und dann einfach auf die Variablen zugegriffen habe, aber nun bekomme ich es nicht mehr hin.

    Kann mir jemand sagen, wie das funktioniert?
    Wenn das nicht geht, müsste ich mir eine Klasse bauen, die mir immer den Wert einer verlangten Variable zurück gibt...

    Danke schon im voraus ;)
    Sincer
  • in: Spam Bot?

    geschrieben von sincer

    Hey ;)

    Soweit ich informiert bin, kannst du einen Bot nur via Captcha fernhalten.

    Vielleicht gibt es nach andere Gefinkeltheiten, IP Blocken, irgendwelche JavaScript Geschichten, etc., aber mit einem Captcha fährst du sicher am einfachsten.

    Du brauchst dieses ja nicht bei jedem Login abzufragen, sondern nur bei der Registrierung. Dafür sollte (meiner Meinung nach) jeder User Verständnis haben.

    lg
    Sincer
  • in: [PHP] Frage zur Serverbelastung meines Scripts.

    geschrieben von sincer

    fabo schrieb:
    $mine sollte $mime_type sein :)

    Oh... Danke, ist mir gar nicht aufgefallen. Komisch, dass meine Tests trotzdem funktioniert haben.

    *ausgebessert hab*

    thx
    Sincer
  • in: modulo % Rechnung und Zahlensysteme (Rechnen mit Rest)

    geschrieben von sincer

    Hey ;)

    Deine Frage kann ich dir direkt nicht beantworten, da ich nicht genau verstehe, was du willst aber vil. kann ich dir in einem anderen Punkt helfen.

    ich dachte mit dem Operator % bekomme ich den Rest-Wert der Division
    also habe ich dort 7512345 (ungerundet) erwartet
    ... es kommt aber gleich die Zahl umgerechnet in Minuten ?!?!


    Weder die eine, noch die andere Aussage ist richtig...

    abstand_restmin = ($abstand_min % 60); // --- Rechnen mit Rest

    Was auch immer das ergibt, es wird definitiv eine Zahl zwischen 0 und 59 sein.

    Ich glaube, du hast die Modulo-Rechnung nicht ganz verstanden. Ich erkläre es dir mal mit niedrigen Zahlen:
    5 % 3 = 2.
    Warum?
    Weil 5 / 3 genau einmal teilbar ist, und dann 2 Rest hat.
    8 % 3 = 2.
    Warum?
    Weil 8 / 3 genau zwei mal teilbar ist, und dann 2 Rest hat.

    In PseudoCode sieht der Modulo-Algorithmus (für positive Zahlen) so aus:
    int modulo(int value, int mod) {
      while(value >= mod) {
        value -= mod; // Ziehe von value mod ab.
      }
    
      return value; // Liefert eine Zahl zwischen 0 und mod-1 zurück, falls value bei Funktionsaufruf > 0 war.
    }


    Ich hoffe du verstehst nun etwas besser, was Modulo macht.
    Restwert != Restliche Zeit berechnen.

    lg
    Sincer
  • in: [PHP] Frage zur Serverbelastung meines Scripts.

    geschrieben von sincer

    Danke, ist übernommen :)

    Ursprünglich hatte ich die header() Befehle immer ganz oben, aber da dann die header() Abhängig von diversen Variablen wurden, sind sie immer wieder runter gerückt xD
    Die Einstellung "Config ganz oben" macht durchaus Sinn :)

    Der Pfad zur Datei wird aus der Datenbank abgefragt. Es zu überprüfen ist mir gar nicht eingefallen. Gut dass du's sagst. So kann ich auch fehlende Dateien in eine Logfile schreiben, etc.

    thx
    Sincer
  • in: [PHP] Frage zur Serverbelastung meines Scripts.

    geschrieben von sincer

    Hey ;)

    Danke für eure Hilfe :)

    Ich werde jetzt folgenden Code verwenden:
    <?php
    // Hier findet eine validierung statt.
    // Wenn alles passt, wird folgender Code ausgeführt -> User erhält datei.
    
    $filepath = "./test.rar"; // Der Dateipfad. (Muss später durch LookUp in DB ersetzt werden.
    $filename = "test.rar"; // Der Dateiname. (Muss später von $filepath abgeleitet werden.
    $filesize = filesize($filepath); // Die größe der Datei, die übertragen werden soll.
    
    $fi = new finfo(FILEINFO_MIME); // finfo = bessere Alternative zu mime_content_type()
    $mime_type = $fi->buffer($filepath); // Ermittelt den Mime-Type der Datei.
    
    header('Cache-Control: public'); // Wird für den IE benötigt.
    header('Content-Type: '.$mime); // Setzt den Content-Type.
    header('Content-Disposition: attachment; filename="'.$filename.'"'); // Öffnet den Open/Save Dialog des Browsers und bietet Datei mit Namen $filename zum Download an.
    header('Content-Length: '.$filesize); // Dateigröße an den Browser senden
    
    // ob_end_flush(); // Sendet & Leert den Buffer und deaktiviert die AusgabeBufferung.
    // readfile($filepath); // Liest die Datei aus. (-> Datei wird an User gesendet)
    
    if(ignore_user_abort()) { // Abfragen, wie die Konfiguration lautet, falls der User das Laden abbricht.
    	ignore_user_abort(false); // Falls ein Abbruch laut Config ignoriert wird, wird hier das Gegenteil festgelegt. Script bricht bei Download-Abbruch ab.
    }
    
    // Die Maximale Ausfürhungszeit für dieses Script auf 24 Stunden setzen. (Besser als auf 0 = unendlich)
    ini_set('max_execution_time', 86400); // 60*60*24 = 86400
    
    readfile_chunked($filepath);
    
    exit; // Script stoppen, da selbst Leerzeilen hier zum Problem werden könnten.
    
    
    /** 
     * Diese Methode wird verwendet, um die Datei in 1MB Stücken zu übertragen. (Grund: Buffer Overflow.)
     * Ausgeborgt von http://php.net/manual/de/function.readfile.php
    **/
    function readfile_chunked($filename) {
       $chunksize = 1*(1024*1024); // How many bytes per chunk -> 1MB
       $buffer = ''; // Start with clear buffer.
       
       $handle = fopen($filename, 'rb');
       if ($handle === false) {
           return false;
       }
       
       while (!feof($handle)) {
           $buffer = fread($handle, $chunksize);
           echo $buffer;
           ob_flush();
           flush();
       }
       $status = fclose($handle);
       
       return $status;
    } 
    ?>


    Falls du noch Anregungen hast, um das zu verbessern, freue ich mich natürlich :)

    thx
    Sincer
  • in: mysql query mit php variablen

    geschrieben von sincer

    Hey ;)

    xxbashxx schrieb:
    Wäre echt seht dankbar wenn mir jdm helfen könnte, habe schon alle möglich und unmöglich lösungsansätzte versucht.


    Ich weiß nicht wie viel Erfahrung du im Umgang mit Datenbanken hast, und ob dein DemoCode nur eine Kurzfassung ist, die sich aufs wesentliche beschränkt, aber falls du das wirklich so machst, wie es hier zu sehen ist, solltest du dich dringend über das Thema "SQL Injection" informieren. Ein paar Infos dazu. Es ist nicht schwer so etwas zu verhindern und sollte auf jeden Fall berücksichtigt werden.

    Falls du noch fragen hast: Via Google findest du mehr als genug Material dazu, bzw. wird dir hier sicher auch geholfen ;)

    lg
    Sincer
  • in: [PHP] Frage zur Serverbelastung meines Scripts.

    geschrieben von sincer

    Hey ;)

    drafed-map schrieb:
    Die Scriptlaufzeit dauert so lange an, wie der User braucht, um die Datei herunter zu laden.


    Danke für's austesten :)
    Ok, das ist schlecht...

    Dann gibt's für mich eig. nur die Option, das ganze auf 0 zu setzen. Ich kann ja nicht wissen, ob der Vorgang nun 10 Minuten, oder 1 Stunde benötigt...

    Es sei denn, es gibt eine Möglichkeit, das dynamisch zu erweitern.
    Also sobald die Zeit ausläuft, wird sie immer wieder um 5 Minuten verlängert. Wenn ein Fehler aufgetreten ist, wird sie nicht mehr verlängert. Sowas in der Richtung...

    Zum Thema "unendlich": Wird das Script nicht automatisch abgebrochen, wenn der User den Download abbricht, bzw. wenn die Verbindung abbricht? (Also wenn ein "Fehler" passiert.) Was sind die genauen Risiken, wenn ich die max execution time nur für dieses Script auf unendlich setze?

    lg
    Sincer

    // EDIT:
    Habe gerade was zum Thema set_time_limit() gefunden...
    Source: Link - Französisch / Englisch
    To change the maximum execution time of a PHP script you need to use the ‘set_time_limit’ function. The function takes one argument which is the maximum number of seconds a script is allowed to run. If seconds is set to ‘0′, no time limit is imposed on the script and it may run indefinitely. Use the following snippet just before your time consuming code begins:

    <?php
    set_time_limit(0);
    ?>


    Note that, if you set the number of seconds to a value very high, you may recieve the fatal error just after 1 second. Its better to use ‘set_time_limit(0)’ instead. Also, remember that when you are finished with the portion that performs the busy computation, its a good idea to call:

    <?php
    set_time_limit(30);
    ?>


    Wenn ich die Zeit also vor der Schleife auf 0 setze, und danach auf 10. Würde das mein Problem lösen?
    (Also zusätzlich zu ini_set('max_execution_time', 0); )
  • in: [PHP] Frage zur Serverbelastung meines Scripts.

    geschrieben von sincer

    Hey ;)

    drafed-map schrieb:
    @Sincer: Wenn du PHP nicht in der Konsole ausführst, setze diesen Wert bitte niemals auf 0. Setze ihn sehr hoch, aber nicht auf unendlich.

    Ok, dann würde ich ihn auf 300 setzen. 5 Minuten müssten ja eig. reichen, um eine Schleife ~4000 mal (für eine 4 GB Datei) auszuführen, oder?
    Oder verstehe ich das falsch? Das hängt ja nur mit der Ausführungszeit des Scriptes zusammen, und nicht damit, wie lange es dauert, bis die Datei herunter geladen wurde, richtig?

    lg
    Sincer
  • in: Verlnüpfung zwischen FB und WLM streikt

    geschrieben von sincer

    Hey ;)

    Ich denke nicht, dass du hier eine Antwort findest. Deine Problemschilderung bei MSN war vermutlich eh das beste, was du tun konntest.

    Könnte mir vorstellen, dass dieses Problem mit der Veränderung des Chat-Systems in FB zusammenhängt und du schlicht auf ein Update von MSN warten musst.

    lg
    Sincer
  • in: [PHP] Frage zur Serverbelastung meines Scripts.

    geschrieben von sincer

    Danke für eure Antworten :)

    fabo schrieb:
    $filesize = filesize($filepath);
    header('Content-Length: '.$filesize); // Dateigröße an den Browser senden

    Das nehme ich auf jeden Fall ins Script auf, danke :)

    drafed-map schrieb:
    Ich habe es gerade mit einer 2,5GB-Datei ausprobiert und es gab keinen nennenswerten Anstieg des verwendeten Arbeitsspeichers.

    Gut zu wissen, das war mir wichtig, danke :)

    trueweb schrieb:
    Die Einschränkungen bestehen seitens von FTP und zwar in der PHP.INI über die Einstellung max_execution_time. Dauert das Laden der Datei also länger, wird das Script also abgebrochen.

    Alles klar, danke. Dem kann ich scheinbar entgegenwirken, wenn ich die Max-Execution-Time = 0 -> Unendlich für dieses Script setze.
    ini_set('max_execution_time', 0);

    Sollte ja funktionieren, oder?
    Was passiert aber, wenn dann ein Fehler auftritt? Ich will schließlich nicht, dass mein Server abschmiert, nur weil jemand eine Datei herunter lädt :P

    thx
    Sincer
  • in: [PHP] Frage zur Serverbelastung meines Scripts.

    geschrieben von sincer

    Hey ;)

    Ich habe bereits einen Thread zum Thema "Dateien vor direktzugriff via Link schützen." und kam danke Hilfe auch zu einer Lösung.
    reimann hat mich allerdings bereits auf diverse Probleme aufmerksam gemacht. Ich kenne mich nicht soo gut mit PHP aus, und daher wollte ich einfach mal die Profis unter euch fragen, wie das denn genau ist...

    Hier mal das bestehende Script:
    <?php
    // Hier findet eine validierung statt.
    // Wenn alles passt, wird folgender Code ausgeführt -> User erhält datei.
    
    $filepath = "./test.rar"; // Der Dateipfad. (Muss später durch LookUp in DB ersetzt werden.
    $filename = "test.rar"; // Der Dateiname. (Muss später von $filepath abgeleitet werden.
    
    $fi = new finfo(FILEINFO_MIME); // finfo = bessere Alternative zu mime_content_type()
    $mime_type = $fi->buffer($filepath); // Ermittelt den Mime-Type der Datei.
    
    header('Cache-Control: public'); // Wird für den IE benötigt.
    header('Content-Type: '.$mime); // Setzt den Content-Type.
    
    header('Content-Disposition: attachment; filename="'.$filename.'"'); // Öffnet den Open/Save Dialog des Browsers und bietet Datei mit Namen $filename zum Download an.
    
    readfile($filepath); // Liest die Datei aus. (-> Datei wird an User gesendet)
    
    exit; // Script stoppen, da selbst Leerzeilen hier zum Problem werden könnten.
    ?>

    Dieses Script macht nichts anderes, als eine gewünschte Datei (in dem Fall noch HardCoded) an den Browser zu schicken. Der User klickt nun nicht mehr auf einen Link, der direkt zur Datei führt, sondern auf eine PHP Datei, die ihm die gewünschte Datei zuschickt.

    Mir wurde gesagt, dass es bei größeren Dateien (> 2GB) zum Problem kommt, weil der Buffer überläuft.

    Nun habe ich auf php.net folgendes Script gefunden, das mein Problem lösen dürfte:
    <?php
    function readfile_chunked($filename,$retbytes=true) {
       $chunksize = 1*(1024*1024); // how many bytes per chunk
       $buffer = '';
       $cnt =0;
       // $handle = fopen($filename, 'rb');
       $handle = fopen($filename, 'rb');
       if ($handle === false) {
           return false;
       }
       while (!feof($handle)) {
           $buffer = fread($handle, $chunksize);
           echo $buffer;
           ob_flush();
           flush();
           if ($retbytes) {
               $cnt += strlen($buffer);
           }
       }
           $status = fclose($handle);
       if ($retbytes && $status) {
           return $cnt; // return num. bytes delivered like readfile() does.
       }
       return $status;
    
    }
    ?>

    Ich hab's noch nicht ausprobiert, aber rein von der Logik sieht's recht gut aus.
    Dieses Script sendet eine Datei Megabyte für Megabyte und löscht zwischendurch immer den Buffer. Der User merkt keinen Unterschied, aber wie sieht's mit dem Server aus?

    Meine Fragen lauten nun:
    Kann ich auf diese Weise dann auch Dateien um die 4GB übertragen?
    Wie schaut es mit der Serverbelastung aus? (Sie spielt fast keine Rolle, ich hoste das CMS dann nicht hier auf LC, aber es würde mich trotzdem interessieren.)
    Falls das so nicht passt, was müsste ich tun, damit es funktioniert?

    lg
    Sincer
  • in: Dateien vor direktzugriff via Link schützen.

    geschrieben von sincer

    Hey ;)

    zazu schrieb:
    uhm äh...


    Das trifft's in etwa :D

    Ok, gehen wir davon aus, dass ich eine PHP Datei habe: validate.php
    In dieser Datei werden die Rechte des User überprüft. Weiters wird dieser PHP Datei als Get Parameter übergeben, welche Datei dem User geschickt werden soll.

    Ich mache als einen Link zu mySite.com/validate.php?file=HashWert

    Soweit so gut, die Rechte stimmen, und der User wird via header("Location:./files/Geheim.rar"); zur Datei weiter geleitet. Der Download Dialog des Browsers öffnet sich, User klickt auf speichern, und nun?!
    Der User befindet sich auf einer weißen Seite. In der URL Leiste des Browsers steht "mySite.com/files/Geheim.rar".

    Wie kann ich es nun schaffen, dass der User den Download Dialog vom Browser angeboten bekommt, und dann wieder auf der Ursprungsseite landet? Bzw. diese Seite optisch merkbar niemals verlässt?


    Mir ist dazu eine Idee gekommen, aber ich weiß nicht, ob sich das umsetzen lässt. Vil. weißt du ja mehr.

    Ich könnte ja via AJAX diese Seite "mySite.com/validate.php?file=HashWert" rein laden. Hier funktioniert aber dann die header(Location) Geschichte nicht mehr, da der Header ja bereits gesendet wurde.
    Aber vielleicht geht das ja so ähnlich?!
    Dem User via Ajax die Datei zukommen lassen? kA... Ich Google mal :D


    Falls dir (oder auch jemanden anderes) eine andere / bessere Lösung einfällt, bin ich noch immer dafür zu haben :P
    Bzw. falls mir jem. ein wenig Demo Code reichen kann, mit dem das funktioniert... Den würde ich auch nicht ablehnen :)

    Thx
    Sincer


    // Last Minute Edit:
    reimann schrieb:
    Wenn du den MIME-Typ kennst kannst du auch direkt die Datei zurückgeben in der php-Datei.
    Aber Achtung einige Downloadmanager bringen das nicht, Browser sollten das alle unterstützen.


    Ok, es müsste nur im Browser laufen, andere Anforderungen gibt es nicht.

    D.h. in der URL Leiste stünde dann "mySite.com/validate.php?file=HashWert" und es öffnet sich der Download Dialog im Browser?
    Aber auch dann, sofern ich das richtig verstehe, befindet sich der User auf eine weißen Seite. Schließlich handelt es sich dann nicht mehr um eine html Seite, sondern um einen .rar oder whatever Content.
    header(Location) geht ja nach dem Aufruf von readfile() nicht mehr...

    Oder sehe ich das falsch?

    Das Ziel: Der User bekommt die Datei, und befindet sich danach wieder auf der Seite, auf der er den Download Link geklickt hat.

    =========================================================

    // Final Edit:
    Problem gelöst. Lösung -> erster Post.

    Thx @ zazu & reimann :)
  • in: Dateien vor direktzugriff via Link schützen.

    geschrieben von sincer

    Hey ;)

    zazu schrieb:
    4. Nach dem Klick auf den Link die Datei herunterladen und zur ursprünglichen Seite zurückleiten


    Das klingt gut, wie geht das PHP-Code-Technisch?

    thx
    Sincer
  • in: Dateien vor direktzugriff via Link schützen.

    geschrieben von sincer

    Hey ;)

    zazu schrieb:
    Geistesblitz:
    Du kannst natürlich mit dem Hyperlink eine get Variable mitgeben, jedem Download einen Integer als ID verpassen und auf ein .php verweisen, dann wird dieses php mit einer Funktion die Berechtigung prüfen und bei einem Erfolg die Datei mit der entsprechenden ID zum Download anbieten. Oder so. *sich am Kopf kratzt*


    Genau, das habe ich mir nun auch gedacht.

    z.B. link.com/?file=irgendEinHashWert

    Der HashWert kann in der Datenbank einer Datei zugeordnet werden. Wenn der User validiert wurde, wird ihm die Datei gesendet, ansonsten halt nicht.

    Und hier kommt meine Frage: Wie geht das? ^^
    Datei zum Download anbieten = Download Dialog des Browsers öffnet sich, Datei wird gesendet / vom User gespeichert. Danach kann der User auf der Seite nach weiteren Dateien suchen.

    Wie macht man das mit PHP?

    lg
    Sincer
  • in: Dateien vor direktzugriff via Link schützen.

    geschrieben von sincer

    Hey ;)

    trickdieb schrieb:
    Ist der User eingeloggt wird ihm der Inhalt angezeigt, wenn nicht dann wird eine Meldung ausgegeben und er wird automatisch zur Registrierung weitergeleitet.


    In dem Fall will ich aber keinen Seiteninhalt anzeigen, sondern eine Datei (z.B. PDF, oder ZIP) senden.
    Trotzdem danke ;)

    Ich habe weiterhin ein offenes Ohr für Vorschläge :D
    Sincer


    PS: Danke zazu, aber ich weiß, wie ein Session Login funktioniert.

    Hier noch ein Szenario zur Erklärung:
    Ich bin ein registrierter User, der das Recht hat, eine Datei ("Geheim.pdf") herunter zu laden.
    Du, zazu, hast dieses Recht nicht.
    Wir beide befinden uns in einem Forum (Lima City) und nun fragt mich "Mr.X", der Grundsätzlich auch die entsprechenden Rechte hat, nach der PDF. Er will die Datei im CMS nicht suchen, und so poste ich einfach den Link zur Datei.

    Hier ist der Knackpunkt:
    Ich will, dass nur bestimmte User, die nun auf diesen Link klicken, die Datei auch tatsächlich herunterladen können. Welche User das sind, bestimmt mein CMS. Jeder klickt also auf den gleichen Link (z.B. "mySite.com/files/Geheim.pdf") aber nur manche (registrierte User mit entsprechenden Rechten) bekommen die Datei. Andere sehen nur "Nicht genügend Rechte" am Bildschirm.

    In diesem konkreten Beispiel, klickt Mr.X auf den Link, und bekommt die Datei. Du klickst auch auf den selben Link, bekommst die Datei aber nicht.

    Ich hoffe, jetzt ist klarer, was ich mir vorstelle. Mir gehen schon die Ideen aus, wie ich es beschreiben soll xD
  • in: Dateien vor direktzugriff via Link schützen.

    geschrieben von sincer

    Hey ;)

    Danke für deine Bemühungen, aber das löst mein Problem leider nicht.

    Dass die Seite (und damit der Link) grundsätzlich nur Sichtbar für angemeldete User ist, setze ich voraus. (Vil. habe ich das oben schlecht klar gemacht.)

    In deinem Beispiel kann ich mich als registrierter User einloggen, und den Link, den ich dann sehe, in ein öffentliches Forum posten.
    Jeder, der nun auf den Link "<a href="link/zur/dateioderURL">Link klickbar</a>" klickt, kann die Datei downloaden, ohne ein im CMS angemeldeter User zu sein.

    Ich suche ein Verfahren, bei dem der User den Link "nicht kennt". D.h. er kann drauf klicken, und dann wird die Session überprüft und die Datei an den User gegeben. Wenn der Link aber veröffentlicht wird, und ein anderer (nicht registrierter User) auf den Link klickt, soll bloß "Keine Berechtigung die verlinkte Datei herunter zu laden." zu lesen sein.

    Ich hoffe, jetzt ist ein wenig klarer, was ich suche.

    Danke weiterhin für Tipps :)
    Sincer
  • in: Dateien vor direktzugriff via Link schützen.

    geschrieben von sincer

    Hey ;)

    zazu schrieb:
    Für nähere Ausführungen kann ich dir gerne ein Beispiel machen, falls du nicht weisst, was ich meine :thumb:


    Ja, ein Beispiel wäre klasse xD

    lg
    Sincer
  • in: Dateien vor direktzugriff via Link schützen.

    geschrieben von sincer

    Hey ;)

    Ich möchte gerne ein kleines Datei-Verwaltungs CMS (Homepage mit PHP) erstellen, bei dem eine Partei Dateien hoch laden und Rechte vergeben kann, und die andere Partei (mit den entsprechenden Read-Rechten) die Datei downloaden kann.

    Das ist soweit nicht schwer. Es wäre mir aber ein Anliegen, dass die Datei nicht einfach via Link an Unautorisierte weiter gegeben werden kann.
    (Dass die Datei selbst weiter geschickt wird, kann ich nicht mehr überwachen, schon klar...)

    Szenario, dass nicht gehen soll:
    User bekommt Rechte für Datei, kopiert Link, und gibt diesen weiter.
    User ohne Rechte geht auf Link, und lädt Datei direkt herunter.

    Also so, wie man es bei RapidShare und Co. kennt. Man hat zwar einen Link, die Datei bekommt man aber trotzdem nur über den umständlichen Warte (oder Premium Acc) Link. In meinem Fall bräuchte ich halt keine Warte-Zeit, sondern nur eine Authentifizierung.

    Geht das mit PHP?
    Wenn ja, wie? Kann mir jem. eine Anleitung geben, hat jem. ein Tutorial?
    Wenn nein: Wie kann ich es sonst machen?

    Alternativ: Hat jemand einen besseren Vorschlag? Wie kann ich dafür sorgen, dass Dateien nur für bestimmte Personen zugänglich sind?

    Danke schon im voraus ;)
    Sincer

    =========================================================================
    =========================================================================

    Danke an zazu und reimann :)
    Problem gelöst!

    Mein funktionierender Beispiel Code:
    index.php
    <html>
    <head><title>Download Demo</title></head>
    <body>
    	<h1>Das ist eine Demo.</h1>
    	<br />Download: <a href="validate.php?file=hashWert">klick mich</a>
    </body>
    </html>

    Also in dem Fall einfach nur eine Seite mit Link zu einer PHP File, die mir eine bestimmte Datei zurück liefert.

    validate.php
    <?php
    // Hier findet eine validierung statt.
    // Wenn alles passt, wird folgender Code ausgeführt -> User erhält datei.
    
    $filepath = "./test.rar"; // Der Dateipfad. (Muss später durch LookUp in DB ersetzt werden.
    $filename = "test.rar"; // Der Dateiname. (Muss später von $filepath abgeleitet werden.
    
    $fi = new finfo(FILEINFO_MIME); // finfo = bessere Alternative zu mime_content_type()
    $mime_type = $fi->buffer($filepath); // Ermittelt den Mime-Type der Datei.
    
    header('Cache-Control: public'); // Wird für den IE benötigt.
    header('Content-Type: '.$mime); // Setzt den Content-Type.
    
    header('Content-Disposition: attachment; filename="'.$filename.'"'); // Öffnet den Open/Save Dialog des Browsers und bietet Datei mit Namen $filename zum Download an.
    
    readfile($filepath); // Liest die Datei aus. (-> Datei wird an User gesendet)
    
    // FRAGE: Wie sieht das mit Ressourcen aus? Wie sehr belastet dieser Vorgang den Server bei großen Dateien?
    
    exit; // Script stoppen, da selbst Leerzeilen hier zum Problem werden könnten.
    ?>

    In diesem Fall ist alles HardCoded, es gibt eine test.rar Datei im gleichen Verzeichnis, in dem sich auch die validate.php befindet. Aber ich kann diese Methodik ja auf einen geheimen Pfad anwenden, und wenn das stimmt, sollte keiner mehr drauf kommen, wo die Datei nun tatsächlich liegt, so dass ich volle Kontrolle darüber habe, wer die Datei herunterladen darf und wer nicht.

    Danke für die Hilfe :)
  • in: Shelldatei-Pfad mit Leerzeichen in Java ausführen

    geschrieben von sincer

    Hey ;)

    Ich bin atm nicht unter Linux online und habe deinen Code nicht getestet, aber könnte es sein, dass die Shell vor jedem Abstand einen BackSlash will?

    Dein Pfad sähe dann so aus:
    /home/stephan/Dokumente/Test/Neuer\ Ordner/MeinSkript.sh


    Ich kann auch nur raten xD
    Probier's einfach aus, vielleicht geht's ja ;)

    lg
    Sincer
  • in: MS Batch: set funktioniert nicht

    geschrieben von sincer

    Hey ;)

    Ich kann dir deine Frage leider nicht beantworten, aber vielleicht an einer anderen Stelle helfen.

    1) "Debuggen":
    In deinem Fall könnte es sehr hilfreich sein, wenn du dir Zwischenausgaben mit echo ausgeben lässt. (z.B. Geht das Script überhaupt in die if? Was haben die Variablen für einen Wert vor bzw. nach der if, u.ä....)
    Vielleicht findest du ja dann deinen Fehler.

    2) Ich denke, dass du da einen kleinen Logik-Fehler beim "Spieler wechseln" hast:
    REM Der andere Spieler ist jetzt dran
    if (%pn%==%p1%) set %pn%=%p2%
    if (%pn%==%p2%) set %pn%=%p1%

    Wenn pn gleich p1 -> Setze pn = p2
    // Wenn die obere Bedingung true war, ist pn jetzt ganz sicher p2, folglich ist die nächste Bedingung auch true...
    Wenn pn gleich p2 -> Setze pn = p1.

    => pn wird nach diesen 2 if's (sofern in mind. eine hineingegangen wird) auf jeden Fall den Wert von p1 haben.

    Lösung: else if. (In dem Fall ginge er nur in die 2. if, wenn die 1. if nicht ausführt wurde.)

    lg
    Sincer
  • in: Umfrage zu News-App v2

    geschrieben von sincer

    ho ;)

    Wie bereits vor 9 Tagen bitte ich euch heute erneut um die Teilnahme an einem Fragebogen zum Thema News-App. Für die, die den ersten Umfrage Post nicht gelesen haben, will ich kurz erklären, worum es geht:
    Wir (ein 4-Personen Team) erstellen im Rahmen eines Technikum-Wien Projekts einen Webservice, der Nachrichten von frei zugänglichen APIs holt. Dazu erstellen wir die entsprechenden Smartphone Apps (für iPhone, Android und Phone7), die mit unserem Server kommunizieren, und sich die News holen, die der User will. So könnte sich der User ganz bequem auf einen Blick die für ihn interessanten Nachrichten (z.B. Sport, Wetter, Verkehr, etc.) ansehen, und sich via Push-Notifications auch benachrichtigen lassen, wenn's was neues gibt.

    Hier der Link zur verbesserten Umfrage: http://www.haekchen.at/haekchen/fragebogen.asp?uid=5830&id=2

    lg && danke für eure Inputs ;)
    Sincer
  • in: Problem mit windows 7

    geschrieben von sincer

    ho ;)

    Kannst du uns ein paar mehr Informationen geben?

    Welche Windows 7 Version hast du? Und welche Hardware hast du?

    Worauf ich hinaus will: Reicht deine Hardware für die Anforderungen von Windows 7 aus? Wenn ja, könnte deine Hardware beschädigt sein. z.B. hast du 4GB RAM, was vollkommen ausreicht, wenn aber ein Riegel defekt ist, hast du die ärgsten Schwierigkeiten...

    Seit wann hast du die Probleme? War vorher ein anderes Betriebssystem auf dem Rechner?

    Dein Rechner scheint (laut deiner Beschreibung) sowohl recht langsam (bzw. bei manchen Programm total überlastet) zu sein, als auch total abzustürzen. Das könnte auch ein Hinweis auf unzureichende oder defekte Hardware sein.

    Und zu guter Letzt: Hast du noch Garantie auf den Rechner? ^^

    lg
    Sincer
  • in: Umfrage zu News-App

    geschrieben von sincer

    Danke für dein Feedback :)

    Du bist nicht der einzige, der den Fragebogen schlecht findet. Aus diesem Grund werten wir in den nächsten Tagen das Ergebnis des Fragebogens aus, nehmen uns alle Kritik zu Herzen, und machen einen erweiterten Fragebogen. Eine Fortsetzung quasi... (Die wird hoffentlich zufriedenstellender. Sowohl von den Fragen, als auch mit den Antwortmöglichkeiten.)

    Lima Stand nicht in der Auflistung drinnen, weil ich bei der Fragebogenerstellung nicht daran gedacht habe, wo ich ihn promoten will. Erst als er fertig und veröffentlicht war, dachte ich mir, dass ich ihn doch auch meiner Lieblings-Community (ja, das seid ihr :D ) vorstellen könnte. Beim nächsten mal steht Lima dabei, versprochen ;)

    Dass die Quelle bekannt gemacht werden, ist klar. (Wir gehen auf keinen Fall mit fremden Daten hausieren und behaupten, es wären unsere.)
    Im Detail (soweit wir das bis jetzt geplant haben) ist die Sache die, dass jeder App-User einstellen kann, welche Services er empfangen will. (Es gibt also eine Liste mit Services, die wir anbieten.) Ein aus dem Stegreif genommenes Beispiel wäre, dass ich bei meiner App das Yahoo Wetter, und die Kurier News haben will. Dann könnte ich (zumindest unter iOS4) einstellen, dass ich vom Wetter zusätzlich eine Push Notification haben will, damit ich immer in der Früh informiert bin, wie ich mich anziehen muss xD
    Außerdem haben wir auch darüber nachgedacht, allgemein jeden RSS Feed verwalten zu können. Wie das dann genau aussieht, haben wir uns aber noch nicht überlegt. (Letzteres war einer der Wünsche aus dem Feedback.)

    Wir werden uns auf jeden Fall bemühen, die App möglichst weit im deutschsprachigen Raum zu verbreiten. Sprich für Österreich, Deutschland, und die Schweiz ein entsprechendes Angebot zu finden.

    Grundsätzlich hat die Idee meiner Meinung nach recht viel Potential. Wie wir was aber genau umsetzen, ist aber noch nicht fix. Dazu müssen wir erst alles genauer spezifizieren, und außerdem wollen wir eben auf die Wünsche unserer zukünftigen User eingehen, wo wir wieder beim Fragebogen wären :D

    Was ich vergessen habe zu erwähnen ist, dass die App natürlich kostenlos angeboten wird.

    Ich möchte jetzt noch gar nicht zu weit ausholen, aber ein weiterer Kritikpunkt war noch, dass es solche Services schon gibt, bzw. gerade am iPhone bereits Standardmäßig integriert sind.
    Das ist uns selbstverständlich klar. Wir wollen mit dieser App auch das Rad nicht neu erfinden, sondern eine Möglichkeit bieten, alle (bzw. alle gewünschten) Services schnell und auf einen Blick (also in einer App) verwalten und betrachten zu können. Mit dem einen oder anderen extra Feature und ein wenig Glück (gehört auch dazu ^^) kommt die App dann bei euch gut an und wird damit zum Erfolg :)

    lg
    Sincer

    PS: Wenn jemand so gütig ist, und auf diesen Post antwortet, kann ich dann den neuen Fragebogen auch hier weiter promoten. Falls nicht, mache ich einen neuen Thread auf. (Doppelpost ist nicht möglich.)
  • in: Umfrage zu News-App

    geschrieben von sincer

    ho ;)

    Ich programmiere für eine Projektarbeit mit ein paar Kollegen unter anderem eine kleine iPhone und Phone-7 (eventuell noch Android) App. Dazu haben wir einen kleinen Fragebogen (15 Fragen, weniger als 2 Minuten Zeitbedarf) erstellt, um uns über den Bedarf und eventuell noch Wünsche / Vorschläge unserer zukünftigen Anwender zu informieren.

    Hier der Link: http://www.haekchen.at/haekchen/fragebogen.asp?uid=5830&id=1

    Im Grunde genommen geht es um eine App, die mit unserem Server kommuniziert, sich diverse Nachrichten (Sport, Wetter, usw...) lädt, und den User je nach Wunsch / Einstellungen via Push-Notifications (je nach OS auch anders) informiert.
    Ich hoffe, dass wir hier (in einem technisch orientierten Forum) ein paar repräsentative Antworten bekommen.

    Schon im voraus vielen Dank für eure Mitarbeit :)

    lg
    Sincer
  • in: Falsche Berechnung meines Java-Rechners

    geschrieben von sincer

    ho ;)

    Ja, du hast recht, das habe ich dann auch bemerkt.
    Ich habe mein Problem nun mit BigDecimal und Runden gelöst.

    Danke an alle für die Antworten :)
    Sincer
  • in: Falsche Berechnung meines Java-Rechners

    geschrieben von sincer

    darkpandemic schrieb:
    ein double in Java entspricht dem Standard IEEE 754.


    That's new to me :D
    Sehr interessant. (Weißt du zufällig, ob das bei C / C++ auch so ist?)

    Ok, jetzt weiß ich warum das passiert. (Bei der Umrechnung von double zwischen Dual und Dezimal...)
    Kannst du mir noch sagen, wie ich das verhindere? Oder habe ich da gar keine Chance?

    Thx auf jeden Fall :)
    Sincer
  • in: Wo stoppt die Gier von Apple?

    geschrieben von sincer

    sonok schrieb:
    Man kann auch Internetseiten erstellen, die dann mit dem iPhone (zB) gut verwendbar sind und einer App nicht nachstehen.


    Stimmt, HTML5 ist n1 :)
    Aber wart's ab... Irgendwann muss der Programmierer auch dafür zahlen `;..;´
    ^^

    Aber klar, du hast schon recht. Es wird niemand dazu gezwungen, eine iPhone App zu coden, oder ein Apple Produkt zu kaufen. Aber wenn man es tut (oder tun will) muss man ja deswegen noch lange nicht nach Strich und Faden abgezogen werden...

    Ganz abgesehen davon bin ich gegen jede Art von Firmenpolitik, die den Benutzer auf Teufel komm raus das Geld aus der Tasche zieht. Rein nach dem Motto:
    Wo ist die Grenze bei der du sagst, du hast genug Geld?
    - Mehr!

    Das finde ich einfach ungut. Ich möchte hier aber keinen verbalen Feldzug gegen Apple starten. Es gibt mehr als genug andere Firmen, die es genau so machen.
    Und ich sage es ganz ehrlich: Ich möchte Apple Kunde / Benutzer / Entwickler bleiben. Ich möchte aber auch, dass sich die Bedingungen etwas verbessern.

    Die Problematik, und das möchte ich auch noch dazu sagen, ist in diesem speziellen Fall (siehe Artikel) aber noch dazu eine ganz andere: Eine App für ein Produkt, das außerhalb vom AppStore Geld macht, ist laut der aktuellen Regelung verboten. Im Blog-Eintrag steht sogar, dass sie Apple einen gewissen Prozentsatz geben würden, nur ist das eben nicht möglich...

    lg
    Sincer
  • in: Falsche Berechnung meines Java-Rechners

    geschrieben von sincer

    mordred schrieb:
    du solltest dir eventuell klarmachen mit welchem system die datentypen int,long,float,double rechnerintern dargestellt werden

    da ist es kein wunder das bei 1 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1 nicht 0.3 sondern 0.30000000000000016 rauskommt, mal so als beispiel


    Du hast recht, was dein letztes Beispiel angeht... Genau das kommt bei mir raus...
    Aber ich verstehe nun noch immer nicht warum.

    Ich habe nun alle Rechnungen nach double gecasted...
    result = (double) (number1 - number2);

    Aber das hat nichts verändert (ist meiner Meinung nach auch unnötig, da sowieso beide Zahlen (number1 und number2) vom Typ double sind), und ich glaube auch, dass du das gar nicht gemeint hast.

    Würdest du mir noch erklären, warum dieser Fehler logisch ist?
    Und vor allem: Wie kann ich das verhindern?

    Danke
    Sincer

    // EDIT:
    Komisch, und wenn ich 0.7 eintippe, sehe ich am Display 0.7000000000000001. Check ich nicht...
    Und wenn ich dann weiter eingebe... 6543 korrigiert sich die Zahl auf einmal wieder nach 0.76543. *am Kopf kratz* ^^
  • in: Falsche Berechnung meines Java-Rechners

    geschrieben von sincer

    Sry, das habe ich vergessen zu sagen...

    Alle Zahlen sind vom Typ double.

    // EDIT:
    Aber versteht mich nicht falsch, er verrechnet sich wirklich nur bei manchen Situationen...
    3.3+2.2 = 5.5 -> ok.
    2.2-1.1 = 1.1 -> ok.
    Meiner Meinung nach total eigenartig.

    lg
    Sincer
  • in: Wo stoppt die Gier von Apple?

    geschrieben von sincer

    ho ;)

    Sry für meine späte Rückmeldung... Die FH hat wieder begonnen :P

    Ich finde eure Reaktionen alle sehr interessant. Mein Einstiegsbeitrag war wie gesagt bewusst so provokant geschrieben.

    Ich persönlich habe kein Verständnis für die Gier-Politik von Apple.
    Das iPhone (als Revolution: Smartphone) wäre nie so groß raus gekommen, gäbe es nicht abertausende von Programmierern, die nette Apps (wie sinnvoll die eine oder andere auch sein mag, sei jetzt dahin gestellt) schreiben, und für jedermann (größtenteils kostenlos) zur Verfügung stellen. Ich habe lange gebraucht um einzusehen, warum Apple jedem Programmierer 100$ abknöpft, der eine iPhone App codet, egal, ob der Programmierer diese kostenlos, oder kostenpflichtig anbietet. Mittlerweile habe ich mich mit dem Gedanken angefreundet, weil ich darin einen User-Schutz sehe: Ein Rejecting Team überprüft die Apps, sodass der Enduser eine (zumindest meistens) tadellose und fehlerfreie App verwenden kann. Diese Leute (das Rejecting Team) muss natürlich auch bezahlt werden...
    Soweit so gut, nur scheint Apple (meiner Meinung nach) in eine Art Größenwahn verfallen zu sein, und stellt Bedingungen an die Programmierer, die ich einfach nicht Fair finde.

    Zur Erinnerung: Das iPhone ist nichts ohne die Apps, und, was vielleicht noch viel wichtiger ist: Dropbox (und ähnliches Services) machen ihr Geld auch ohne der iPhone App. Die App stellt nur einen weiteren Service für die Enduser dar. Apple hat meiner Meinung nach (auch, wenn in dem von mir geposteten Artikel das Gegenteil behauptet wird) überhaupt kein Recht, davon auch nur einen Cent mit zu naschen!

    Ich hoffe, dass Apple seine Politik in Zukunft in eine positivere Richtung lenkt, aber ich befürchte, dass Apple, solange das Geld fließt (und das wird es unweigerlich) seinen eigenen, gierigen Weg weitergeht... :(

    lg
    Sincer
  • in: Falsche Berechnung meines Java-Rechners

    geschrieben von sincer

    ho ;)

    Ich habe nun angefangen, mich mit GUI Programmierung (Swing) mit Java zu beschäftigen.
    Die erste Aufgabe, dich ich hatte, war einen kleinen Basis-Taschenrechner zu erstellen. Soweit so gut, und nicht wirklich schwierig. Jetzt bin ich fertig, und mein Taschenrechner verrechnet sich minimal bei manchen Gleitkommazahlen-Eingaben :(

    Um ein konkretes Beispiel zu nennen:
    Ich gebe 3.3-2.2 ein, und bekomme als Ergebnis 1.0999999999999996 statt 1.1

    Meine Frage lautet nun: Ist das unter Java üblich? Wie kann ich das verhindern?

    Ich bin mir außerdem sicher, dass es nichts mit der GUI zu tun hat. Dafür habe ich extra einen Unit-Test gemacht, und das Ergebnis war wie erwartet:
    java.lang.AssertionError: expected:<1.1> but was:<1.0999999999999996>

    Falls jemand den Code sehen will, schreibt mir bitte eine PM mit eurer E-Mail Adresse. Ich schicke euch das Eclipse Projekt dann per Mail. (Ich poste ihn hier absichtlich nicht, da das ein totaler Overhead wäre. Außerdem bin ich mir sicher, in der Zeile "neuerWert = ersteZahl - zweiteZahl;" keinen Fehler gemacht zu haben xD )

    Thx im voraus für die Antworten
    Sincer
  • in: Wo stoppt die Gier von Apple?

    geschrieben von sincer

    ho ;)

    Ich bin ein glücklicher iPhone Nutzer und Objective C sowie Cocoa Anfänger.
    Seit ich angefangen habe Apps für Apple (das iPhone im speziellen) zu entwickeln, lese ich auch immer mehr über die politischen Zustände, die Apple mit seiner Gier nach mehr Beinhart und ohne Gnade verfolgt.

    Den letzten Artikel, den ich dazu in einem Blog gelesen habe war dieser: http://blog.tinygrab.com/2011/02/21/tinygrab-apples-app-stores/ (In englischer Sprache)
    Zusammenfassend geht es (in diesem speziellen Fall) um folgende Problematik:
    Apple schneidet bekanntlich 30% von jeder verkauften App im AppStore mit. Nun gibt es aber Services vom Anbieter X, die grundsätzlich nichts mit dem iPhone oder Apple als solches zu tun haben, für die es aber wiederum einen iPhone Client gibt. (Beispiel: Dropbox) Diese (kostenlose) App ist also ein zusätzliche Service für den End-User, der einen Account beim Anbieter X hat. Verkauft wird also vom Anbieter X der Service wie gehabt z.B. über deren Homepage, und der User hat nun die Wahl, den Service z.B. über eine Homepage, ein normales Programm, oder eben über die offizielle iPhone App zu verwenden.
    Soweit so gut. Apple fühlt sich aber nun scheinbar betrogen, da die App gratis ist, und 30% von 0 sind auch null. Also nimmt Apple nun keine Apps mehr an, bei denen das Finanzielle außerhalb der Apple-Reichweite (sprich auf der eigenen Homepage, und nicht über den AppStore) stattfindet. Dass Apple allerdings sowieso mind. 100$ von jedem Entwickler einsteckt, scheint dabei keine Rolle zu spielen.

    Ich hoffe, ich konnte die Problematik halbwegs plausibel zusammenfassen, ich empfehle aber auf jeden Fall den Artikel zu lesen, sofern es euch interessiert.
    Dieses war allerdings nur eines von unzähligen Beispielen, welches die Unterdrückung jedes Apple Developers deutlich macht. Ich will mich aber nicht darauf versteifen, sondern euch ganz allgemein Fragen:

    Was meinst du zu diesem Thema?
    Bis du ein Mac / iPhone User / Entwickler und hast du eigene Erfahrungen gemacht?
    Ist diese (meiner Meinung nach) gierige Politik von Apple deiner Meinung nach der Untergang, oder sogar eine Festigung des Apple-Imperiums?
    Bin ich der einzige den das stört, und meinst du, dass es doch mehrere Firmen genauso tun sollten?
    Und zu guter Letzt: Ist man als Apple-Entwickler bereits ein Sklave ohne Rechte?

    Ich bin schon sehr auf eure Antworten gespannt :)

    lg
    Sincer

    PS: Bitte versteht mich nicht falsch. Ich will niemanden gegen Apple aufhetzen. Der Titel ist bewusst provokant gewählt, um möglichst viele Blicke auf sich zu ziehen. Ich bin selbst (auch, wenn das jetzt blöd und widersprüchlich klingt) ein Apple-Fan. Ich finde es nur wirklich widerlich, in welche Welt man eintreten muss, sobald man iPhone Apps entwickeln will.
  • in: c++ Zinsrechner

    geschrieben von sincer

    @excision: Warum so kompliziert und unpraktisch?
    Ein
    getch();
    vor dem return ist meiner Meinung nach in diesem Fall vollkommen ausreichend ;)

    crushedreality schrieb:
    Deshalb wollte ich fragen ob das break wirklich gesund ist wenn ich es ständig verwende?


    Nein, break ist kein schlechter Programmierstil. break und continue sind in Schleifen sehr praktische Kommandos die man immer wieder brauchen kann.
    Gerade im Switch-Case ist die Verwendung von break ganz natürlich.

    goto ist schlechter Stil :D

    lg
    Sincer
  • in: c++ Zinsrechner

    geschrieben von sincer

    ho ;)

    case '1' :


    Du hast hier einen Short, und keinen String. Lass also einfach das Anführungszeichen weg.

    case 1:


    lg
    Sincer

    PS: Habe dein Programm nicht getestet, aber das sollte den Fehler beheben ;)

    // EDIT:
    Achja, und um die Frage mit dem Default-Break zu klären:
    Guter Stil wäre es, wenn man das break; immer verwendet, also auch beim default.
    Wenn du das default aber an letzter Stelle hast, wie es bei dir der Fall ist, kannst du es genau so gut auch weg lassen, ohne, dass sich etwas am Programmablauf ändert.
    Und den ganz neugierigen empfehle ich mal auszuprobieren, was passiert, wenn man das break; ganz weg lässt :D (Es gibt da ein paar ganz nette Eigenschaften / Effekte, die man hin und wieder sogar gebrauchen kann :P )
  • in: Apples Safari Browser unter Windows 7

    geschrieben von sincer

    ho ;)

    Meines Wissens kannst du Safari nicht tunen. Du kannst aber dafür sorgen, dass er nicht mit 100erten unnötigen AddOns zugemüllt wird xD
    Windows 7 hat die nette Angewohnheit, Programme, die du öfter verwendest zu "cachen" und "schneller" zu starten. (Ich setze beides unter Anführungszeichen, weil die Ausdrücke nicht ganz stimmen, aber es so am einfachsten und kürzesten zu erklären ist.)

    Trotzdem wird Safari unter einem eingesessenem Windows System nie in der halben Sekunde starten, in der du es bei deinem (wahrscheinlich heiß geliebten ^^) Unix System gewohnt bist.

    Ich spreche hier allerdings nur von der Zeit, die das Programm zum Starten benötigt. Wenn das Teil mal läuft, läuft es (meiner Meinung / Erfahrung nach) unter beiden Betriebssystemen gleich schnell.

    lg
    Sincer
  • in: Fehler

    geschrieben von sincer

    ho ;)

    PHP hat eig. ganz gute und vor allem aussagekräftige Fehlermeldungen xD

    Bist du dir sicher, dass du nur das Bild verschoben hast? Befindet sich die Datei "globalfunctions.php" in diesem Ordner: "/users/moneyexpress/www/nucleus/libs/" ?
    Wenn nicht, dann lade Sie aus einem Backup (oder sofern du die Datei nicht modifiziert hast aus der Originalinstallation) einfach wieder in den Ordner.

    Ich denke, dass das dein Problem lösen wird.

    lg
    Sincer
  • in: NVU Kalender?

    geschrieben von sincer

    fedprod schrieb:
    Das Kalender bild wird übrigens erst durch Java erstellt

    Und wenn ich Java auch deaktiviert habe? Dann kommt ja gar nichts dabei raus... Klingt meiner Meinung nach aber nicht sinnvoll :/

    Aber das ist recht neu für mich. Was bedeutet dann das "chrome://" genau?
  • in: NVU Kalender?

    geschrieben von sincer

    ho ;)

    An deiner Stelle würde ich den Code innerhalb der NoScript-Tegs durch deinen eigenen ersetzen.

    Die ganzen "chrome://" URLs rufen ein bestimmtes Modul von Chrome auf. So kann man z.B. mit chrome://downloads den Download-Manager aufrufen. Davon gibt es noch einige mehr...
    Ein Modul chrome://editor gibt es, soweit ich das herausgefunden bzw. bei Freunden nachgefragt habe, nicht. (Zumindest nicht bei der Standardinstallation von Chrome.)

    lg
    Sincer

    PS: Wenn du den Code im Chrome ausprobierst, siehst du auch nur ein leeres Kästchen. Schon alleine deswegen solltest du deinen eigenen NoScript Teil erstellen.
  • in: Professionelles Portfolio bewerten

    geschrieben von sincer

    ho ;)

    Was mir an deiner Seite sehr gut gefällt, ist der Login-Bereich rechts oben.
    Auch das dunkel und simpel (im positiven Sinn - weniger ist mehr) gehaltene Design mit dem Wolkenhintergrund gefällt mir sehr gut.

    Noch ein paar kleine Hinweise / Verbesserungsvorschläge von meiner Seite:

    Wenn man bereits auf "About" ist, und dann nochmal drauf klickt, fadet der Inhalt aus, und dann erneut ein.
    Es würde mir persönlich besser gefallen, wenn gar nichts passiert, wenn ich ein zweites mal auf den gleichen Link klicke.

    Wenn man auf Portfolio klickt, ist die Seite leer. Das sieht meiner Meinung nach nicht wirklich gut aus.
    Ich kann dir aber 2 Lösungsvorschläge anbieten:
    1) Du gibst der Portfolio "Mainpage" einen Inhalt.
    Oder 2) Du machst eine art Weiterleitung auf den ersten Sublink ("Artwork"). In diesem Fall würde ich dir noch empfehlen, sowohl den "Portfolio", als auch den aktuellen Sublink zu highlighten (also weiß zu färben).

    Der Hintergrund gefällt mir wie gesagt recht gut, nur (wie bereits gesagt wurde) hat man bei der weißen Schrift kein Vergnügen dabei, den Text zu lesen. (Ich habe schon schlimmeres gesehen, deine Seite liegt noch hart an der Grenze zum akzeptablen, aber das muss nicht unbedingt sein.)
    Mein Tipp dafür lautet: Gib den Text in eine dunkle teil-transparente Box. So kann man den Text gut lesen, und den Hintergrund auch noch sehen.

    Das man ohne JavaScript aktiviert zu haben gar nichts sieht, finde ich nicht ideal. Zumindest ein kleiner Hinweis (in <noscript> Tags), dass man JS benötigt, um die Seite sehen zu können, wäre nett.

    Zuletzt noch eine kleine Anmerkung zu dem Link rechts unten: Das "Powered by" kann man überhaupt nicht lesen, und der Link führt zu einer 404-Error Page. Das solltest du unbedingt ändern.

    Alles in allem finde ich die Seite, auch wenn sie noch ein wenig Verbesserungspotential hat, gut gelungen und ich hoffe, du kannst was mit der Kritik anfangen ;)

    lg
    Sincer
  • in: Problem

    geschrieben von sincer

    ho ;)

    Ich habe dir mal ein kleines Beispiel gebastelt. (Getestet im FireFox)

    <html>
    <head>
    	<title>Image Wrap</title>
    
    	<style type="text/css">
    		#wrap {
    			height: 100px;
    			width: 100px;
    			background-color: #258;
    		}
    		
    		#wrap #top {
    			height: 20px;
    			width: 100px;
    			background-color: #F2A;
    			margin-top: 0;
    		}
    		
    		#wrap #left {
    			height: 100px;
    			width: 20px;
    			background-color: #FA5;
    			margin-top: -20px;
    			margin-left: 0px;
    		}
    		
    		#wrap #right {
    			height: 100px;
    			width: 20px;
    			background-color: #3C1;
    			margin-top: -100px;
    			margin-left: 80px;
    		}
    		
    		#wrap #bottom {
    			height: 20px;
    			width: 100px;
    			background-color: #CD7;
    			margin-top: -20px;
    			margin-left: 0;
    		}
    	</style>
    </head>
    
    <body>
    
    	<div id="wrap">
    		<div id="top"></div>
    		<div id="left"></div>
    		<div id="right"></div>
    		<div id="bottom"></div>
    	</div>
    
    </body>
    </html>


    Kurze Erklärung:
    Der HTML Teil besteht eig. nur aus ein paar Div's. (Einem Main Div "wrap", und vier untergeordnete Div's.) Die ganze Formatierung dieser steuerst du nur via CSS.

    Überall wo ich background-color verwendet habe, kannst du natürlich background-image verwenden. (Die genaue Syntax findest du sicher schnell heraus. z.B. bei www.css4you.de )

    Am besten, du spielst dich einfach damit rum :D
    Ich weiß nicht, wie gut du dich auskennst, deswegen (und weil ich schon etwas müde bin ^^) spare ich mir weitere Worte. Falls du noch fragen hast, scheue dich nicht, sie hier los zu werden ;)

    lg
    Sincer

    PS: Zum Titel: Wie wäre es mit "Box mit Bilderrand" :P
    Es geht nicht darum, wie elegant ein Titel ist, sondern nur darum, dass er einen Wiedererkennungswert hat. Wenn alle ihre Threads "Problem" benennen, kannst du sie einfach nicht mehr auseinander halten.
  • in: Bilder verkleinern

    geschrieben von sincer

    ho shufggy ;)

    So wie du es angehst, kann es nicht funktionieren. (Das hat was mit dem HTTP Protokoll Header zu tun, der festlegt, was da über die Leitung an den Browser gesendet wird, damit der Browser weiß, was da jetzt auf ihn zukommt.)

    Kurze Erklärung damit du das Problem verstehst: Sobald du die erste Ausgabe machst. (Die passiert bei dir in der 1. Zeile mit "<html>") schickt der Server (Lima-City) an den Client (Browser) eine Nachricht, in der steht, dass der Browser nun ein HTML (bzw. Text) Dokument anzeigen soll, und alles, was jetzt kommt, auch HTML sein wird...
    Jetzt willst du dem Browser ein Bild schicken, der glaubt aber, dass er ein HTML Dokument bekommt, interpretiert also die Bits vom Bild z.B. als UTF8 (und nicht als JPG Bild-Datei) und was du siehst, sind komische Zeichen...

    Wenn man dieses Problem kennt (und das tust du jetzt ;) ) kann man es ganz einfach beheben.
    Ich habe es bereits erwähnt: Keine Ausgabe außer dem Bild. Kein echo, kein print, und keine andere Ausgabe, auch nicht außerhalb des <?php ?> Teils.
    In deiner 1. Zeile steht allerdings etwas außerhalb der PHP-Tags (nämlich <html>) und somit schickst du an den Browser schon die Information, dass nun kein Bild mehr folgt.

    Was du also tun musst, ist folgendes (Ich habe es in meinem Beispielcode schon angedeutet):
    Du öffnest in den ersten Zeile den PHP Teil ("<?php") und machst ihn in der letzten Zeile zu ("?>"). Dazwischen wird er nicht angerührt.
    Gleich in der 2. Zeile machst du ein if(), dass dir überprüft, ob du das Bild nun hochgeladen / vom Client gesendet wurde, oder nicht.
    Innerhalb dieser if-Bedingung legst du deinen gesamten HTML-Code behutsam in ein (oder auch gerne mehrere) echo' ';
    Nach der Bedingung folgt ein else, in welches du deinen gesamten Bild-PHP Code legst.
    Nach dem else flogt nur mehr der schließende PHP Tag, sprich, die Datei ist damit zu Ende.

    Kannst du das nachvollziehen? Probier's mal aus ;)

    Noch ein kleiner Hinweis zum echo...
    Ich empfehle dir echo mit einfachen Anführungszeichen ( ' ' ) zu verwenden. (Die doppelten ( " " ) sind zwar praktisch, aber wenn man sich nicht auskennt, können sie auch verwirrend sein.)
    Auf Probleme könntest du dann in deiner 6. Zeile stoßen. Die sieht dann so aus:
    echo '<form action="'.$_SERVER['PHP_SELF'].'" method="POST" enctype="multipart/form-data">';


    Ich hoffe du verstehst, worauf ich hinaus will ;)

    lg
    Sincer

    PS: Du könntest vom dem Ergebnis allerdings etwas enttäuscht sein. Es handelt sich nicht um eine Seite, in die ein kleineres Bild eingehüllt ist, sondern nur um das kleine Bild, als würdest du es in einem Bildbetrachtungsprogramm öffnen.


    PPS: Ich war mal so frei, und habe dir dein Script umgebastelt:

    Ich bin schon etwas eingerostet, was PHP angeht xD
    Zur Erklärung: Ich habe das Prinzip umgesetzt, dass ich dir in diesem (und auch im vorherigen) Post erklärt habe.
    Dieses Script speichert das gesendete Bild nun im Ordner "img" ab. (Dieser Ordner muss schon existieren. Interessanterweise ging mkdir() nicht. Ich bekam einen Error, dass damit auch Daten an den Host gesendet werden, und damit das Bild nicht mehr angezeigt werden kann... Das wundert mich etwas. Habe aber jetzt nicht die Zeit, mich länger damit zu beschäftigen.)
    Das Bild wird also jetzt im Ordner "img" in Originalgröße und als Thumbnail gespeichert. Dem User wird nur das Thumbnail geschickt.
    Der Code ist soweit kommentiert. Du solltest also keine Probleme haben es zu verstehen, und an deine Bedürfnisse anzupassen.

    <?php
    if(!isset($_POST['senden'])) {
    	echo '
    	<html>
    	<head>
    		<title>Bilder-Verkleinern</title>
    	</head>
    	<body>
    
    	<form action="'.$_SERVER['PHP_SELF'].'" method="POST" enctype="multipart/form-data">
    	<table class="foren">
    		<tr>
    			<td class="text"><b>Nickname: </b></td>
    			<td><input name="nickname" class="feld" type="text" /></td>
    		</tr>
    		<tr>
    			<td class="text"><b>Bild: </b></td>
    			<td><input name="datei" class="feld" type="file" /></td>
    		</tr>
    		<tr>
    			<td colspan="2" align="center"><input type="submit" name="senden" class="button" value="Hochladen" /></td>
    		</tr>
    	</table>
    	</form>  
    
    	</body>
    	</html>
    	';
    }
    
    //Daten einlesen + Bild hochladen
    else {
    	$nickname = $_POST['nickname'];
    	
    	if(!empty($nickname)) {
    		$dateityp = getimagesize($_FILES['datei']['tmp_name']);
    		$ordner = "img";
    		
    		if($dateityp[2] == 0)
    		{
    			echo '
    			<html>
    			<head>
    				<title>Error</title>
    			</head>
    			<body>
    				Bitte nur Bilder im Gif bzw. jpg Format hochladen... (Hier könnte man einen Zurück-Link einbauen...)
    			</body>
    			</html>
    			';
    		}
    		else {
    			// mkdir sendet scheinbar eine Message an den Client (wusste ich selbst nicht, und wundert mich ein wenig...)
    			// Deswegen scheint das nicht zu gehen. (Vil. irre ich mich, aber bei mir ging es jedenfalls nicht...)
    			// mkdir($nickname);
    					  
    			//Bildgroesse aendern...
    			$file = $_FILES['datei']['tmp_name'];
    			
    			// if (file_exists($file)) {
    			// Originalformat auslesen
    			$size = getimagesize($file);
    			$width_old = $size[0];
    			$height_old = $size[1];
    			
    			// Bild laden
    			$old_picture = imagecreatefromjpeg($file);
    			
    			// Original abspeichern:
    			imagejpeg($old_picture, $ordner.'/'.$nickname.'_big.jpg', 100);
    			
    			// Neues Format definieren, dabei Proportionen beibehalten
    			if ($width_old > $height_old) {
    				$width_new = 100;
    				$height_new = intval($height_old * $width_new / $width_old);
    			} else {
    				$height_new = 100;
    				$width_new = intval($width_old * $height_new / $height_old);
    			}
    			// Neues Bild erzeugen
    			$new_picture = imagecreatetruecolor($width_new, $height_new);
    			// Kopiert das Ursprungsbild und formatiert es um + Weichzeichnung.
    			imagecopyresampled($new_picture, $old_picture, 0, 0, 0, 0, $width_new, $height_new, $width_old, $height_old);
    			
    			// Browser darauf vorbereiten, dass er ein Bild empfängt:
    			header('Content-type: image/jpeg');
    			
    			// Thumbnail speichern:
    			imagejpeg($new_picture, $ordner.'/'.$nickname.'_small.jpg', 100);
    			
    			// Erzeugtes Bild an den Browser ausgeben:
    			imagejpeg($new_picture, NULL, 100);
    		}
    	}
    }
    ?>


    HF ;)
  • in: Bilder verkleinern

    geschrieben von sincer

    shufggy schrieb:
    Ich habe übrigens alles in einer Datei.
    Formular zum Hochladen des Bildes, sammeln und ausgeben der Bild-Infos und dann soll das verkleinern und anzeigen des verkleinerten Bildes kommen.

    Habt ihr noch eine Idee?

    ho ;)

    Wie meinst du das... Alles in einer Datei?
    Abgesehen davon, dass man das aus Stil- und vor allem Übersichtsgründen nicht tun sollte, ist es in diesem Fall auch noch knifflig, da du zwei verschiedene Typen der Ausgabe hast.

    Wenn ich dich richtig verstehe, ist deine Seite nun so aufgebaut:
    Teil 1:
    Erklärungstext, Formular zum Bild Hochladen, usw... und ein Abschicken Button.
    Teil 2: (nach dem Abschicken)
    Es ist nur das Bild als Thumbnail (also verkleinert) zu sehen. (Aber sonst nichts, also keine Überschrift, und gar nichts außer dem Bild.)

    Wenn das so ist, dann musst du in deinem Code nur darauf achten, dass du den Content Type richtig gesetzt hast. (Der Code von der Homepage, den du gepostet hast, sieht gut aus.)
    Das bedeutet, dass du vor der Ausgabe des Bildes den Content Type auf image/jpeg setzen musst. Und da du viel anderes Zeug in der Datei stehen hast, kannst du das auch direkt vor der Ausgabe machen: (Sieht zwar nicht schön aus, sollte aber funktionieren.)
    header('Content-type: image/jpeg');
    // Erzeugtes Bild an den Browser ausgeben
    imagejpeg($new_picture);

    Wirklich wichtig ist hierbei nur, dass du wirklich keine anderen Ausgaben auf dieser Seite (also dem 2. Teil) hast. (Kein echo, kein print, kein Text außerhalb von <?php ?>)

    Hier noch ein kleines Beispiel zum besseren Verständnis:
    <?php
    if(!isset($_POST['pictureUpload'])) {
      // Hier ist dein Content (Teil 1) mit dem Formular...
      echo 'Bitte lade ein Bild hoch.';
    }
    else {
      // Hier ist dein Bildbearbeitungs-PHP Code, also Teil 2 (vergiss nicht auf den Content-Type).
      // Abgesehen von "imagejpeg($new_picture);" darf es hier keine Ausgabe geben.
    }
    ?>


    Alles klar?

    lg
    Sincer

    PS: Falls du bei der 2. Ansicht (Teil 2) doch eine Überschrift, oder noch anderen Content posten willst, kann ich dir versprechen, dass du garantiert nicht mit einer einzelnen PHP File auskommen wirst. (Genaueres dazu erkläre ich dir gerne, falls du es brauchst.)
  • in: Joomla und Firebug

    geschrieben von sincer

    ho ;)

    Es passiert mir manchmal, dass ich Firebug verwende und offen lasse, und dann den Tab / Browser schließe.
    Wenn ich die Seite, die ich mit Firebug analysiert habe, dann wieder öffne, öffnet sich Firebug automatisch wieder.
    Ich kann ihn allerdings dann einfach zu machen, und dann bleibt er zu. Das Problem, dass du hast, hatte ich also noch nie.

    Darf ich dir den Tipp geben, Firebug richtig zu entfernen und dann neu zu installieren?
    Ich weiß, dass ist die Holzhammer-Methode, aber oft hilfts einfach ;)

    lg
    Sincer
  • in: Htaccess geht nicht?

    geschrieben von sincer

    ho ;)

    Ich nehme an, du willst dein "admin" Verzeichnis schützen, und du hast sowohl die .htaccess, als auch die .htpasswd im "admin" Verzeichnis gespeichert.

    Probier mal folgendes:
    Lass die .htaccess Datei in "admin", aber verschiebe die .htpasswd in das Verzeichnis darüber, also nach "public_html".
    Passe dann noch den Pfad zur .htpasswd in der .htaccess Datei entsprechend an.
    AuthUserFile home/panel/public_html/.htpasswd


    Das könnte dein Problem lösen ;)

    lg
    Sincer

    PS: Dein Link zur phpinfo funktioniert nicht, oder wird von der .htaccess file blockiert xD
  • in: Homepage mit iPhone-Style - iui

    geschrieben von sincer

    ho ;)

    Ich wollte meine Homepage fürs iPhone im iPhone Style nachbauen und bin rasch auf die iUI gestoßen. ( http://code.google.com/p/iui/ )
    Genauso rasch bin ich aber auch auf die ersten Fehler gestoßen,da die iUI noch kein fertiges "Framework" (kA, wie ich das genau nennen soll) ist. (Hab die Version 0.31 genommen)

    Manche Fehler konnte ich selbst lösen, aber aktuell steh ich etwas an. Ich hoffe, dass jemand von euch schon mal etwas damit gemacht hat, oder sonst einen Vorschlag für mich hat.

    Meine Seite arbeitet mit einem einfachen Session Login.
    Ist man nicht eingeloggt, hat man ein anderes Menü, als wenn man eingeloggt ist.
    Rechts oben ist ein Button, der je nachdem für "Login" oder "MyLogout" steht.

    Soweit so gut...
    1. Seite öffnen (ok): http://dl.dropbox.com/u/2387656/IMG_0156.PNG
    2. Einloggen, Username & PW eingeben, absenden, man kommt im eingeloggten zustand (also mit Session) wieder zur Home Seite (auch ok): http://dl.dropbox.com/u/2387656/IMG_0157.PNG
    3. Wieder ausloggen (Hier tritt der Fehler auf...): http://dl.dropbox.com/u/2387656/IMG_0158.PNG

    Die Fehler sind glaube ich klar sichtbar: Der Login Button legt sich über den MyLogout Button, der gar nicht mehr existieren sollte, und der Header Background erscheint doppelt...

    Im Hintergrund passiert folgendes: Ich schicke den User mit POST an die Login-Validate php Seite, und wenn alles passt, schicke ich den User zurück zur iPhone index.php#_home Seite...

    Meiner Meinung handelt es sich hierbei um einen Cache-Fehler, weil sobald ich die Seite reloade, sind die doppelten Buttons und der doppelte Header verschwunden.

    Nun habe alles mögliche Probiert, um das Caching der Seite zu verhindern. Unter diese Versuche fallen...
    1) Etliche php Header befehle, die das Cachen der Seite verhindern sollen. (Habe die Tipps von php.net und von anderen Seite versucht, hat alles nicht für den iPhone Browser funktioniert.
    2) HTML meta Tags bitten darum, dass die Seite nicht gecached werden sollen. Funktioniert auch nicht.
    3) Die Home- und andere Seiten mit einer random id versehen. (z.B index.php?nocache=2134234#_home) wobei die zahl via rand() immer wieder neu erstellt wurde. (Ich habe gelesen, dass Browser die Seite dann eher nicht cachen, wenn es so eine ID gibt, weil sie mit dynamischen Inhalt rechnen...) Dem iPhone Browser war auch das egal.

    Meine Frage ist nun, ob jemand bereits das gleiche Problem wie ich hatte, und es lösen könnte, oder ob jemand einen kreativen Vorschlag hat, wie ich das Problem umgehen könnte...
    Ich habe auch kein Problem damit, die Login und Logout Buttons rechts oben weg zu lassen (habe sie auch ins Menü gegeben). Das beseitigt zwar den Doppel-Button fehler, aber nicht den Doppel-Header fehler :/

    Danke im voraus für alle Tipps und Tricks ;)
    Sincer
  • in: Session beendet if-Anweisung?

    geschrieben von sincer

    ho ;)

    Ich habe schon wieder einiges vergessen, aber...
    Kann es sein, dass du Sessions nur bearbeiten kannst, bevor eine Ausgabe gemacht wird?
    D.h.
    if (isset($_SESSION["vote"])) {
    	echo '<script type="text/javascript" src="scripts/vote.js"></script>';
    }

    Geht, weil keine Session bearbeitet wird, sondern nur abgefragt wird...

    if (isset($_SESSION["vote"])) {
    	unset($_SESSION["vote"]);
    	echo '<script type="text/javascript" src="scripts/vote.js"></script>';
    }

    Sollte meiner Meinung nach gehen, sofern vor dem if keine andere Ausgabe (echo o.ä.) gemacht wurde...

    if (isset($_SESSION["vote"])) {
    	echo '<script type="text/javascript" src="scripts/vote.js"></script>';
    	unset($_SESSION["vote"]);
    }

    Kann meines Wissensstands nach gar nicht funktionieren, da bereits eine Ausgabe gemacht wurde, und der TCP Header schon versandt wurde...

    Also wenn ich richtig liege geht dein destroy o.ä. nur dann, wenn du vor dem Aufruf dieses Befehls keine Ausgabe an den Clienten geschickt hast. (Also kein echo, print, oder ähnliches ausführen lässt.)


    Kann aber auch an etwas anderem liegen, das war nur meine erste Vermutung :P

    lg
    Sincer
  • in: Objekte und Vererbung

    geschrieben von sincer

    pawnee schrieb:
    also wenn Du sagst, dass C keine funktionA() beinhaltet, Du diese jedoch aufrufen kannst, dann wird sie auf jeden Fall von Klasse A vererbt.
    Dasselbe gilt auch für Attribute - sofern Sie denn einen zugänglichen Modifier besitzen.

    Genau hier ist das Problem: Ich kann funktionA() in C nicht direkt aufrufen.
    Ich arbeite mit Eclipse, Syntaxfehler werden mir also sofort angezeigt. In diesem Fall ist es syntaktisch richtig, allerdings stürzt das Programm ab, wenn die funktionA() in C aufgerufen werden soll. Wenn ich den Aufruf von funktionA() aus C auskommentiere, stürzt das Programm nicht mehr ab. Es macht dann halt nicht das, was es soll :P

    pawnee schrieb:
    Ich habe das gerade nochmal ausgiebig getestet und es funktoniert problemlos.

    Das sollte es meiner Meinung nach auch :/

    pawnee schrieb:
    Wenn Du jedoch ein neues Objekt erstellst, werden wie drafed-map schon ansprach, alle Attribute in den Ausgangszustand versetzt, wie er in der Klasse A explizit dargestellt ist.
    Notgedrungen könntest Du von Deiner problematischen Klasse ein Singleton aufbauen, um es für Testzwecke eindeutig zu halten.

    Das wäre eine Lösung für das Objekt b... (Im Moment übergebe ich dieses Objekt einfach als Parameter und habe damit immer einen aktuellen Stand des Objekts...)

    pawnee schrieb:
    Es wäre sicherlich sinnvoller, wenn Du uns alle 3 Klassen einmal komplett gibst, damit man sich auf die Fehlersuche begeben kann.

    Bekommst eine PN

    lg && danke ;)
    Sincer
  • in: Objekte und Vererbung

    geschrieben von sincer

    sektor schrieb:
    Hast du mal versucht vor funktionA() this zu schreiben:
    this.funktionA()


    Mit this.funktionA() innerhalb von C erreiche ich, dass eine Methode "funktionA()", die in C steht, aufrufe.
    In diesem Fall will ich aber die funktionA() aus A aufrufen.
    Aber wie gesagt, mit OOP habe ich nur wenig Erfahrung, also freue ich mich über eine Belehrung :)

    In diesem Fall existiert aber gar keine funktionA() in C, sondern nur in A, die ich eben zu C vererben und auch dort verwenden will.

    Aber um deine Frage zu beantworten: Ja, ich habs schon versucht xD

    drafed-map schrieb:
    Brauchst du aus A nur Methoden, oder auch Eigenschaften / Werte von Variablen? Es ist nämlich so, dass du mit A garnicht mit einem Objekt arbeitest, sondern nur mit eine statischen Klasse.

    Ich will von A sowohl Attribute (also globale / public Variablen) und die Methoden (also Funktionen in A)

    drafed-map schrieb:
    Du erzeugst ja nirgendwo ein Objekt, sondern fängst einfach in der Klasse an, zu programmieren. Erweiterst du A durch B, dann erbt B alle Methoden von A. Die Werte der Variablen, die du bis jetzt in A berechnet hast, jedoch nicht. Was du tun kannst ist folgendes: Lasse A garnicht als main laufen, sondern tue dies mit B. Dazu muss B aber statisch sein, du musst B aufrufen, nicht A (vom Betreibssystem aus in der VM) und du musst alle Berechnungen in B durchführen, nicht in A.

    Das habe ich auch schon bemerkt, deswegen übergebe ich die Werte, die ich in B brauche immer als Parameter, wie ich es jetzt auch mit dem Objekt b mache, wenn ich es in C brauche.

    Aber wenn ich z.B. in A nur stehen habe, dass eine Objekt b = new B(); erzeugt werden soll, und dann in B den Code schreibe, der jetzt in A steht, in C den Code schreibe, der gerade in B steht, und in D den Code schreibe, der gerade in C schreibt...
    Kann ich dann auch die Attribute vererben?

    Ganz abgesehen davon habe ich bis jetzt C nur als Testklasse geschrieben, die nur Methoden aus A und B verwenden will, und noch gar nicht auf deren Attribute (außer über Setter und Getter) zugreift. Und diese müssten sich doch ganz normal vererben lassen.

    drafed-map schrieb:
    Damit könntest du A eigentlich schon abstrakt machen, das musst du aber nicht.

    Um ehrlich zu sein, weiß ich gar nicht, was eine Abstrakte Klasse genau ist.

    lg und danke weiterhin für Antworten
    Sincer
  • in: Objekte und Vererbung

    geschrieben von sincer

    ho ;)

    Vielen Dank für die schnelle Antwort, du hast damit 50% meines Problems gelöst :D

    Ich finde es eigenartig, mein B Objekt b ist public und sollte daher ja ganz normal vererbt werden können :/
    Das ganze als Parameter zu übergeben funktioniert aber soweit :P

    Die A klasse ist aber die main Funktionion, also wird nicht als Objekt a angelegt. Oder anders gesagt, ich kann es nicht als Parameter übergeben...

    In Code sieht das so aus:
    class A
    {
    	public B b = new B();
    	public C c = new C();
    
    	public int funktionA()
    	{
    		// macht etwas, dass auch in C benörtigt wird...
    		return data;
    	}
    
    	public void funktionSpiel()	// Die Main Methode, die so lange läuft, wie das Spiel läuft.
    	{
    		// ...
    		if(b.funktionB() == 1)	// Hier wird ein Wert vom Spielstand der Klasse B überprüft...
    			c.test(b);
    		// ...
    	}
    }
    
    class B extends A
    {
    	private int[] arrayB = new int[5];
    
    	funktionB() 
    	{
    		// überprüft irgendwas und speichert bestimmte Werte in ein private int Array...
    	}
    }
    
    class C extends A
    {
    	public void test(B b_ref)
    	{
    		/*
    		* Das funktioniert nun dank dir drafed-map :)
    		*/
    		if(b_ref.funktionB() == 1)	// Hier wird wieder ein Wert vom gleichen laufenden Spiel überprüft.
    		{
    			// aktion...
    		}
    
    		/*
    		* Und folgendes geht noch immer nicht :(
    		*/
    		int x = funktionA();		// Ruft eine Funktion von A auf, die eigentlich geerbt worden sein sollte :/
    	}
    }


    Ich kann die public funktionA() nicht als Parameter übergeben, da sie eine Methode von A ist. Meiner Meinung nach sollte ich sie aber benützen können, da sie schließlich von A geerbt wird...

    Hast du vielleicht noch eine Idee?

    Danke
    Sincer
  • in: Objekte und Vererbung

    geschrieben von sincer

    ho ;)

    Ich habe eine Frage an diejenigen, die sich mit OOP in Java -> Android App (aber auch grundsätzlich) auskennen...

    Hier ist mein Problem:
    Ein Spiel besteht aus 3 Klassen: A, B, C

    A ist die oberste Klasse (Main Funktion sozusagen), und legt die Objekte b = new B(); und c = new C(); an.
    B erbt von A und verwaltet die Spielstände, unter anderem in einem Array. Mit Setter und Getter Methoden kann man auf die aktuellen Spielstände zugreifen.
    z.B. getX(); // <- Methode in B
    b.getX(); // <- Aufruf von Objekt b aus A um Spielstand zu ermitteln
    C erbt ebenfalls von A und stellt die Künstliche Intelligenz dar. (Bei einem Rundenbasierendem Spiel wird nach jedem Spielzug des Users ein Zug der KI ausgeführt.) Diese programmiere ich gerade, und genau hier habe ich ein Problem. Innerhalb von C will ich auf die Methoden von A zugreifen, und gleichzeitig den Spielstand abfragen können, also z.B. b.getX();

    Mein Problem ist, dass das Spiel abstürzt, sobald die KI (C) anfängt, entweder Methoden von A, und / oder B aufzurufen. (Wobei B nur indirekt über A benützt wird. Das Objekt b mit den bestehenden Spielständen wird schließlich auch geerbt, und soll auch von der KI gelesen und beschrieben werden können.)
    Innerhalb von Eclipse werden mir keine Fehler oder Warnungen angezeigt, also müsste mein Code von der Syntax her stimmen...

    Ich kann in C mit den Objekten A und B arbeiten, wenn ich sie neu initialisiere.
    z.B. innerhalb von C: c_b = new B();
    Allerdings nützt mir das nichts, weil ich die Spielstände aus dem in A angelegtem Objekt b brauche...

    *Knoten in der Zunge hab* ^^
    Könnt ihr mir folgen?
    Hat jemand Erfahrung damit und eine Vermutung, warum mein Programm abstürzt?
    Habe ich irgendetwas mit der Vererbung missverstanden und funktioniert das nicht so, wie ich mir das vorstelle? (Bin noch nicht so erfahren mit OOP.)

    lg und danke im voraus
    Sincer
  • in: [Java / Android] Variablen und Text kombinieren - möglich?

    geschrieben von sincer

    benutzernaemelchen schrieb:
    Nein, das ist alles Quatsch.
    Was du versuchst geht einfach nicht, es muss einen anderen Weg geben, ein bild dynamisch zu laden.


    Hab mich ein bisschen rum gespielt, und ein Workaround für mein Problem gefunden :)
    // Initialisierung - Spielfeld von 4-Gewinnt ist 7*6
    public ImageView[][] img = new ImageView[6][7];
    // XML-ID's zuweisen:
    img[0][0] = (ImageView) findViewById(R.id.y0x0);
    img[0][1] = (ImageView) findViewById(R.id.y0x1);
    img[0][2] = (ImageView) findViewById(R.id.y0x2);
    // ...usw...
    // Schleife, um den Rest nicht manuell Coden zu müssen:
    for(int y = 0; y <= 5; y++)
    {
        	for(int x = 0; x <= 6; x++)
        	{
        		img[y][x].setImageResource(meineApp.R.drawable.meineWunschGrafik);
        	}
    }


    Das kann ich dann ja umlegen, wie ichs brauche, mit Bedingungen usw... Erspart mir im Endeffekt eine Menge Arbeit :P

    Such mal nach Resource Manager oder nur resourcen, etc.

    Ich habe auf diese Weise sogar einen Post von jemanden gefunden, der genau das gleiche erreichen wollte wie ich... Er hat aber keine wirklich brauchbare Antwort bekommen xD

    Ansonsten ertrags wie ein Mann und schreibs von Hand :P

    Darfst gerne den Sekretär machen ^^
    (GoGoGo, nur noch 400 Zeilen Deppen-Arbeit...)

    Kurz noch: willst du beim Start des Programms eine Schleife verwenden um den ImageViews die ganzen Bilder zuzuweisen(die schon im drawable ordner sind) oder willst du z.B. den User ein Bild auswählen lassen und das dann laden?

    Keins von beiden, ich arbeite an einem Vier Gewinnt, und tausche (fürs erste) die Farben der Felder aus. D.h. am Anfang ist es ein weißes Feld, und wenn man einen Stein einwirft, wird das Feld (je nach Spieler) rot oder gelb.
    Soweit so gut, ist ja "nur" ein 6*7 Feld, d.H. 42 Bilder, die man je nach dem austauschen muss.
    Jetzt will ich aber, dass nachdem jemand gewonnen hat, die Gewinner-Reihe optisch hervorgehoben wird. D.h. Alle zuvor roten Steine werden dunkelrot, alle gelbe Steine werden dunkelgelb, die weißen werden grau, und nur die Steine, die gewonnen haben, verändern die Farbe nicht (und stechen dadurch hervor)... Kannst dir selbst ausrechnen, wie viele Zeilen das sind, unter welchen Bedingungen welche Grafik durch welche ersetzt wird, wenn man das alles per Hand, und nicht mit einer Schleife codet :P
    (Mit meinem Workaround geht's dann doch etwas einfacher :D )

    lg && danke
    Sincer
  • in: [Java / Android] Variablen und Text kombinieren - möglich?

    geschrieben von sincer

    ho ;)

    Das wollte ich auch, aber leider ging es nicht...

    Gescheiterte Versuche:
    int var = 1;
    image = (ImageView) findViewById(R.id.grafik+var);   // <- Warnung: grafik cannot be resolved or is not a field
    image = (ImageView) findViewById(R.id."grafik"+var);   // Error
    image = (ImageView) findViewById(R.id.'grafik'+var);   // Error
    image = (ImageView) findViewById("R.id.grafik"+var);   // <- Warnung: The method findViewById(int) in the type Activity is not applicable for the arguments (String)
    image = (ImageView) findViewById(R.id.grafik.var);   // Error


    Mach ich etwas falsch, oder geht es einfach bei dieser Methode (findViewById) nicht?
    Gibt es noch eine andere Möglichkeit mein Zeil (oder etwas gleichwertiges) zu erreichen?

    lg
    Sincer
  • in: [Java / Android] Variablen und Text kombinieren - möglich?

    geschrieben von sincer

    ho ;)

    Vielleicht hat meine Frage nicht unbedingt etwas mit Android zu tun, und dafür eher mit Java. (Meine Kenntnisse über diese Sprache sind noch sehr gering.)
    Ich Code gerade an einer Android App, und muss für eine grafische Umsetzung immer wieder Grafiken austauschen.

    Dies sieht Code-Technisch unter anderem so aus:
    ImageView image;
    
    image = (ImageView) findViewById(R.id.grafik1);
    image.setImageResource(MeineApp.R.drawable.meineGrafik1);


    Es wird also aus der XML File das Bild mit der ID "grafik1" gesucht, und (z.B. in diesem Beispiel) mit dem Bild "meineGrafik1.jpg" ausgetauscht.
    Bei vielen Grafiken, und Abfragen, unter welchen Umständen welche Grafik verwendet werden soll, wird diese Methode zum Tauschen eines Bildes allerdings sehr mühsam. Meine Frage ist, ob ich das auch dynamisch bzw. variabel machen kann.

    Bei JavaScript geht es z.B. dass ich einen Parameter so übergeben könnte:
    meineFunktion("FixTeil"+intVariable);

    Allerdings ist JS "nur" eine Scriptsprache. Geht so etwas (auf ähnliche Weise) auch in Java?

    Wenn ich also 100 Grafiken habe, muss ich nicht mehr 200 Zeilen dafür Coden, sondern nur mehr eine Schleife und ein paar if's, um mir meine Bilder-ID's und Bilder-Namen zu generieren, und auszutauschen...

    Vielen Dank schon im Voraus :)
    Sincer
  • in: [Java] Problem beim 2D-Array Überschreiben

    geschrieben von sincer

    ho ;)

    Vielen Dank für deine rasche Antwort :)
    Leider hat es mein Problem nicht behoben, was mich vermuten lässt, dass es eine andere Ursache als das Spiel-Feld Array hat
    *am Kopf kratz*

    Das mit dem initialisieren der Variablen außerhalb der for-Schleife mache ich normalerweise, damit ich auch außerhalb der Schleife auf den Wert eines Incrementors zugreifen kann. (z.B. wenn man mit Break eine Schleife verlässt...)
    Zugegeben, in diesem Fall brauche ich das nicht ^^

    Das das Array in Java eine Klasse ist, daran muss ich mich noch gewöhnen ^^
    Die Möglichkeit das Array komplett neu anzulegen finde ich n1, da schnell und unkompliziert :)

    ...
    YES!!
    Und da ich nun an einer anderen Stelle angefangen habe, den Fehler zu suchen, habe ich ihn auch gefunden :D
    *freu*

    Vielen Dank für deine Hilfe :)
    Sincer
  • in: [Java] Problem beim 2D-Array Überschreiben

    geschrieben von sincer

    ho ;)

    Meine Java-Kenntnisse streben gegen Null, bin gewohnt in C / C++ zu programmieren. Deswegen bin ich mir nicht sicher, ob ich einfach was falsch mache, oder das Problem doch komplexer ist...
    Ich schreibe gerade eine Android App (4-Gewinnt), und habe ein merkwürdiges Problem mit einem Zweidimensionalem Array.

    In meiner Gewinn-Kalkulations-Klasse habe ich global 2 Variablen angelegt.
    private int[][] field = new int[6][7];	// -> field[y][x]
    private int win = 0;	// 0 -> Niemand hat gewonnen, 1 -> Spieler 1 hat gewonnen (rot), 2 -> Spieler 2 hat gewonnen (gelb).


    Die verschiedenen Methoden belegen das Spielfeld "field" dann an der passenden Stelle mit 1 oder 2, setzen also die gelben und roten Steine ins Array.

    Die reset Methode soll dann das Spielfeld wieder leeren...
    public void reset()
    	{	
    		// Reset the Field
    		int x = 0;
    		int y = 0;
    		for(y = 0; y <= 5; y++)
    		{
    			for(x = 0; x <= 6; x++)
    			{
    				field[y][x] = 0;
    			}
    		}
    		// Reset win
    		win = 0;		
    	}


    (Eigentlich wollte ich zum Resetten das Objekt einfach löschen (den Speicher frei geben) und neu anlegen, aber das geht in Java scheinbar nicht...)
    Ich bin davon ausgegangen, dass ich nach dem Reset das Spielfeld wieder neu belegen kann, aber die getter-Methode, die das Spielfeld ausliest gibt an den Stellen, an denen vor dem reset ein Spielstein lag (also im Array nicht 0 stand) nun wieder nicht 0 zurück.
    D.h. beim 2. Spiel (nach einem Reset) kann ich z.B. nicht in die unterste Reihe einwerfen, weil diese schon belegt ist. Der Stein landet dann sozusagen in der Luft, und nicht ganz unten am Boden.

    Ich lade 2 Screens hoch, um mein Problem zu verdeutlichen:
    Vor dem Reset: http://sincer.lima-city.de/4gewinnt/spiel1.png
    Nach dem Reset wieder ein paar Steine aufs Feld gegeben, um das Problem sichtbar zu machen: http://sincer.lima-city.de/4gewinnt/spiel2.png

    Also eigentlich wird nach einem Reset der neue Stein nicht überhalb des gelöschten Steins gelegt, sondern darauf. Öfter resetten bringt auch nichts :P

    Hat jemand eine Idee, woran das liegen könnte?

    lg
    Sincer
  • in: Fehler auf Website und darstellung im Internet

    geschrieben von sincer

    ho ;)

    Wegen dem Padding:
    Du kannst dem Div mit der id "newsticker" einen padding von z.B. 10px geben, und dafür 10px weniger hight nehmen. Ich habs mir nur mit Firebug schnell angesehen, im Firefox sieht das gut aus, ich kann dir aber nicht garantieren, dass es auch in allen anderen Browsern so passt.
    Alternativ kannst du deinen <marquee> Tag in einen <p> oder weiteren <div> Tag packen, und diesem ein margin geben...
    Alle Wege führen nach Rom ;)

    Zum "Fehler":
    Wie du bereits gesagt hast, gehört der marquee-Tag nicht zum W3C Standard. D.h., wenn dein Code xHTML 1.0 strict gestaltet ist, und valide sein soll, solltest du auf den Tag verzichten. Es gibt sehr gute JavaScript Lauftexte, die du als alternative verwenden kannst.
    Ein richtiger Fehler ist es allerdings nicht. Du kannst nur nicht erwarten, dass der Tag in jedem Browser funktioniert. (In den meistgenützten Browsern funktioniert er aber... IE, FF, Chrome, Opera, Safari, und ähnliches)

    lg
    Sincer
  • in: Samsung Omnia II i8000 und GPS

    geschrieben von sincer

    ho ;)

    Ich hatte einige Zeit lang das S8000. (Also mehr oder weniger das gleiche Handy, ich glaube ein wenig kleineres Display, schlechterer W-Lan Empfang, und kein Windows OS)

    Ich habe mir nie Route66 (oder ähnliches) gekauft, sondern es nur fürs Handy "frei geschaltet" ^^, und mir die Software und Karten drauf geladen. Das ganze hat aber nie perfekt geklappt. Die Live-Navigation hat nicht funktioniert, sondern nur die aktuelle Ortsbestimmung und Routenplanung. (Also so ähnlich, wie wenn man Google Maps mit GPS+ am Handy verwendet, nur halt ohne Internet :D )

    Egal, worauf ich hinaus will, ist, dass es bei der ersten Verbindung sehr lang gedauert hat, bis er meine Position hatte. Bei den nächsten Verwendungen war es dann etwas besser, aber auch nicht atemberaubend :D
    Und im Haus hat das nie funktioniert. Es ging immer nur im freien.

    Ich glaube, dass du mit einem Signalverstärker gut beraten bist.
    Ich gehe davon aus, dass du das sowieso nur im Auto verwendest. (Ansonsten frisst die Navigation viel zu viel Akku...) Wenn das der Fall ist, kannst du das zusätzliche Teil immer im Wagen lassen...

    KA, ob es so etwas fürs Omnia II gibt, aber vielleicht findest du ja eine ganze Halterung mit Aufladekabel und eben externem Empfänger. (Das wäre dann halt wirklich nur fürs Auto und damit überhaupt nicht mehr für Radtouren oder so etwas gedacht.)

    lg
    Sincer
  • in: CMS, welches, mit Bridge

    geschrieben von sincer

    fatfreddy schrieb:
    Von sincers Idee, eventuellphpBB2 zu verwenden, kann ich nur dringend abraten!. Das System ist veraltet und wird seit 2 Jahren nicht mehr supported und weiterentwickelt. Damit jetzt noch ein neues Projekt zu starten, wäre eine Sackgasse.

    Ja klar, gut das du es sagst, ich habs im meine Chaos dann ganz vergessen...

    // EDIT:
    Wobei ich halt der Meinung bin, dass man es trotzdem noch verwenden kann. (Aus Sicherheitstechnischen Gründen ist sicher davon abzuraten, kein Frage :D )

    lg
    Sincer
  • in: CMS, welches, mit Bridge

    geschrieben von sincer

    ho ;)

    Ich habe zwar schon mit dem einen oder anderen CMS gearbeitet, aber noch nie eine Kombination aus CMS und Forum probiert.

    Was ich dir trotzdem sagen kann ist folgendes:
    o) phpBB lässt sich angeblich nur schwer mit anderen CMS kombinieren. Mit SMF soll man es angeblich leichter haben.
    o) Wenn du mit phpBB arbeiten willst, überlege dir vorher, welche Version du verwenden willst. Die v2 ist einfach zu Handhaben, kann aber nicht ganz so viel. v3 dagegen kann alles mögliche, ist aber relativ gewöhnungsbedürftig was die Verwaltung angeht. Das installieren von Addons ist bei v3 um einiges aufwändiger, als es noch bei der v2 der Fall war. Aber wenn du genug Zeit hast, ist v3 sicher eine gute Wahl :D
    o) Joomla und WordPress sind gut gemachte CMS. Du findest Designs und Addons ohne Ende und die Verwaltung ist sehr benutzerfreundlich und einfach. Mit Drupal habe ich noch nicht so viel Erfahrung, aber was ich gehört habe, soll das auch ganz nett sein. (WIl ich mal bei Gelegenheit selbst ausprobieren.)
    o) Von Typo3 rate ich dir eher ab. Die Einarbeitungszeit ist sehr hoch und abgesehen davon, dass jetzt eine neue Version heraus kam, mit der die Installation sehr einfach ist, ist Typo3 verdammt schwer zu verwalten und zu bedienen. (Und damit meine ich nicht, die Texte einzufügen :D ) Wenn du Programmier- / Script-Kenntnisse hast tust du dir dabei aber wohl leichter. Mein letztes Projekt war mit Typo3, und naja... Ich will nicht sagen, dass es ein schlechtes CMS ist, aber für ein 4-Monatiges Projekt war die Eingewöhnungszeit viel zu hoch und das CMS selbst hat mir sehr viele Steine in den Weg gelegt. (Aber hey, wenn das ein großes Projekt ist, und du viel Zeit hast, spricht auch nichts gegen Typo3. Gibt halt nicht so viele Designs wie z.B. für Joomla...)

    Ich hoffe, dass (auch wenn das deine Frage nicht direkt beantwortet hat) dich der Post ein wenig weiter bringt ;)

    lg
    Sincer
  • in: ID auswählen und Werte in ein Formular eintragen lassen.

    geschrieben von sincer

    ho ;)

    Verstehe ich das richtig?
    Du hast eine DropDown-Liste (select) und wenn jemand die 10 auswählt, soll in einem anderen Formular (input-Felder) vorgegebene Daten erscheinen.

    Wenn das so ist, musst du mit AJAX (und JavaScript) arbeiten. Das hat dann kaum was mit PHP zu tun. (Außer wenn du die Daten eventuell schon mit PHP in ein JSON Objekt lädst. In dem Fall bräuchtest du kein AJAX mehr. Und ich glaube fast, dass es mit JSON einfacher wäre... Bin aber kein Experte auf dem Gebiet.)

    Ich bin mir nicht sicher, ob ich deine Frage richtig verstanden habe, aber wenn ja, sollte dich der AJAX bzw. JSON, aber auf jeden Fall JavaScript Hinweis weiter bringen, als nach PHP Code zu suchen.

    lg
    Sincer

Login zum Webhosting ohne Werbung!