kostenloser Webspace werbefrei: lima-city


Suche auf lima-city

  • in: 2 PCs, 2 Monitore: wie verbinden?

    geschrieben von midwar

    Ich habe 2 PCs (1 zum arbeiten, 1 zum zocken) und 2 Monitore. Beide per HDMI anschließbar. Wie kann ich dafür sorgen, dass beide PCs an dieselben Monitore angeschlossen sind und ich per Weiche hin und herschalten kann, so dass jeder PC praktisch über einen Doppelmonitor verfügt?

    Vielen Dank. Wenn jemand direkt Amazon-Links zum bestellen hat, wäre super. Bei Saturn sind solche Sachen immer überteuert...
  • in: Three.js object picking

    geschrieben von midwar

    Hallo,

    erstmal danke für die Antwort, jedoch hilft sie mir leider nicht weiter.

    Ich weiß sehr wohl, dass ich die Projektion gar nicht mehr selber machen muss. Ich habe ja lange gebraucht um zu verstehen, dass in den neueren Versionen von threejs das alles automatisch gemacht wird. Ich benötige dann nur noch:

    var projector = new THREE.Projector();
                        var raycaster = projector.pickingRay(Vector.clone(),camera);
                        var intersects = raycaster.intersectObjects(scene.children);


    Aber genau das habe ich doch jetzt ewig lange versucht und es funktioniert nicht. Dabei möchte ich einfach nur einen 3D Körper, der
    - mit der Maus drehbar ist
    - bestimmte Bereiche anklickbar sind

    Was mache ich falsch (Denn deine Ratschläge setze ich doch eigentlich schon um..)?
  • in: Three.js object picking

    geschrieben von midwar

    Hallo,

    ich versuche gerade mit der Three bibliothek einen 3-dimensionalen Körper in meinen Browser einzubinden, der mit der Maus drehbar und anklickbar ist. Hierzu muss ich natürlich wissen, ob der User mit einem Mausklick den Körper getroffen hat. Daran scheitere ich allerdings leider. Ich selber habe von JS wenig Ahnung und von der Three-Bibliothek eh noch weniger.

    Zur Erklärung: Ich hatte bevor ich das ganze hier angefangen habe, nichtmal eine Ahnung was three.js ist, von daher verzeiht mir bitte unsauberen Code. Ich habe mittlerweile rausgefunden, dass ich 3 Dinge benötige, um festzustellen, ob der User mit seinem Mausklick den Körper getroffen hat. Hierzu benötige ich erstens die Korrdinaten des Mausklicks x,y, die dann in einen 3D Vektor umgerechnet werden, der die Richtung angibt. Anschließend benötige ich die Position der Kamera, die die ganze Szene aufnimmt und caste einen Ray, der von der Position der Kamera ausgeht und in Richtung des Richtungsvektors geht. Drittens überprüfe ich dann, ob dieser Ray / Strahl den Körper schneidet. Wenn ja, hat der User mit seinem Mausklick den Körper getroffen, wenn nein eben nicht.

    Code:

    <!DOCTYPE html>
    <html lang="en">
    	<head>
    		<title>3D Body</title>
              <script src="three.js"></script>  
              <script src="OBJLoader.js"></script>  
    		<script src="TrackballControls.js"></script>    
              <style type="text/css">
                   body {
                        width:100%;
                        height:100%;
                        padding:0;
                        margin:0;
                   }
                   #container {
                        width:100%;
                        height:100%;                         
                   }
              </style> 
    	</head>                            
    
    	<body>
    		<div id="container"></div>  
    
    		<script>       
                   // Basic vars
    			var container, camera, controls, scene, renderer;
                   var model, texture;
                   var width, height;
                   
                   // Listeners
                   window.addEventListener('click',checkClick,false);
    
    			init(); 
    			animate();
    
    			function init() {
                        // Renderer  
                        container = document.getElementById('container');
                        width = window.innerWidth;
                        height = window.innerHeight;
    				renderer = new THREE.CanvasRenderer();
    				renderer.setSize(width,height);   
    				
    				container.appendChild(renderer.domElement);  
                        
                        // Camera, controls
    				camera = new THREE.PerspectiveCamera(60,width/height,1,500);
    				camera.position.z = 400;   
    				controls = new THREE.TrackballControls(camera,renderer.domElement);  
    				controls.rotateSpeed = 1.0;
    				controls.zoomSpeed = 1.2;
    				controls.panSpeed = 0.8;  
    				controls.noZoom = false;
    				controls.noPan = false;  
    				controls.staticMoving = true;
    				controls.dynamicDampingFactor = 0.3;   
                        controls.keys = [65];  
    				controls.addEventListener('change',render);
                        
    				// Scene
    				scene = new THREE.Scene();                        
                        
                        // Texture                        
                        texture = new THREE.Texture();   
    				var loader = new THREE.ImageLoader();
    				loader.addEventListener( 'load', function ( event ) {
    
    					texture.image = event.content;
    					texture.needsUpdate = true;
    
    				} );
    				loader.load( 'texture.jpg' );
                        
                        // Model                              
                        var loader = new THREE.OBJLoader();
    				loader.addEventListener('load',function(event) {  
    					model = event.content;      
    					model.traverse( function ( child ) {   
    						if ( child instanceof THREE.Mesh ) { 
    							child.material.map = texture;  
    						}                               
    					} );   
    					model.position.y = - 80;
    					scene.add(model); 
    				});
    				loader.load( 'body.obj' );
    			}
    
    			function animate() {
                        // Animate
    				requestAnimationFrame(animate);
    				controls.update();   
    			}
    
    			function render() {
                        // Render complete scene
    				renderer.render(scene,camera);  
    			} 
                   function checkClick() {
                        // On every click, check for body hit
                        console.log(event);
                        
                        // -- Versuch 1 --
                        /*var mouseX = event.offsetX || event.clientX,
                             mouseY = event.offsetY || event.clientY,
                             projector = new THREE.Projector();
    
                        var vector = new THREE.Vector3((mouseX / width) * 2 - 1,-(mouseY / height) * 2 + 1,0.5);
                        console.log(vector);
    
                        projector.unprojectVector(vector, camera);
     
                        var ray = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize()),
                        intersects = ray.intersectObjects(scene.children);
                        console.log(ray);*/
                        
                        /*
                        // -- Versuch 2
                        var x = ( event.clientX / width ) * 2 - 1;
                        var y = -( event.clientY / height ) * 2 + 1;
                        
                        var projector = new THREE.Projector();
                        var vector = new THREE.Vector3( x,y, 0.5 );    
                        
                        
                        console.log(vector);
                        // Line
                        var material = new THREE.LineBasicMaterial({
                             color: 0x0000ff
                        });  
                        var geometry = new THREE.Geometry();
                        geometry.vertices.push(camera.position);
                        geometry.vertices.push(vector);
                        
                        var line = new THREE.Line(geometry, material);
                        scene.add(line);  
                        
                        
    	               projector.unprojectVector( vector, camera );
                        console.log(vector);
    	               var ray = new THREE.Raycaster( camera.position, vector.sub( camera.position ).normalize() );
                        console.log(ray);
    
    	               var intersects = ray.intersectObject(scene.children);
                        console.log(intersects); */
                        
    
                        // -- Versuch 3
                        var x = ( event.clientX / window.innerWidth ) * 2 - 1;
                        var y = -( event.clientY / window.innerHeight ) * 2 + 1;
                        var Vector = new THREE.Vector3(x,y,0.5);
                        var projector = new THREE.Projector();
                        
                        console.log(Vector);
                        var raycaster = projector.pickingRay(Vector.clone(),camera);
                        var intersects = raycaster.intersectObjects(scene.children);
                        
                        if (intersects.length) {
                             console.log("found something");
                        }
                        else {
                             console.log("found nothing");
                        }
                        console.log("---");
                   }
    		</script>
    
    	</body>
    </html>


    Die ganzen console.log() sind zu Debug Zwecken da. Im Moment bin ich soweit, dass die X und Y Mauskoordinaten richtig übergeben werden, am Ende kommt trotzdem immer ein Found nothing, obwohl ich auf den Körper geklickt habe. Was mache ich falsch?

    Screenshot: http://tinypic.com/view.php?pic=2eol37r&s=5

    Achja, die 3 Versuche in der CheckClick() Function sind darauf zurückzuführen, dass ich eine ganze Menge zu dem Thema gegoogelt habe und verschiedene Beispiele gefunden habe, die ich einfach stumpf kopiert habe. Kein einziges funktioniert. Die 3 Versuche machen eigentlich genau das gleiche, benutzen aber unterschiedliche Funktionen, da sie wohl zu unterschiedlichen Zeiten entstanden sind - hab ich auch lange gebraucht um das rauszufinden. Die Three.js Bibliothek entwickelt sich ja immer weiter und das in dem Code derzeit nicht auskommentierte 3te Beispiel müsste der Code sein, der laut der neusten Version von Three.js funktionieren müsste. Tut er aber nicht.

    Was mache ich falsch? Vielen Dank für jegliche Hilfe.

    EDIT: Wer es selber ausporbieren möchte, hier ist das 3D Modell: http://www.file-upload.net/download-7709937/body.obj.html
  • in: Forum Machen

    geschrieben von midwar

    newgenerationjail schrieb:
    Naja ich habe jetzt ein anderen Anbieter Bekomm halt nicht so Assige Antworten


    Jeder bekommt das was er verdient. Du solltest dir in deinem eigenen Interesse ein wenig Gedanken über deinen Umgangston, sowie deine Bereitschaft die dir gegebenen Antworten zu verstehen / bearbeiten, machen.
  • in: Google Maps API v3

    geschrieben von midwar

    Hi,

    ich trage mich gerade mit dem Gedanken die Google Maps API zu benutzen, um Google Maps vernünftig in einem Projekt einzubauen. Ich habe mich jetzt ewig lange durch die JS Referenz von der API gequält und das ganze für gut befunden. Es bietet mir eine unglaublich große Vielfalt an Funktionen, die ich brauche. Nun treten allerdings einige Fragen auf:

    1. Ich hab mir so einen API Key für die API freigeschaltet auf mein Google Konto. Brauche ich den Key immer, oder kann man das ganze anonym laufen lassen?
    2. Kosten? Ist die Nutzung kostenlos, oder fallen irgendwann Kosten an? Wenn ja ab wann und wieviel?
    3. Gibt es eine maximale Anzahl an möglichen Nutzungen? Z.B: maximal 10 Anfragen pro Sekunde und nicht mehr als X am Tag?
    4. Wie steht es mit der Datensicherheit? Fängt Google irgendwelche Daten ab, um meine User auszuspionieren? Also: Jeder User, der die Seite aufruft, mit IP und allem was dazugehört? Daten über mich?
    5. Irgendwelche rechtlichen Sachen, die ich beachten muss, ab wann ich die API nicht benutzen darf?
    6. Und abschließend bitte ich noch um eine persönliche Meinung, ob ihr die Google Maps API auf eurer Seite benutzen würdet, oder nicht (Bitte mit Begründung!).

    Vielen Dank.
  • in: CSS Renderprobleme?

    geschrieben von midwar

    Hallo,

    ich versuche gerade einem selbstgebautem Forum ein wenig Design zu verpassen. Leider treten ein paar CSS Probleme auf, die ich mir nicht erklären kann. Diese treten in allen Browsern auf. Woran liegt das ganze und wie kann ich es lösen?

    Screenshot des gleichen Bereiches, nur vergrößert in Chrome (also STRG + Mausradscrollen):

    http://s7.directupload.net/images/130415/45ruoim7.png

    Jede Zeile ist eine tr der Klasse .BoardRow. Da in jeder Zeile mehrere Zellen vorhanden sind, benutze ich

    .BoardRow td {
         border: 2px dotted #4E6011;
    	background-image:-webkit-linear-gradient(bottom, #FFFFFF 33%, #EFEFEF 90%); /* Chrome, Safari */
    }


    um dem ganzem Forum diese gestrichelte Linie als Umrandung zu geben. Beim näher ranzoomen verändert sich dann immer die oberste Linie, wie ihr seht.

    Eine andere Frage nebenbei: Ich habe html, body und #Main jeweils height:100%; gegeben. body ist in html, und #Main ist der untere Teil von body, während #Navi der obere ist und eine feste Höhe hat. Wie erreiche ich nun, dass #Main den gesamten restlichen Platz (an der Höhe gemessen) ausfüllt? Wenn ich #Main einfach height:100%; gebe, berechnet er die 100% des gesamten Fensters und folglich muss man nach unten scrollen, was ich nicht will. Er soll einfach nur den kompletten Rest des Fensters ausfüllen. Wie geht das?
    Danke.
  • in: webseite mit forum verbinden

    geschrieben von midwar

    Das Forum welches du nennst, kenne ich vom Namen, habe es selber aber nie benutzt, daher nur ein paar Gedanken:

    - du solltest als Basis die Datenbank vom Forum benutzen, da sie sehr wahrscheinlich gut aufgebaut sein wird.
    - du benötigst um an die User ranzukommen Wissen über die Datenbank vom Forum. Wie sie aufgebaut ist, wo und wie die User gespeichert werden, wie du die Datenbank ansprechen musst, etc.
    - verzichte darauf selber eine Datenbank zu basteln für deine Homepage, sondern erweiter maximal die vom Forum. Achte aber darauf keine Inkonsistenzen einzubauen.

    Will heissen: das ganze wird eine Menge gefrickel. Fang erstmal einfach an und guck ob du auf deiner Seite eine Query an die ForenDB wie 'SELECT * FROM users' zum laufen bekommst.
  • in: HTML Seite ausrichten

    geschrieben von midwar

    Frames: LASS ES! Veraltet, unsauber und sollte niemand mehr benutzen.
    Divs: Wenn du eine moderne Seite erstellen willst, dann nimm divs aus denen du deine Seite strukturiert aufbaust. Hat heutzutage viele Vorteile.
    Tabellen: Tabellen solltest du nur dort einsetzen, wo sie dem Sinn nach auch hingehören. Das heißt wenn du viele zusammenhängende Informationen präsentieren musst, die wohlgeordnet rüberkommen sollen, dann nimm eine Tabelle - zb. wenn du aktuelle Wetterdaten darstellen willst. Sonst sind hingegen divs vorzuziehen.
  • in: Ich breuchte eine kleine erleuterung in hmtl

    geschrieben von midwar

    redslimestudios schrieb:
    Wie kann ich bilder viedeos, spiele und besucherzähler in HMTL machen?


    Besucherzähler in HTML gehen nicht. Dazu brauchst du mindestens PHP.
    Spiele ausgenommen von gammligen HTML 5 Spielen, die alleine schon sehr viel Aufwand benötigen auch nicht. Um Browsergames zu erstellen, brauchst du mindestens noch eine vernünftige Sprache wie PHP.
    Videos und Bilder einbinden kannst du hingegen mit HTML sehr wohl.
  • in: Array indexes als SQL Parameter

    geschrieben von midwar

    Du hast doch schon alle Informationen, die du benötigst. Anzeigen möchtest du dem user welche Seiten er ändern darf und genau diese Information hast du in deinem SESSION Array vorliegen. Das heißt du musst jetzt nur noch eine Query formulieren, die die Daten der Seiten ausliest, welche der User anzeigen / editieren darf.

    Also in etwa so:

    SELECT xy FROM pages WHERE id in ($rights)

    $rights ist dann das Array mit sagen wir 5,7,3,1 was heißt, dass er die Seiten 5,7,3,1 sehen darf.
  • in: PhpMyAdmin spackt rum

    geschrieben von midwar

    Hallo,

    habe gerade ein kleines Problem mit phpmyadmin:

    Da ich auf einem UniPC arbeite und hier nichts installieren kann, kann ich nur ein portable phpmyadmin bzw. XAMPP benutzen, was bisher immer gut funktioniert hat. Seit heute kriege ich aber IMMER folgende Fehlermeldung beim aufrufen der 'boards' Tabelle:

    Fatal error: Maximum execution time of 30 seconds exceeded in E:\xampp\phpMyAdmin\libraries\select_lang.lib.php on line 345

    Diese Fehlermeldung kommt aber 0,1 Sekunden nach klicken auf 'boards' in der Navigation im PHPmyadmin. Alle anderen Tabellen kann ich problemlos aufrufen, er lädt ein bisschen und dann sind sie da. Nur 'boards' will er mir nicht anzeigen und meckert immer mit der obigen Fehlermeldung. Woran liegt sowas? Habe Version 3.4.5

    Danke.

    EDIT: Thema bitte löschen. Schien wohl ein Cacheproblem zu sein. Browser neugestartet und schon gehts. -.-
  • in: nach login automatisch weiterleiten

    geschrieben von midwar

    tshaika schrieb:
    ich hab ein problem mit weiterleitung am myprofil

    und zwar ich ich habe eingloggin in index.php und es leitet weiter mit

    header("Location: myprofil.php?id=".$row['ID']);
    weiter nur wenn ich seitenkopf.php einbilde geht nicht mehr und bleibt bei index.php steihen kann mir jemand helhen die grundgerust ist mit html5 geschrieben


    danke


    Das hat man dir jetzt wahrscheinlich schon 10mal erzählt, aber nochmal: Wenn du header() zur Weiterleitung benutzt, dann darf bevor du header() verwendest KEINE AUSGABE VON CODE an den Client erfolgen. Das heißt es darf nichtmal ein <div> oder ähnliches benutzt werden. Benutze ERST header() und dann fügst du deinen HTML Code ein. Durch das einbinden von seitenkopf.php hast du wahrscheinlich eine Codeausgabe VOR header() erzeugt.
  • in: Überprüfen, ob Name in DB vorhanden ist

    geschrieben von midwar

    Benutze folgendes:

    SELECT name FROM users Where name = $name

    Und dann überprüfst du mit :

    If($result->num_rows >0) echo "bereits vorhanden";
  • in: dauerhafte Login

    geschrieben von midwar

    tshaika schrieb:
    mir ist noch was aufgefahlen

    wenn ich einlogge dann kommt index.php und nicht de/index.php?s=

    ich dennke dass ist das problemm


    Falls du gerade header() zum weiterleiten benutzt, steht in header() wohin er weiterleiten soll. Dann einfach index.php durch de/index.php?s= ersetzen.
  • in: einlogg user zählen

    geschrieben von midwar

    tshaika schrieb:
    Ja das code kenn ich bringt aber nicht besucher.txt
    lieber mysql!!!

    ich brauche code der in moment eingeloggte user zählt nicht [ b]Gesamt[/b]

    medwar das war andere das war mit farben am user die online sind
    dein code ist auch für gesamt Online hab ich auch gesehen


    Du verstehst es nicht, oder? Ich habe dir genau beschrieben, wie du herausfinden kann, wer GERADE online ist. Es empfiehlt sich den 3ten Punkt von mir nochmal zu lesen:

    "3. Wenn deine "Wer ist online?" Seite aufgerufen werden soll, schau einfach in der DB nach, wessen Timestamp z.B. weniger als 5min in der Vergangenheit befindet."

    So kannst du rausfinden, wer "gerade online" ist...
  • in: einlogg user zählen

    geschrieben von midwar

    Ne oder... Zu diesem Thema hast du in den letzten 4 Wochen doch schon mehrere Themen eröffnet? Ich hab beim überfliegen gerade mindestens eins gefunden, was sich um deine "Anzeige eingeloggter Benutzer" dreht. Naja egal:

    Google findet nichts?

    http://aktuell.de.selfhtml.org/artikel/programmiertechnik/useronline/!

    Und zu dem von aff3m1tw4ff3 gepostetem Code (der bei meiner Google Suche der erste Treffer war), kann ich nur sagen: NEIN! Wozu gibt es Datenbanken? Wieso alles in ein File reinhauen und sich dann dort mit dem Mist beschäftigen? Benutze eine Datenbank, schreibe dort alles rein was du benötigst und fertig.

    Dein Vorgehen zum Lösen des Problems zusammengefasst:

    1. Wenn sich ein User einloggt, schreib es in eine Datenbank. Und zwar WER online ist, und wann er sich eingeloggt hat.
    2. Wann immer ein eingeloggter User eine neue Seite auf deiner Homepage aufruft, aktualisiere seinen "online timestamp".
    3. Wenn deine "Wer ist online?" Seite aufgerufen werden soll, schau einfach in der DB nach, wessen Timestamp z.B. weniger als 5min in der Vergangenheit befindet.
  • in: Login für den Homepage Verantwortlichen erstellen

    geschrieben von midwar

    bitspyde schrieb:
    midwar schrieb:
    bitspyde schrieb:
    Hallo Leute,
    Darf man ein Login für den Homepage Verantwortlichen erstellen?


    Gegenfrage: Wieso sollte man das nicht tun dürfen?

    Natürlich kannst du das tun.

    Weil es den Server überlasten könnte.

    Aber trotzdem danke


    Ein einfaches login script in php wird niemals die lima Server überlasten.
  • in: Login für den Homepage Verantwortlichen erstellen

    geschrieben von midwar

    bitspyde schrieb:
    Hallo Leute,
    Darf man ein Login für den Homepage Verantwortlichen erstellen?


    Gegenfrage: Wieso sollte man das nicht tun dürfen?

    Natürlich kannst du das tun.
  • in: Browsergame hosten

    geschrieben von midwar

    ultimate-bravery schrieb:
    Meinst du mit Umfang die Größe der Dateien?

    Also im Moment ist der Ordner mit allen Dateien, Bildern und auch PS Dateien ca 78 MB groß.

    Wäre es denn sinnvoll, mir z.B. einen gebrauchten Laptop zu besorgen, den ich Tag und Nacht anlassen kann, um das Browsergame über diesen laufen zu lassen? Meine Internetanbindung ist relativ gut.


    Du solltest wirklich davon absehen soetwas privat zu hosten. Denk doch mal an die Verfügbarkeit. Du musst sicher stellen, dass dein Browsergame immer unter der Adresse www.mein-brosergame.de erreichbar ist. Also muss im DNS diese Domain mit deiner IP verknüpft werden. Ich kann mir allerdings nicht vorstellen, dass du zu Hause eine feste IP hast - heutzutage hat man eigentlich immer eine dynamische IP und dann kannst du das zu Hause hosten eigentlich relativ vergessen es sei denn du würdest den Eintrag jedes mal neu anpassen.

    Abgesehen davon: Wie stellst du sicher, dass du 100% verfügbar bist? Was passiert bei einem Stromausfall? Was bei einem Routerausfall? Hast du einen ErsatzPC zu Hause, der automatisch angeschmissen wird, wenn dein Haupt-"Server" sich verschluckt? Abgesehen davon: 78 MB? Wenn dein Spiel auch nur 100 Spieler hat und jeder von denen 1x am Tag sich in deinem Browsergame einloggt, hättest du 78x100 MB Uploadvolumen, die du über deine Internetleitung verschicken müsstest. Das sind 7.8 GB - und jetzt sag mir bitte nicht, dass deine Uploadbandbreite sowas mal eben wegsteckt...

    Such dir einen kostenpflichten Anbieter, der alle deine Anforderungen für relativ wenig Geld erfüllt und du bist zufrieden. Hier auf lima wäre das ganze bei 78MB allerdings glaube ich auch nicht gut aufgehoben. (Das die ganzen 78MB jedesmal abgerufen werden pro Login setze ich bei dem was ich schreibe vorraus).
  • in: [PHP] Template System, Parameter & Scope

    geschrieben von midwar

    hcms schrieb:
    lange rede kurzer sinn:
    wenn du variablen innerhalb von funktionen verfügbar haben willst würd ichs mal mit
    global $foo
    probieren...


    Schon klar, aber mir wurde oft gesagt, dass ich global unterlassen soll, da es "böse" ist. ;)

    Ich möchte an dem Projekt was lernen, nicht immer den gleichen Murks machen. Ich möchte daran lernen, wie ich es besser machen könnte und das schließt SAUBER mit ein. Global hingegen erachte ich nicht als sauber.
  • in: [PHP] Template System, Parameter & Scope

    geschrieben von midwar

    Hi,

    ich habe für ein eigenes Projekt ein ganz einfaches Templatesystem geschrieben. Hierbei gehe ich so vor, dass am Anfang von index.php alle Grunddaten eingebunden werden (also include basic.php, variables.php und connect.php) und anschließend je nachdem welche Seite über GET angefordert wurde das "Logic File" der entsprechenden Seite ausgeführt wird. Dieses arbeitet die eigentlich Logik ab, Datenbankzugriffe, Eingabenüberprüfung, etc. und sendet mit return einen Rückgabewert zurück, ob das ganze geklappt hat, was geklappt hat, Infotexte, etc. Anschließend wird das entsprechende Templatefile eingebunden in index.php und die per return zurückgegebenen Daten aus dem "Logic File" werden im Templatefile dargestellt. So weit so gut.

    Da ich nun jedesmal ein bestimmte File XY aufrufen muss per include und überprüfen muss, ob dies gelingt per Exceptions, habe ich das ganze in eine eigene Funktion ausgelagert, damit ich einfach nur $Basic->GetFile($File); aufrufen muss. Nun habe ich aber das Problem, dass die Variablen in index.php vorher immer für die entsprechende include Direktive funktioniert haben, da sie ja im richtigen Scope waren. Wenn ich in index.php geschrieben habe include("home.php"); konnte home.php immer auf $Connect zugreifen, sollte dieses gebraucht werden, da ich es ja ganz am Anfang über connect.php eingebunden habe. Mit der neuen Funktion, liegt $Connect natürlich nicht mehr im Scope der Funktion $Basic->GetFile(); und ich kann das ganze nicht mehr so weiterführen wie vorher. Dann habe ich anschließend einen Riesenaufwand betrieben und angefangen zusätzliche Parameter einzuführen. Nun sieht GetFile() so aus:

    $Basic->GetFile("home.php",$Connection,'Connection');

    Wenn home.php die Variable $Connection aus dem Scope von index.php benötigt, übergebe ich sie einfach mit. Der Parameter danach teilt der Funktion einfach mit unter welchem Namen die Variable $Connection verfügbar sein soll (In dem Fall soll $Connection als 'Connection' verfügbar sein). Dies ist nötig, da ich vorher nicht weiß welche Variablen das $File benötigt und sich das von Aufruf zu Aufruf wandelt. Manchmal benötigt sie 3 Variablen, dann sieht der Aufruf so aus:

    $Basic->GetFile($File,$Connection,'Connection',$Var2,'Var2',$Var3,'VAR3ASTEST');

    Das ganze funktioniert zwar jetzt und ich habe in index.php viel Platz gespart, da ich jetzt nicht ewig einzeln die Seiten jedesmal aufrufen muss, testen muss ob die Verfügbar waren, Exceptions abfangen, etc, aber das ist trotzdem keine tolle Lösung. Wenn ich zu dem Projekt später ein Forum hinzubastel, würde jedes mal später von allen Variablen die in $File benötigt werden eine Kopie angefertigt werden und das ganze irgendwann sehr Performancelastig werden. Was soll ich jetzt also machen?

    1. Das ganze Rückgängig machen? Fände ich nicht so toll, da es ja das DRY Prinzip gibt und wieso sollte ich an allen Stellen in index.php den gleichen Code jedes mal neu ausführen, wenn ich das ganze in einer Funktion besser machen könnte?
    2. Es so lassen wie es ist? Dann würde das ganze irgendwann sehr aufgeblasen werden, wenn die übergebenen Variablen sehr groß werden - wie z.B. bei dem noch einzubauendem Forum. Außerdem ist das meiner Meinung nach keine saubere Lösung.
    3. Die Variablen als Referenz übergeben? Dann würde keine Kopie angelegt und ich würde auf der gleichen Variable arbeiten.
    4. Habt ihr ne andere Lösung, um das Problem zu umgehen? Prinzipiell geht es ja nur um das Problem, dass ich das includen eines Files und überprüfen, ob das geklappt hat in eine Funktion auslagern will. Dies geht nicht einfach so, weil die Variablen in index.php nicht in der Funktion selber zur Verfügung stehen. Wie lösen?

    Danke :)
  • in: url immer mit http

    geschrieben von midwar

    webfav schrieb:
    ok, vielen Dank

    also && (AND) anstatt || (OR) .... alles klar ... bei OR ist hier immer eins von beiden erfüllt :oO
    ... anstatt dem === FALSE kann ich doch auch ein ! vor strpos() setzen, oder ?


    Ja. In http://www.php.net/manual/en/function.strpos.php wird gesagt: "This function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE. Please read the section on Booleans for more information. Use the === operator for testing the return value of this function." Gleiches gilt für !=, aber nicht für !. Nehmen wir an dir wird http://test.de übergeben, dann findet sich http:// an der Stelle 0, folglich gibt strpos() den int(0) zurück. 0 ist ungleich true (was du mit dem Operator ! (Not) überprüfst) und somit kannst du ! verwenden. != jedoch nicht.

    Ob eine URL/eMail/etc valide ist, kann man mit http://www.php.net/manual/en/function.filter-var.php prüfen. Bisher hatte ich damit ausschließlich gute Erfahrungen.

    Wie man eine Seite anpingt weiß ich nicht so genau, habe aber bei Googeln das hier gefunden: http://stackoverflow.com/questions/1239068/ping-site-and-return-result-in-php
  • in: url immer mit http

    geschrieben von midwar

    Du hast einen Denkfehler. Du benutzt || in deiner if Bedingung, was OR heißt. Das bedeutet egal, ob etwas oder egal was fehlt, es wird immer einer der beiden Fälle eintreten und damit wird immer http:// vornedran gehängt. Wenn du http://test.de eingibst, dann wird für das erste strpos 0 zurückgegeben, weil an der Stelle 0 http:// auftritt. Für das zweite strpos() wird false zurückgegeben, weil eben kein https:// vorhanden ist. Und somit wird auch http:// angehängt. Du musst statt || ein and verwenden (&&).

    EDIT: Es reicht ein trim(), du musst kein zusätzliches chop() verwenden, da trim() ein chop() beinhaltet.
  • in: Minecraft - Was kann man noch alles bauen

    geschrieben von midwar

    grepomax schrieb:
    das ist eine coole idee aber selber stehe ich noch vor einer Herrausforderung...:

    das display... (doofes ding^^)

    naja gut ich kann ja mal schauen!

    Auf jeden fall DANKE!

    PS: kann einer mir einen link schicken, wo erklärt wird wie man ein display baut?


    LG grepomax


    Ich habs so gelöst, dass in 4 Ebenen Sandblöcke mit Pistons hin und her geschoben wurden. In der obersten Etage waren die Sekunden, hie hat jeder Sandblock 5 Sekunden repräsentiert. Waren die 12 Sandblöcke = 60 Sekunden voll, wurden sie hinten nach unten geschubst und einer von den 12 viel in die Etage dadrunter, wo er in der Minutenetage landete und nun 5 Minuten repräsentierte. War die Minutenetage (=60 Minuten) voll, vielen alle nach unten und einer in die Stundenetage, etc.
  • in: Minecraft - Was kann man noch alles bauen

    geschrieben von midwar

    Bau ne komplett funktionsfähige Uhr mit Redstone, die:

    a) die Zeit sekundengenau mitzählt
    b) nach 24h sich resettet
    c) die Zeit grafisch anzeigt

    Ich selber habe dafür einige Wochen gebraucht ...
  • in: Ablauf System.

    geschrieben von midwar

    infinitywar schrieb:
    Die Frage wollte ich auch eben stellen, habe aber das Topic gesehen.


    @midwar die Art ist kompliziert denke ich.

    ___

    Hat einer vielleicht eine andere Idee?


    Dir ist schon klar, dass das die einfachste Methode ist? Nenn' mir eine, die einfacher ist. Irgendwo abspeichern WANN user XY das gekauft hat musst du -> DB. Und irgendwo überprüfen, ob das abgelaufen ist, musst du auch. Also ist das die einfachste Lösung. Des Weiteren kannst du gleich die Tabelle aufräumen, wenn bei demjenigen die Premiumphase abgelaufen ist.
  • in: Ablauf System.

    geschrieben von midwar

    Leg ne Tabelle an, in der eingetragen wird:

    - User, der sich Premium erworben hat
    - Zeit, wann er es getan hat (mit microtime())

    Wenn nun ein User versucht eine Premiumfunktion aufzurufen, testest du, ob er Premiumstatus besitzt. Also guckst du, ob er in der Tabelle eingetragen ist, die ich gerade beschrieben habe UND, ob HEUTE minus der eingetragene Zeitraum weniger als 30 Tage beträgt. Wenn ja, hat er Premium, wenn nein lösch ihn aus der Tabelle.
  • in: Wie schütz man sich richtig vor einer SQL Injection

    geschrieben von midwar

    infinitywar schrieb:
    Ich danke euch für die Antworten und eine Frage habe ich noch, ist Mysqli schneller/sicherer als mysql?


    Auf prepared Statements bezogen: Ja, wenn du den einmal vorbereiteten Ausdruck mehrfach ausführen möchtest (und prepared Statements willst du ja glaube ich verwenden, um SQL-Injections auszuführen). Willst du hingegen dein Statement nur einmal in die DB eintragen, so ist es etwas langsamer, da an die DB ja zwei Abfragen geführt werden: 1. Prepare und 2. Execute.

    Ich meine mich aber auch erinnern zu können, dass mysqli allgemein schneller läuft (hier bin ich mir aber nicht so sicher)!
  • in: Ostereiersuche

    geschrieben von midwar

    kicken schrieb:
    midwar schrieb:
    Kennst du dich mit mysql aus? Du wirst nicht drumrum kommen in einer Datenbank zu speichern wieviele Eier ein User schon gefunden hat. Außerdem musst du den User identifizieren können, dafür solltest du ein Login System in PHP bauen. Also musst du hierfür auch PHP können.

    Das ganze könnte dann so funktionieren, dass wenn ein User eingeloggt ist und ein Bild findet, welche du mit <img src="" /> irgendwo auf deiner Homepage platzierst, auf eine neue Seite Egg.php geleitet wird, die den Datenbankcounter um 1 erhöht für den User. Sicherheitshalber solltest du für jedes neue Ei auch noch eine ID vergeben die nur gültig ist, bis das Ei gefunden wurde, sonst kann man ja die Egg.php immer wieder aufrufen und den Zähler ins unmögliche steigern.

    Wird also ein bisschen Aufwand für ein "kleines" Spiel. ;)


    dass alles wuste ich schon... mir ist nur nicht klar wie man die bilder ZUFÄLLIG erscheinen lässt...


    3 Zufallszahlen in JS erzeugen mit Math.random(), diese sind die X und Y Koordinate, sowie die Kontrolle, OB das Ei erscheint. Mit position:absolute setzt die das Ei, WENN es erscheinen soll auf die zufälligen Koordinaten?
  • in: Ostereiersuche

    geschrieben von midwar

    Kennst du dich mit mysql aus? Du wirst nicht drumrum kommen in einer Datenbank zu speichern wieviele Eier ein User schon gefunden hat. Außerdem musst du den User identifizieren können, dafür solltest du ein Login System in PHP bauen. Also musst du hierfür auch PHP können.

    Das ganze könnte dann so funktionieren, dass wenn ein User eingeloggt ist und ein Bild findet, welche du mit <img src="" /> irgendwo auf deiner Homepage platzierst, auf eine neue Seite Egg.php geleitet wird, die den Datenbankcounter um 1 erhöht für den User. Sicherheitshalber solltest du für jedes neue Ei auch noch eine ID vergeben die nur gültig ist, bis das Ei gefunden wurde, sonst kann man ja die Egg.php immer wieder aufrufen und den Zähler ins unmögliche steigern.

    Wird also ein bisschen Aufwand für ein "kleines" Spiel. ;)
  • in: Trying to get property of non-object

    geschrieben von midwar

    1. Wieso cleartype? Ich speicher sie als hash in der DB, lese den Hash aus und vergleiche den dann mit dem Hash des eingegebenen PWs.
    2. Hm, ja da könnte ich es auch hinpacken.

    "somit macht man manche sachen viel angreifbarer, wenn man das so aufschlüsselt. außerdem erzeugst du unnötige rechenlast."

    Den Satz von dir verstehe ich ehrlich gesagt nicht. Meinst du damit, dass wenn ich nach "Falsches PW", "Falscher Nickname", etc. aufschlüssel der User dann Rückschlüsse ziehen kann und es so theoretisch angreifbarer wird oder was genau meinst du damit?
  • in: Trying to get property of non-object

    geschrieben von midwar

    Hallo,

    ich hab mal kurz eine Frage zu diesem Code:

    $Result = $Database->Query("SELECT password FROM users WHERE name ='$User'");
              if($Result !== false and ($Result->num_rows === 1)) {
    			// User found
    			$Row = $Result->fetch_assoc();
    			$DB_PW = $Row['password'];
    			$PW = hash("sha512",$PW);
    			
    			if($PW === $DB_PW) {
    			     // User gave the correct password, log him in
    				$_SESSION['user'] = $User;
    			}
    			else {
    				// Wrong password
    				$D['Data'][] = "Das von Ihnen eingegebene Passwort war falsch!";
    			}
    		}
    		else {
    		     // User not found
    			throw new Exception("User not found!");
    		}


    Eigentlich ja ganz einfach und nicht allzu aufwendig dieses Loginscript. Allerdings: Wenn die Query gelingt und er einen derartigen User findet, sendet er (da mysqli) ein Object vom Typ mysql_result zurück. Will heißen $Result ist dann vom Typ object. Andernfalls ist es einfach false, da die Query ja fehlgeschlagen ist. Nun möchte ich prüfen, ob was gefunden wurde, dazu darf $Result nicht false sein und es muss ja genau einen User gegeben haben der so heißt. Also darf $Result->num_rows auch nur 1 betragen. Problem: Wenn genau einer gefunden wurde, klappt es. Wenn niemand gefunden wurde (nicht existenter Username wurde abgefragt) kommt ein Notice, Trying to get property of non-object, da zu diesem Zeitpunkt ja $Return kein Object ist. Wie kann ich das nun geschickt lösen? Einfach ein @ dranklatschen zur Fehlerunterdrückung gefällt mir nicht. Und ein verschalten in 2 if's gefällt mir auch nicht (also erst gucken ,obs != false ist und dann obs num_rows === 1 hat). Wie kann ich das nun geschickt lösen?
  • in: filter_var() - filter_validate_email

    geschrieben von midwar

    hcms schrieb:
    ggamee schrieb:
    Das
    FILTER_SANITIZE_EMAIL
    steht für ganz andere Filter als eine EMail Adresse. Damit testest du EMail Header auf ihre Gültigkeit.
    hmm das hab ich anders verstanden:
    http://www.w3schools.com/php/filter_sanitize_email.asp



    ggamee schrieb:
    bei@spiel ist eine gültige EMail Adresse nach dieser Funktion (wenn das noch nicht behoben wurde)
    wurde wohl behoben denn bei@spiel geht nicht durch wenn ichs teste.



    hat jemand denn vielleicht nen hieb- und stichfesten regex für alle möglichen emailadressen nach RFC-Norm?


    Ich rate dir: lass es bei dem was du hast. Das große Problem ist, dass das offizielle Regex welches alle möglichen eMailkonventionen einhält EXTREM lang ist. Und mit Extrem meine ich Extrem - als ich das vor einigen Monaten mal gelesen hatte, ist mir glatt die Spucke weggeblieben. Das was du da hast, müsste vollkommen reichen.

    EDIT: Das hier ist das offizielle Regex für eMails:

    (?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])


    Quelle: http://www.regular-expressions.info/email.html
  • in: Mehrere Werte einer Spalte auslesen

    geschrieben von midwar

    webdesignerin schrieb:
    Hallo midwar, :wave:

    also eigentlich habe ich da einen Übersichtsseite mit dem Namen "Fantasy" und möchte, dass alle CD's oder DVD's angezeigt werden, die u.a. Fantasy als Genre haben. Wenn es nicht zu viel verlangt ist: Könntest Du das mit Deinem Code-Vorschalg ein bisschen ausführlicher erläutern oder einen längeren richtigen Beispielcode posten? Denn bis jetzt hatte ich noch nichts mit der explode-Funktion zu schaffen (ist mir völlig neu). Herzlichen Dank!


    Gruß,
    webdesignerin :angel:


    Der Vorschlag von hackyourlife funktioniert natürlich, für alle die ein ähnliches Problem haben noch mein Vorschlag von gestern in Code ausgeschrieben:

    // Auslesen der ganzen genres Spalte
    $genres = array();
    $result = mysql_query("SELECT genres FROM table");
    while($row = mysql_fetch_assoc($result)) {
    $genres[] = $row['genres'];
    }
    
    // Aufteilen der $genres Werte in seine Einzelteile
    
    $split = array();
    foreach($genres as $genre) {
    $temp = explode(",",$genre);
    $split[] = $temp;
    }


    Nicht getestet, einfach runtergeschrieben. Das Skript liest erst alle genre Spalten aus, danach benutzt es explode(), um die Werte in der Spalte genre aufzuteilen. Wenn du in genre Test1,Test2,Test3 stehen hast und alle mit einem Komma getrennt sind, dann sorgt explode(",",$genre); dafür, dass wir als return Wert ein Array haben, dass in $array[0] den Wert Test1 in $array[1] den Wert Test 2 und in $array[2] den Wert Test 3 hat. Danach kannst du das ganze dann weiterverarbeiten.

    (http://www.php.net/manual/de/function.explode.php)
  • in: Mehrere Werte einer Spalte auslesen

    geschrieben von midwar

    Les den Wert aus und trenn den ausgelesenen Wert dann mit explode?

    Wenn dein ausgelesener Wert so aussieht: "SciFi,Fantasy,Ganztollesgenre", dann mach explode(",",$Wert); und schon hast du die Teile in einem Array und fertig ausgelesen.
  • in: mysql zwei mal count in einer abfrage ?

    geschrieben von midwar

    Altenativ könntest du noch multi_query verwenden, so wird das ganze zu "einer" pseudo-Query zusammengeführt.
  • in: php html output

    geschrieben von midwar

    Hallo,

    ich arbeite gerade an einem neuen Projekt und habe vor hier neugelernte Sachen anzuwenden wie Exceptions, vernünftiges Error Handling, etc. Bisher habe ich z.B. sowas:

    if(!empty($_POST['username']) && !empty($_POST['password']) && !empty($_POST['password2']) && !empty($_POST['email'])) {
    	// If data is given
    	$User = $Database->Link->real_escape_string($_POST['username']);
    	$PW = $Database->Link->real_escape_string($_POST['password']);
    	$PW2 = $Database->Link->real_escape_string($_POST['password2']);
    	$eMail = $Database->Link->real_escape_string($_POST['email']);
    	
    	if($PW === $PW2) {
    		// Both passwords were the same, so go and insert the new user into the database
    		try {
                   $Database->Query("INSERT INTO users(name,email,password,hash) VALUES ('$User','$eMail','$PW','test')");
                   $Info = "Ihr Benutzername wurde angelegt. Sie können sich nun einloggen!";
    			$Basic->InfoOutput($Info);
    		}
    		catch(Exception $e) {
    		     // When the Query failed, catch it and log Errors
    			$Basic->ErrorLog($e->getMessage(),$e->getCode(),"REGISTER");
    			$Info = "Es ist ein Fehler aufgetreten. Bitte versuchen Sie es nochmal!";
    			$Basic->InfoOutput($Info);
    		}
    	}
    	else {
    		// Passwords didn't match, output info
    		$Info = "Ihre Passwörter stimmen nicht überein. Bitte stellen Sie sicher, dass sie beide Male das selbe Passwort eingegeben haben!";
    		$Basic->InfoOutput($Info);
    	}
    }
    else {
    	// No data given, show form
    	echo '
    	<form action="index.php?s=register" method="POST">
    		Benutzername: <input type="text" name="username" /><br />
    		Passwort: <input type="password" name="password" /><br />
    		Passwort wiederholen: <input tpye="password" name="password2"><br />
    		eMail Adresse: <input type="text" name="email"><br />
    		<input type="submit" value="Registrieren">
    	</form>
    	';
    }


    und

    class Basic {
    	public function InfoOutput($Info,$AdditionalData = false) {
    		// Basic function to output Info to the User, can add additional Data to describe the problem
    		echo '<div class="InfoOutput">'
    		. $Info .
    		'</div>';
    		
    		if($AdditionalData !== false) {
    		     // If there is some additional Data, output it as well
                   echo '<div class="InfoOutput">'
    			. $AdditionalData .
    			'</div>';
    		}
    	}
    	public function ErrorLog($Error,$ErrorCode = "undefined",$Content = "undefined") {
    	     // Basic function to log Errors
    	     $Time = time();
    	     
    	     $Message = "
    			Error: $Error <br />
    			ErrorCode: $ErrorCode <br />
    			Content: $Content <br />
    			User: --- <br />
    			Time: $Time <br /><br />
    		";
    		error_log($Message,3,"errors/exceptions.txt");
    	}
    }


    Klappt bisher alles ganz gut, wenn ich Informationen an den User ausgeben möchte, habe ich dafür eine Funktion, wenn Fehler auftreten, kann ich diese catchen und die Fehler vernünftig loggen. Was mich jetzt noch stört ist, dass ich HTML Code in meinem PHP Code nach wie vor mit echo "<ganzvielhtml>"; ausgebe. Das sieht irgendwie unschön aus und da ich versuche neue Sachen zu lernen wüsste ich jetzt gerne ob es andere Möglichkeiten gibt das auszugeben, andere Möglichkeiten gibt Content von Verarbeitungslogik zu trennen. Klar, ich könnte es mit der Heredoc Syntax ausgeben, die mag ich aber nicht, dann könnte ich es noch mit dieser Kurzfarm <?= $test => ausgeben, die ist aber pre 5.4 nicht standardmäßig aktiviert. Wie würdet ihr hier jetzt eine Funktion schreiben, die einfach und gut den gewünschen HTML Code ausgibt und es dabei bewerkstelligt Content von Verarbeitungslogik zu trennen?

    Danke.
  • in: Mehrsprachige seite

    geschrieben von midwar

    tshaika schrieb:
    hi
    ich habe gesten alles gemacht was du wollen mit verlinken ist auch erledigt ####

    aber est fehlt was

    aber index.php lauft alles

    aber bei /de.index.php und ru/index.php fehlt mir noch seitenkopf und seienfuß

    er sid so aus

    http://tshaika.lima-city.de/bild.JPG


    Die Anmerkung, die dir Fred zu deinem Verhalten gegeben hat, hast du aber schon gelesen?

    Und wenn dir das egal ist, rate ich dir nochmal sämtliche Antworten durchzulesen (und zu verstehen), die dir bisher gegeben wurden. Da wurde dir mehrfach ausführlich beschrieben, wie du in verschiedenen Ansätzen das realisieren kannst, was du vorhast.

    Es bringt nichts, wenn wir dir hier fertige Scripte auftischen, lern es selber! Wir haben dir hier genügend ausführliche Antworten gegeben. Abgesehen davon versteht man deine Frage (mal wieder) nicht wirklich ...

    EDIT: Ich hab mir jetzt zum 4ten mal deine "Frage" durchgelesen und jetzt GLAUBE ich verstanden was du meinst:

    Wenn du dein ru/index.php aufrufst, dann rufst du es komplett neu auf, also steuerst die Seite selber an. Und da du nehme ich an in ru/index.php keinerlei Seitenkopf und Seitenfuss definierst hast, wird auch keiner angezeigt. Was du vorhast ist doch die entsprechende Sprachseite in deinem allgemeinem Konstrukt einzubinden, also deiner index.php. Dementsprechend musst du je nachdem welche Sprache gerade ausgewählt wird die jeweilige Seite in deine index.php einbinden. Dann befindet sich der jeweilige Sprachinhalt nämlich auch in index.php - und dort ist ja wohl auch dein Seitenkopf und Seitenfuss definiert. Hurraa, schon haben wir dein Problem gelöst. Allerdings auch nur "falls" ich dich richtig verstanden haben sollte.
  • in: frage zu ssh mit php

    geschrieben von midwar

    leopold2104 schrieb:
    und bitte passt eure scripts bitte meibem dateipfad an Das währe echt super ;)


    Nicht Zielführend, muss aber sein: "Habe Mut dich deines eigenen Verstandes zu benutzen."
    Das Ding hier wird demnächst sowieso aufgrund fehlender Diskussionslage ins Spam-Forum verschoben werden. Schließlich gehts hier nur um "Wer baut mir das schnell? Ich kann das nicht."
  • in: Mehrsprachige seite

    geschrieben von midwar

    tshaika schrieb:
    es immer noch nicht richtig

    die seite heißt

    http://tshaika.lima-city.de/ru/index.flang_ru.php

    und der verlinke mich auf

    http://tshaika.lima-city.de/index.php?lang=ru




    Natürlich verlinkt der auf index.php?lang=ru... Index.php ist IMMER die Seite, auf der du dich bewegst - du verlässt niemals die index.php. Jedoch werden abhängig von den gewählten GET Parametern verschiedene Inhalte auf index.php eingebunden. Stell dir vor du möchtest auf deiner index.php Äpfel angezeigt haben und hast in index.php die Abfrage

    if(isset($_GET['frucht']) && $_GET['frucht'] == 'apfel') {
    include("apfel.php");


    Dann wird bei dir auch ein Apfel angezeigt, wenn du index.php mit dem Parameter frucht=apfel aufrufst, was dann so aussieht:

    index.php?frucht=apfel

    So um nun auf dein Problem zurückzukommen:

    Wir haben dir in vorherigen Posts gezeigt wie es geht. Und wenn du unsere Tipps umsetzt, dann hast du eben genau das Erscheinungsbild, wie du es beschrieben hast. http://tshaika.lima-city.de/index.php?lang=ru Bedeutet hier dann einfach, dass du auf der Seite index.php bist, die mit dem Parameter lang=ru aufgerufen wurde, also mit der Einstellung, dass der Benutzer deine Homepage bitte auf Russisch angucken möchte - und wir haben dir auch gesagt, dass du den Link zu index.php mit genau DEM Parameter natürlich nur verlinken sollst, wenn man auf die Russische Flagge klickt. Würde ja wenig Sinn anders machen.

    Was du glaube ich noch nicht begriffen hast, ist, dass du die jeweiligen Seiten nicht als "http://tshaika.lima-city.de/ru/index.flang_ru.php" abspeicherst, sondern immernoch als lang_NAME.php. index.php hat NICHTS im Dateinamen verloren. Zumindest wenn du dich an das von uns vorgeschlagene System hälst.
  • in: Benutzerliste

    geschrieben von midwar

    tshaika schrieb:
    hcms schrieb:
    hi,

    zb so:
    <?php
    	echo '<div style="height:400px;overflow:auto;">';
    	echo '<p>Benutzerliste<br><br>';
    	
    	$sql = 'SELECT 
    			ID, 
    			SessionID, 
    			Nickname, 
    			Letzte_Aktion 
    		FROM 
    			User 
    		ORDER BY 
    			Nickname ASC
    	'; 
    	$result = mysql_query($sql) or die("<pre>\n".$sql."</pre>\n".mysql_error()); 
    	while($row=mysql_fetch_assoc($result)) { 
    		if($row['SessionID'] and (time()-60*2 < $row['Letzte_Aktion']))  {
    			$online = 'green'; 
    		}else {
    			$online = 'red'; 
    		}
    	}
    	
    	echo '<a href="profil.php?id='.$row['ID'].'" style="color:'.$online.'">'.$row['Nickname'].'</a><br>'; 
    	echo '</p>';
    	echo '</div>';
    ?>


    er zeigt keine Benutzer :-o

    aber ich habe bessere idee

    kann man machen ?

    in seiten box nur die benutzer zeigen die nur Online sind ?

    :thumb:



    Wenn er dir keine Benutzer ausgibt, dann hast du irgendeinen Fehler im Code. Such ihn! Hier wird dir keiner alles Stück für Stück vorkauen, bis er / sie dir eine fertige Lösung produziert hat. Das musst du schon selber machen. Ist in deiner Datenbank überhaupt ein Benutzer / mehrere hinterlegt? Steht eine Verbindung zur Datenbank? Hast du dir zum Testen ausgeben lassen, was die Query aus der DB ausliest? Hast du dir mit var_dump() die Variablen in deinem Skript zum Testen ausgeben lassen? Was hälst du von error_reporting(E_ALL);?

    Und um auf deine andere Frage zu antworten: Natürlich kannst du dir in deiner Benutzerliste auch nur diejenigen Anzeigen lassen, die Online sind. Wie das geht ist ganz einfach, du hast alle Voraussetzungen dafür bereits in deinem bisherigem Code geschaffen. In

    if($row['SessionID'] and (time()-60*2 < $row['Letzte_Aktion']))  {
                $online = 'green'; 
            }else {
                $online = 'red'; 
            }


    legst du fest wer als Online gilt und wer nicht. Benutze diese Information, um aus deiner Benutzerliste diejenigen nur anzuzeigen, die du selber als online kategorisiert hast. Logisch gesprochen:

    if($BenutzerListe[$i]["online"] == true) {
    echo $BenutzerListe[$i]["Name"]; 
    }


    So oder so benötigt das ganze ein bisschen Aufwand deinerseits - keiner wird dir hier alles Zusammensetzen.
  • in: Benutzerliste

    geschrieben von midwar

    tshaika schrieb:
    midwar

    nein nicht die erste 20 benutzer zeigen

    ab 20 benutzer soll seitenbox scrollen


    Du hast also eine Seitenbox, in der du das alles ausgibst. Dann sorge mit der CSS Eigenschaft overflow dafür, wie mit übergroßem Inhalt umgegangen werden soll, nachdem du der Seitenbox eine feste Größe (width und height) zugewiesen hast. Hast du diese 3 CSS Werte sinnvoll festgelegt, wird auch ab dem 20. Benutzer gescrollt.
  • in: Benutzerliste

    geschrieben von midwar

    Wenn ich dich richtig verstanden habe, möchtest du ab einer bestimmten Anzahl von Benutzern, die du hast / aus der DB ausgelesen hast, dass nur ein bestimmter Teil dieser User angezeigt wird. Sagen wir 30 Benutzer sind in der DB eingetragen und die ersten 20 davon möchtest du anzeigen lassen. Dann musst du zuerst schauen wie viele du ausgelesen hast - immerhin liest du mit deiner jetzigen Query ALLE Benutzer aus, die du hast. Das tust du mit mysql_affected_rows() und schaust dann einfach ob die Anzahl > 20 liegt. Wenn dem so ist, starte eine for Schleife, mit der du nur die ersten 20 User ausgibst. Eine andere und bessere Möglichkeit wäre deine Query so anzupassen, dass direkt nur die ersten 20 User ausgelesen werden. Das erreichst du mit LIMIT. Einfach danach googeln.

    Und wie du das ganze senkrecht bekommst? Einfach <br> benutzen zwischen den einzelnen Einträgen oder was genau verstehe ich da jetzt nicht?

    EDIT: Noch der Hinweis, dass die normale MySQL Erweiterung deprecated ist seit PHP 5.5 und in (ferner) Zukunft entfernt wird, weswegen du auf MySQLi umsteigen solltest.
  • in: Mehrsprachige seite

    geschrieben von midwar

    tshaika schrieb:
    midwar schrieb:
    tshaika schrieb:
    hcms schrieb:
    das
    ?lang=de
    stellt nicht den dateinamen dar, sondern ist ein get-parameter mit dem die seite aufgerufen werden kann.
    wenn du die seite zb "home.php" nennest kannst die seite auch mit dieser url aufrufen: "home.php?lang=de".
    dann wird normal die seite home.php aufgerufen in der es dann den get-parameter "lang" gibt, mit dem wert "de" - und genau das wird ja auch am anfang deines codes abgefragt...


    du hast mich nicht ganz verstanden

    ich meinte so

    zb

    ich seite die ist in deutsch und heist dann index.php

    dann will ich zB englische seite dann eine Neu seite auf englisch und speichern unter index.php???? das der index.php exestiert schön


    Ja das kannst du doch auch alles machen. Mach eine index.php mit zwei Get Variablen. Eine s, die festlegt WELCHE Seite eingebunden wird und eine lang, die festlegt in welcher Sprache die eingebunden wird. Also könnte eine BeispielURL so aussehen: testurl.com/index.php?s=home&lang=de

    Dann würde auf index.php die Seite home eingebunden und zwar in der Sprache Deutsch.

    Das ganze kannst du zum Beispiel so abfragen:

    if(isset($_GET['s']) && isset($_GET['lang'])) {
    $lang = $_GET['lang'];
    $s = $_GET['s'];
    include($s . "_" . $lang . ".php");
    }


    Denk dann noch bitte dran das ganze vernünftig abzusichern, also zu überprüfen, ob in lang und s auch die richtigen Inhalte übergeben wurden.

    Und deine Seiten speicherst du dann ab unter:

    home_de.php
    home_en.php
    impressum_de.php
    impressum_en.php

    Und so weiter..

    Wenn du es noch einfacher haben willst, klatsch die Inhalte in eine Datenbank und les die entsprechend $lang und $s aus.


    und wie sol ich am beste verlinken

    <img src="bundesflagge.jpg" width="30" height="20" border="1" alt="">


    Aha, du möchtest also irgendwo Flaggen eingeblendet haben, dann klickt man auf eine Flagge und schon ist die gesamte Homepage in einer anderen Sprache zu sehen. Dann sag das bitte doch. Wenn du mal deine Fragen in vernünftigem Deutsch verfassen würdest, hätte man das viel früher kapiert.

    Zu deiner Frage:
    Entweder du zählst jeden deiner einzelnen Links auf und stellst die jeweilige Flagge dahinter, oder du machst es über Sessions. Ich habe dir oben Schritt für Schritt erklärt wie es geht, wenn du der Anleitung folgst, hast du Links nach dem Muster index.php?s=home&lang=de. Dementsprechend müsstest du, wenn du zwei Sprachen anbieten möchtest den Homelink zweimal einfügen - für jede Sprache einmal - also:

    <a href="index.php?s=home&lang=de">Home <img src="deutsch.png"></a>
    <a href="index.php?s=home&lang=en">Home <img src="englisch.png"></a>


    Wenn du das so machst, hast du zwar viel mehr Links aufzuzählen, aber du kannst das oben von mir aufgeführte Beispiel (welches sehr einfach ist) problemlos übernehmen.

    Die andere Möglichkeit läuft über Sessions: Du definierst eine index.php, die GANZ AM ANFANG guckt, ob

    if(isset($_SESSION['lang']) {
    $lang = $_SESSION['lang'];
    }
    else {
    $lang = "deutsch"; // Standardsprache
    }


    Und dann packst du irgendwo auf deine Seite die Länderflaggen, die wenn du sie anklickst die Session['lang'] auf die jeweilige Sprache setzen. Fertig.
  • in: Mehrsprachige seite

    geschrieben von midwar

    tshaika schrieb:
    hcms schrieb:
    das
    ?lang=de
    stellt nicht den dateinamen dar, sondern ist ein get-parameter mit dem die seite aufgerufen werden kann.
    wenn du die seite zb "home.php" nennest kannst die seite auch mit dieser url aufrufen: "home.php?lang=de".
    dann wird normal die seite home.php aufgerufen in der es dann den get-parameter "lang" gibt, mit dem wert "de" - und genau das wird ja auch am anfang deines codes abgefragt...


    du hast mich nicht ganz verstanden

    ich meinte so

    zb

    ich seite die ist in deutsch und heist dann index.php

    dann will ich zB englische seite dann eine Neu seite auf englisch und speichern unter index.php???? das der index.php exestiert schön


    Ja das kannst du doch auch alles machen. Mach eine index.php mit zwei Get Variablen. Eine s, die festlegt WELCHE Seite eingebunden wird und eine lang, die festlegt in welcher Sprache die eingebunden wird. Also könnte eine BeispielURL so aussehen: testurl.com/index.php?s=home&lang=de

    Dann würde auf index.php die Seite home eingebunden und zwar in der Sprache Deutsch.

    Das ganze kannst du zum Beispiel so abfragen:

    if(isset($_GET['s']) && isset($_GET['lang'])) {
    $lang = $_GET['lang'];
    $s = $_GET['s'];
    include($s . "_" . $lang . ".php");
    }


    Denk dann noch bitte dran das ganze vernünftig abzusichern, also zu überprüfen, ob in lang und s auch die richtigen Inhalte übergeben wurden.

    Und deine Seiten speicherst du dann ab unter:

    home_de.php
    home_en.php
    impressum_de.php
    impressum_en.php

    Und so weiter..

    Wenn du es noch einfacher haben willst, klatsch die Inhalte in eine Datenbank und les die entsprechend $lang und $s aus.
  • in: Code bei MySQL Like geht auf einmal nicht

    geschrieben von midwar

    echi? Es muss echo heißen ..
  • in: Mehrsprachige seite

    geschrieben von midwar

    Hm? Was gibts denn da bitte nicht zu verstehen? Dein Beispiel bindet eine lang_$lang.php ein. Also wenn ?lang=de gesetzt ist, bindest du eine lang_de.php ein. Und wie du jetzt eine Englische Seite abspeichern sollst? Dann natürlich als lang_en.php oder was genau willst du wissen?
  • in: CSS max-width, min-width, width

    geschrieben von midwar

    Hi,

    ich muss gerade eine neue HP basteln und mir kommt folgende Frage:

    Angenommen ich hab ein normales <div>, gibt es dann die Möglichkeit dem <div> die Werte min-width:100px, max-width:200px, und width:10% zuzuweisen? Was ich erreichen möchte ist, dass width über min-width und max-width berechnet wird, also dass das <div> 10% der zur Verfügung stehenden Breite hat, es sei denn min-width überschreitet 100px und max-width 200px. Kann man das einfach so machen? Wenn ja welche Browser setzen das so um und wenn nein wie könnte man es dann machen?

    Vielen Dank.
  • in: Daten sicher verschlüsseln?

    geschrieben von midwar

    Hallo,

    ich suche gerade nach einer Möglichkeit geringe Datenmengen von mir sicher zu verschlüsseln.

    Was ich bisher gemacht habe:

    Per winRAR eine Datei in zwei Teile aufspalten also part1 und part2 und die jeweiligen Parts nochmals mit Winrar in eine .rar packen und diese Verschlüsseln. Die beiden nun entstandenen .rar Dateien (passwortgeschützt!) habe ich dann auf unterschiedlichen Medien gespeichert.

    Frage: Ist das überhaupt sicher, damit NIEMAND an wichtige Daten rankommt? Ist sowas knackbar oder entschlüsselbar? Was kann ich besser machen?

    Vielen Dank. :)

    EDIT: Wenn ich eine Datei auf einem Flash-Laufwerk lösche, ist die dann weg? Auf normalen HDDs ist es ja so, dass sie wenn man sie löscht, zumindest noch bis zu einem gewissen Grad und Zeitpunkt wiederhergestellt werden kann.
  • in: Lima funktioniert zu gut, Community bricht zusammen

    geschrieben von midwar


    Außerdem: was würdest du denn als Zusatz-Feature anbieten?


    Ich habe mich diesbezüglich mal an CMs und lordoflima gewannt und vorgeschlagen: Programmiert doch ein eigenes Lima-GB, Lima-Forum, Lima-Counter, whatever. Alles was man so braucht für seine Homepage. Diese ganzen Tools, die es gibt. Und sorgt dafür, dass man diese mit einem Click an einer Stelle auf seiner Homepage einfügen kann für diejenigen, die nicht viel Ahnung von PHP oder anderen Sachen haben. Also so in etwa:

    "Füge diesen Code an der Stelle deiner Homepage ein, um ein eigenes Lima-Forum an dieser Stelle auf deiner Homepage einzubinden: include("tools.lima-city.de/userid=midwar&toolid=3");"

    So wäre Lima nicht nur ein Webspace anbieter sondern bietet alles andere rund um Homepages was man brauchen kann ebenfalls an. VORTEIL hierbei ist, dass die zugehörigen Tools mit lima verknüpft sind und man diese hier beim einloggen auf lima managen könnte in seinem Account, oder sich Statistiken anzeigen lassen könnte, etc etc. Achja um auf deine Frage zurückzukommen: 1 Forum, 1 Gästebuch, 1 Counter standardmäßig frei und wenn du für deine Projekte 3 Foren brauchst, schaltest du die mit Gulden frei?

    Das sind einige meiner Ideen was man noch aus Lima machen könnte, ich hatte sogar angeboten mitzuhelfen bei der Programmierung, aber irgendwie fand man diese Ideen dann wohl nicht so interessant und sagte nur "Ne!".

    Und an alle, die jetzt meckern "Sowas gibt's doch tausendmal im Web!". Ja und? 1. Gibt es das noch nicht in der Form wie von mir beschrieben im Web, 2. Nicht so einfach, dass man die gleichzeitig beim Anmelden bei lima-city freiegschaltet bekommen, 3. nicht so einfach ,dass man nur eine Codezeile einbinden muss und 4. nirgendwo mit lima city verknüpft, so dass man das mit seinem Account hier verbinden und managen kann.

    Oder anders ausgedrückt: Ich war früher bevor ich lima kannte viel auf piranho unterwegs. Einem ehemals (!) sehr gutem Freehoster. Schaut euch heute mal piranho an. Die Seite ist ein Witz, der Admin kümmert sich nen **** und niemand ist doch dort aktiv. Früher gingen dort mal über 100 Posts täglich über die Bühne. Auf lima haben wir hier hingegen eine wirklich sehr gut funkrionierende Seite, und viele, viele Leute beteiligen sich. Macht nicht den Fehler von piranho und tretet auf der Stelle und macht über Jahre nichts. Entwickelt euch weiter und fügt neue Features hinzu. Ideen gibt es genug.
  • in: Merkwürdiger Session Bug

    geschrieben von midwar

    Hallo,

    dann reiche ich mal den zugehörigen Code nach:

    class WOSFetch {
         // ****************************************************
         // Fetcher Class for WOS. Finds all Data to a given Therm and fetches it to local.
         // ****************************************************
         
    	private $AuthURL  = "http://search.isiknowledge.com/esti/wokmws/ws/WOKMWSAuthenticate?wsdl";
         private $SearchURL = "http://search.isiknowledge.com/esti/wokmws/ws/WokSearchLite?wsdl";
         
    	public $AuthClient;
    	public $SearchClient;
    	
    	private $ProxyOptions = array(
    		'proxy_host' => 'proxyserver,
    		'proxy_port' => 0000,
    		'proxy_login' => 'username',
    		'proxy_password' => 'password'
    	);
    	private $SearchOptions = array(
    		'queryParameters' => array(
    			'databaseID' => 'WOS',
        			'editions' => array(
          			array('collection' => 'WOS', 'edition' => 'SSCI'),
          			array('collection' => 'WOS', 'edition' => 'SCI')
        			),
        			'queryLanguage' => 'en'
      		),
      		'retrieveParameters' => array(
        			'count' => '5',
        			'firstRecord' => '1',
        			'RecordIDs' => 'On'
      		)
    	);
    	private $FetchOptions = array(
    	     // Options for the fetching process. Article-IDs have to be passed like 'uids' => array("012345678","123456789")
    		'databaseId' => 'WOS',
    		'uids' => array("000175726300031","000075022300003"),
        		'queryLanguage' => 'en',
      		'retrieveParameters' => array(
        			'count' => '20',
        			'fields' => array(
          			array('name' => 'Date', 'sort' => 'D')
        			),
        			'firstRecord' => '1'
      		)
    	);
    	
    	public function __construct() {
    	     // ****************************************************
         	// Start authentication process and the SearchClient
         	// ****************************************************
         	
    		$this->AuthClient = @new SoapClient($this->AuthURL,$this->ProxyOptions);
    		$AuthResponse = $this->AuthClient->authenticate();
    		$this->SearchClient = @new SoapClient($this->SearchURL,$this->ProxyOptions);
    		$this->SearchClient->__setCookie('SID',$AuthResponse->return);
    	}
    	public function __destruct() {
    	     // ****************************************************
         	// When fetcher is closed, close Session from the WOS Web Services
         	// ****************************************************
         	
    		$this->AuthClient->closeSession();
    	}
    	public function Main($Query) {
    	     // ****************************************************
         	// Main function of the Fetcher. Searches via given Therm for all IDs matching and then starts the fetch-process.
         	// ****************************************************
         	
     		if(!empty($Query)) {
     			// If User gave a Query to search for, execute it
     			if($SearchResponse = $this->Search($Query)) {
    				// We got an Search Response, so we found something corresponding to that Query
    				$Converter = new WOSConvert();
    				$Converted = $Converter->Convert($SearchResponse);
    				$Converter->Filter("UT",$Converted);
    				
    				// Fetch the Parsed IDs as data
    				return $this->Fetch($Converter->FilteredData);
    			}
    			else {
    				$this->ErrorOut("Error: The Search went wrong!");
    			}
    		}
    		else {
    			// No specific Query to search for was given
    			$this->ErrorOut("Error: You gave no specific SearchQuery!");
    			return false;
    		}
    	}
    
    	public function Search($Query) {
    	     // ****************************************************
         	// Executes a search to a given Query and returns the WOS IDs found
         	// ****************************************************
    
    	     $this->SearchOptions["queryParameters"]["userQuery"] = $Query;
    	     try {
          		$SearchResponse = $this->SearchClient->search($this->SearchOptions);
          		return $SearchResponse;
    		} catch (Exception $e) {
    			echo $e->getMessage();
    			return false;
    		}
    	}
    	public function Fetch($IDs) {
    	     // ****************************************************
         	//  Fetches the found IDs as meta data
         	// ****************************************************
    
    		$this->FetchOptions['uids'] = $IDs;
    	     try {
          		$FetchResponse = $this->SearchClient->retrievebyid($this->FetchOptions);
          		return $FetchResponse;
    		} catch (Exception $e) {
    			echo $e->getMessage();
    			return false;
    		}
    		
    		// Destruct the class after each fetch attempt in order to logout from wos service
    		$this->__destruct();
    	}
    	private function ErrorOut($ErrorMsg) {
    	     // ****************************************************
          	// Outputs Error-Messages, can add statistical features later
          	// ****************************************************
    
    		echo $ErrorMsg . "<br>";
    	}
    }


    Mir ist gerade eingefallen, dass ich eine main.php habe, die wos.php mit include() einbindet und dann die oben im Code aufgeführten Klassen (wos.php) instanziert und ausführt. Könnte es das sein? Reicht ein simples include() aus, um Sessions zu locken, und den beschriebenen Fehler bei mir zu provozieren?

    Ob das ganze Ding an eine TCP/IP Session gebunden ist - keine Ahnung. Wo ist da der Unterschied? Besteht einer?
  • in: Merkwürdiger Session Bug

    geschrieben von midwar

    Hallo,

    ich benutze über eine extern API einen selbstgeschriebenen SOAP PHP Client. Der funktioniert soweit wunderbar, lediglich treten einige sehr merkwürdige Session Fehler auf, bei denen ich nicht weiter weis.

    Zusammenfassung: Die API folgt dem Schema, erst autzentifizieren, dann kann ich in einem zweiten Schritt Suchanfragen starten und im dritten Schritt muss ich die Verbindung wieder trennen. Also die Session beenden. Starte ich das ganze Skript nun, klappt eigentlich alles und die Suchergebnisse werden mir angezeigt. Klicke ich nun auf Aktualisieren und er lädt die Seite neu, KANN es sein, dass lediglich ein 'session not found: SID=I2b45baEdoaOLpOE4J8 NodeID=I2' kriege. Aktualisiere ich nochmals, funktioniert meistens (nicht immer!) alles wieder und mir werden wieder die gleichen Suchergebnisse angezeigt von vor zwei Seitenaufrufen. Woran liegt das ganze nun? Ich habe dann beim Anbieter in der - reichlich spärlichen - Anleitung zur Benutzung seines Suchdienstes nachgeguckt und erfahren, dass genau diese Fehlermeldung bedeutet, dass die zu löschende Session nicht mehr existiert. Aber wie kann das sein? Wie gesagt folgt mein Skript stumpf dem Ablauf 1. Authentifizieren, 2. Suchen, 3. Session abmelden. Trotzdem spuckt er mir gelegentlich schon beim Suchen diese Meldung aus, also das die Session nicht mehr vorhanden sei.

    Woran liegt sowas? Ich habe in einem Englischen Forum die Frage mal gestellt und darauf als Antwort erhalten, dass "Session data is usually stored after your script terminated without the need to call session_write_close(), but as session data is locked to prevent concurrent writes only one script may operate on a session at any time. When using framesets together with sessions you will experience the frames loading one by one due to this locking. You can reduce the time needed to load all the frames by ending the session as soon as all changes to session variables are done."

    Ich habe zwar verstanden was da steht und was das alles im Bezug auf Framesets heißt, allerdings verstehe ich nicht was das nun mit meinem Beispiel zutun hat?! Bei mir handelt es sich nicht um Framesets, sondern um EIN Skript, dass lediglich aus einem SOAP Client besteht, der authentifiziert, sucht, ausloggt. Hier werden keine weiteren Inhalte eingebunden oder ähnliches. Und in sofern kann es nicht sein, dass PHP hier die Session Data für irgendetwas anderes sperren müsste.

    Woran kann es also bitte liegen? Ich habe da gerade absolut keine Ahnung.

    Vielen Dank.
  • in: SESSION wird automatisch als Referenz erstellt

    geschrieben von midwar

    Meinst du die Stelle? Hier wird $_SESSION['name'] $name zugewiesen etc...

    if(isset($_POST['pw']) and isset($_POST['name'])) {
         // Wenn Daten eingegeben wurden
    
         $name = $_POST['name'];
         $pw = $_POST['pw'];
         
         var_dump($name);  // Ergibt einen ganz normalen String, keine Referenz
         var_dump($_SESSION); // Ergibt ein leeres Array, da noch nicht eingeloggt
         
         if(ctype_alnum($name) and ctype_alnum($pw)) {
              // Wenn Login Daten nur aus Zahlen und Buchstaben bestehen
              $pw = md5($pw);
              
              $result = mysql_query("SELECT pw FROM users WHERE BINARY name = '$name'");
              if(mysql_num_rows($result)==1) {
                   // Wenn die richtigen Daten aus der DB zurückkamen
                   while ($row = mysql_fetch_assoc($result)) {
                        $db_pw =  $row['pw'];
                   }    
                   if($pw == $db_pw) {
                        // Wenn das PW richtig war
                        $_SESSION['name'] = $name;
                        var_dump($_SESSION); // Ergibt eine Referenz auf $name
                        echo "Du wurdest erfolgreich eingeloggt.";
                   }
                   else {
                        // Wenn das Passwort falsch war
                        echo "Tut mir leid, deine Einlogdaten waren falsch.";
                   }
              }
              else {
                   // Wenn der Benutzername nicht existiert
                   echo "Dieser Benutzername existiert nicht.";
              }
         }
         else {
              // Wenn Login Daten nicht nur aus Zahlen und Buchstaben bestehen
              echo "Benutzername und Passwort dürfen nur aus Zahlen und Buchstaben bestehen!";
         }
    }


    EDIT: habe gerade gesehen, das sowas angeblich an register globals liegt, die hier ja angeschaltet sind?

    EDIT2: Hab einfach register_globals auf meinem Webspace abgeschaltet und sofort gings ...
  • in: SESSION wird automatisch als Referenz erstellt

    geschrieben von midwar

    Tag,

    irgendwas stimmt grade nicht mit meinem Script. Ein simples einlog Script, das überprüft, ob das in der DB gespeicherte Passwort mit dem eingegebenem übereinstimmt und danach soll $_SESSION['name'] = $name gesetzt werden, weil der User dann als eingeloggt gilt.

    So weit so gut.

    if($pw == $db_pw) {
                        // Wenn das PW richtig war
                        $_SESSION['name'] = $name;
                        echo "Du wurdest erfolgreich eingeloggt.";
                   }


    Wenn ich mich aber einlogge (ganz oben am Script werden sessions natürlich über session_start() gestartet), und mir nach erfolgreichem einloggen mal mit var_dump() $_SESSION ausgeben lasse, erhalte ich:

    array(1) { ["name"]=> &string(4) "User" }

    Will heißen das ganze ist eine Referenz auf $name. Wann immer ich nun die Variable $name innerhalb meines Scripts änder, wird $_SESSION['name'] mitgeändert und schon gilt jemand anderes als eingeloggt.

    Daraufhin habe ich die gesamten Quellcodedateien vom mir nach "&" durchsucht weil laut Google $var1 =& $var2 zum Referenzieren notwendig ist. Jedoch überhaupt nichts gefunden. Laut meinem Code erstelle ich keine Referenz auf $name - was ich ja auch nicht will.

    Woran liegt das? Wie kriege ich das weg?

    Vielen Dank.
  • in: php soap + wsdl

    geschrieben von midwar

    Netzwerkverkehr von hier mitsniffen ist mir leider nicht möglich - gibt es keine anderen Möglichkeiten, bzw. woran kann sowas überhaupt liegen?
  • in: php soap + wsdl

    geschrieben von midwar

    Nein, hatte ich mir noch nicht durchgelesen, habe ich jetzt aber.

    Ich bin bisher halt einfach dem pdf von Web of Science gefolgt, das recht dürftig einfach nur sagte, dass ich einen header mit den entsprechenden Angaben mitschicken soll. Daher hatte ich mich gewundert warum es bitte nicht funktioniert.

    Ich habe nun username und password als Optionen mit übergeben, bekomme aber den gleichen Fehler!

    $auth_client = new SoapClient("http://search.webofknowledge.com/esti/wokmws/ws/WOKMWSAuthenticate?wsdl", array('login' => "user",'password' => "password"));
  • in: php soap + wsdl

    geschrieben von midwar

    Hi,

    ich versuche gerade zum ersten mal mich über PHP SOAP an einem anderem Server anzumelden - auf Basis eines äußerst dürftigen Readmes...

    Dort wird gesagt:

    WSDL Link: http://search.webofknowledge.com/esti/wokmws/ws/WOKMWSAuthenticate?wsdl

    Und: "Um sich anzumelden, müssen sie in einem HTTP Header den base64 verschlüsselten Benutzernamen + Passwort mitschicken.

    Also habe ich das hier probiert:

    header('Authorization: [Basic user-pass]');
    $auth_url  = "http://search.webofknowledge.com/esti/wokmws/ws/WOKMWSAuthenticate?wsdl";
    $auth_client = new SoapClient($auth_url);
    $auth_response = $auth_client->authenticate();
    
    var_dump($auth_response);


    Natürlich statt "user-pass" mit dem richtigem verschlüsseltem Nutzernamen + Passwort, kriege aber nur die Meldung Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://search.webofknowledge.com/esti/wokmws/ws/WOKMWSAuthenticate?wsdl' : failed to load external entity "http://search.webofknowledge.com/esti/wokmws/ws/WOKMWSAuthenticate?wsdl" in E:\xampp\htdocs\test.php:5 Stack trace: #0 E:\xampp\htdocs\test.php(5): SoapClient->SoapClient('http://search.w...') #1 {main} thrown in E:\xampp\htdocs\test.php on line 5.

    Was genau kann ich jetzt machen? Ich meine die URL ist richtig, Passwort etc wird mitgegeben - woran liegt's?
  • in: array_multisort mit Objekte anstatt Array ?

    geschrieben von midwar

    Altenativ mit dieser Funktion hier:

    private function XMLToArray($XML, $Root = true) {
          	// ****************************************************
          	// Convert the XML into Array
          	// ****************************************************
    
    		if (!$XML->children()) {
    			return (string)$XML;
    		}
    
    		$Array = array();
    		foreach ($XML->children() as $Element => $Node) {
    			$totalElement = count($XML->{$Element});
    
    			if (!isset($Array[$Element])) {
    				$Array[$Element] = "";
    			}
    
    			if ($Attributes = $Node->attributes()) {
    			     // $node got atrributes
    				$Data = array('Attributes' => array(),'Value' => (count($Node) > 0) ? $this->XMLToArray($Node, false) : (string)$Node);
                        foreach ($Attributes as $Attr => $Value) {
    					$Data['Attributes'][$Attr] = (string)$Value;
    				}
                        if ($totalElement > 1) {
    					$Array[$Element][] = $Data;
    				}
    				else {
    					$Array[$Element] = $Data;
    				}
      			}
    			else {
    			     // $node contains only values
    				if ($totalElement > 1) {
    					$Array[$Element][] = $this->XMLToArray($Node, false);
    				}
    				else {
    					$Array[$Element] = $this->XMLToArray($Node, false);
    				}
    			}
    		}
    
    		if ($Root) {
    			return array($XML->getName() => $Array);
    		}
    		else {
    			return $Array;
    		}
    	}


    Das SimpleXMLElement in ein Array umwandeln und das Array dann durch multisort() jagen.
  • in: SimpleXML Fehler

    geschrieben von midwar

    Hi,

    ich stehe gerade wirklich auf dem Schlauch und komme nicht weiter, irgendwie scheint sich simpleXML gegen mich verschworen zu haben... Vielleicht kann mir von euch mal jemand erklären warum das nicht geht:

    Ich hab ein SimpleXMLElement, aus dem ich einfach nur die ID Liste raus exportieren möchte. Nichts weiter. Das wars. Eigentlcih ganz einfach - eigentlich! Ich lese mein SimpleXMLElement so ein:

    $this->Results = simplexml_load_file($Query);


    Danach entsteht ungefähr diese Struktur:

    SimpleXMLElement Object
    (
        [Count] => 1908
        [RetMax] => 1908
        [RetStart] => 0
        [QueryKey] => 1
        [WebEnv] => NCID_1_420189972_130.14.22.33_5555_1346403598_85646359
        [IdList] => SimpleXMLElement Object
            (
                [Id] => Array
                    (
                        [0] => 22920665
                        [1] => 22920663
                        [2] => 22920661
                        [3] => 22920660


    Wobei die ID Liste natürlich enorm viel länger ist. Soweit so gut. Mein Versuch, da es ja ein SimpleXMLElement ist einfach es mal über echo zu probieren also echo $xml->IdList; schlug fehl. Müsste aber funktionieren laut http://de2.php.net/manual/de/simplexml.examples-basic.php Beispiel 2 hier.

    Ok, macht nichts - was anderes probiert:

    private function FilterIDs($Node) {
    		foreach($Node->children() as $Name) {
    		     
    		     $this->FilterIDs($Name);
    		     
    		     if($Name->getName() == "IdList") {
                               echo $Name->Id;
    			}
    		}
    	}


    Geht auch nicht. Warum? Keine Ahnung. Manchmal scheint beim Debug Output übrigens die Id Liste ein Array zu seien, während es manchmal eine Aneinanderreihung von SimpleXMLElementen ist, die jeweils nur eine ID enthalten.

    Was soll ich jetzt bitte machen, um an die Werte zu kommen? Danke!
  • in: wie gebe ich checkboxen aus?

    geschrieben von midwar

    Du hast bei deiner Form method="post" angegeben. Das heisst die Daten werden per Post übertragen. Das bedeutet du musst sie in PHP über die $_POST Variable ansprechen, der dort sind sie nun für dich gespeichert.

    Kleiner Hinweis, du gibst deinen Checkboxen immer den Namen "song", soweit schonmal ganz gut, allerdings schreib für PHP bitte name="song[]", sonst funktioniert innerhalb von PHP die Umwandlung in ein Array nicht.

    Danach kannst du in deinem verarbeitendem PHP Skript sowas schreiben:

    $SongsChosen = $_POST['song'];

    Nun sind in $SongsChosen alle Songs aufgezählt, die der User gewählt hat. Das kannst du dir mit var_dump() ausgeben lassen, oder mit $SongsChose[0],$SongsChosen[1], etc.

    Bitte vorher überprüfen, ob $_POST überhaupt existiert, sonst wurden ja keine Eingaben gemacht:

    if(isset($_POST['song'])) {
    ...
    }
  • in: Forum programmieren

    geschrieben von midwar

    Wenn du von programmieren keine / wenig Ahnung hast, dann befasse dich erstmal mit Grundsätzen.

    Wichtig zum zuerst lernen: HTML,CSS - selfhtml.org
    Wenn du das alles verstanden hast und damit erfolgreich ein paar eigene kleine Seiten gebastelt hast, kannst du dich an PHP und MySQL wagen. php.net ist hier deine Anlaufstelle. Wenn du PHP und MySQL verstanden hast und ein paar kleinere Sachen wie Gästebücher und n Counter gebastelt hast, kannst du dich an ein Forum wagen.

    1. Plane viel Zeit ein.
    2. Du wirst sehr lange brauchen um das alles zu verstehen.
    3. Wenn es dir zu lange dauert, bau ein fertig Forum ein.

    Und zum Schluss: Bitte Suchfunktion benutzen, sowas gabs hier garantiert schon tausendmal...
  • in: adminbereich

    geschrieben von midwar

    Jop, benutze Sessions, verschlüssel die Passwörter mit md5. Wichtig: Direkt bevor du irgendwas mit dem Passwort machst verschlüsseln und nur verschlüsselte PWs übertragen oder für Vergleiche benutzen - niemals unverschlüsselte.

    $PW = md5($_POST['eingabe']);

    Dann noch ein Hinweis zu session_start(); - ich vermute du wirst das ganze auf Cookies basierend aufbauen. Dann solltest du wissen, dass session_start() zu allererst vor irgendetwas anderem aufgerufen werden muss.

    "Um Cookie-basierte Sessions zu verwenden muss session_start() aufgerufen werden, bevor irgend etwas an den Browser geschickt wird." von http://de3.php.net/manual/de/function.session-start.php.

    Bau dir also eine index.php wo ganz oben ein session_start() steht, über die du dann die jeweils benötigten Dateien über GET referenziert einbindest include($site . ".php"); und dann hast du ein gut funktionierendes System.
  • in: Datenbank-Schema

    geschrieben von midwar

    Hi,

    ein paar allgemeine Fragen zu einem Datenbankschema:

    1. Auf welche Spalten ist es sinnvoll einen Index zu packen? In meiner Script kommt häufig nur ein WHERE itemID = X vor. Gelesen habe ich, dass es nur sinnvoll ist auf diese itemID dann einen Index zu packen. ALTER TABLE `itemdates` ADD INDEX ( `itemID` ). Ist das so richtig? Oder soll ich eventuell auf andere noch einen Index packen, obwohl die nicht in WHERE vorkommen.
    2. itemID habe ich gleichzeitig als Primary Key eingestellt, da es nur einmal vorkommen darf, da es ja der eindeutige Identifier ist. Es kommt aber die Meldung "Die Indizes PRIMARY und itemID scheinen gleich zu sein und einer könnte möglicherweise entfernt werden.", wenn ich sowohl Primary Key als auch Index auf itemID liegen habe. Ist das schlimm? Wo liegt der Unterschied? Kann ich das so lassen?
    3. Wie sieht es in einer Tabelle aus, in der itemID ausnahmsweise mal nicht Primary Key ist, da es hier auch mehrmals vorkommen darf? Auch nen Index draufpacken zwecks Geschwindigkeitssteigerung? Und wenn ja muss man eigentlich sowas wie nen Primary Key / Unique etc. immer vergeben? Ich meine mich erinnern zu könne mal gelesen zu haben, dass es sinnvoll sei sowas wie nen Primary Key immer einmal pro Tabelle vergeben zu haben, allerdings kann ich in dieser Tabelle, wo itemID ausnahmsweise mehrmals vorkommen kann (nicht muss) keine Spalte entdecken, wo ein Primary Key zu vergeben sein könnte.
    4. Kann mir jmd. verständlich Unterschiede mit Vor- und Nachteilen von Primarykey, Unique, Fulltextindex,Index, etc. erklären?

    Vielen Dank.:blah:
  • in: Mysqli - multi_query

    geschrieben von midwar

    kgreen schrieb:
    midwar schrieb:
    ...was kann man machen?

    Vorschlag!
    Lies dir nochmal die Verwendung von mysqli.multi-query durch.
    Mir scheint das so, als ob du den Aufbau etwas verdreht hast.

    BTW, warum eigentlich multi_query?
    Hast du so viele Abfragen?
    Wie sieht es mit Transaktionen aus? Dort kannst du auch alles eingeben und dann mit einem COMMIT alles in die Datenbank schreiben, mit dem Vorteil, dass bei einem Fehler alles wieder zurück gerollt wird.


    Also erstmal:
    Ja, ich habe viele Abfragen, daher die multi-query.
    Nein, ich will das nicht über Transactions machen, sondern einfach auf die errors einer Subquery von einer multi_query zugreifen können. So schwer kann das ja nicht sein.

    Also hier ein extra falsch gebautes multi_query.

    $test = new mysqli("localhost","root","","test");
    $test->query("SELECT gibtsnicht FROM gibtsauchnicht WHERE id = 4");
    echo $test->error;
    echo "<br><br>";
    $test->multi_query("SELECT gibtsnicht FROM gibtsauchnichtxD WHERE id = 4;SELECT gibtsnicht2 FROM gibtsauchnicht3 WHERE test = 4");
    
    echo $test->error . "<br><br>";
    $test->next_result();
    echo $test->error . "<br><br>";


    Normalerweise müssten doch jetzt für jede der beiden Subqueries die entsprechende Fehlermeldung kommen, oder? Tut es aber nicht! "Strict Standards: mysqli::next_result() [mysqli.next-result]: There is no next result set. Please, call mysqli_more_results()/mysqli::more_results() to check whether to call this function/method in". Dabei steht explizit in der Anleitung: "To retrieve subsequent errors from other statements you have to call mysqli_next_result() first." Also was bitte soll ich machen, um mit $test->error auf die subquery errors zugreifen zu können?

    Und zu meiner anderen Frage: Was genau in meiner $Query steht, die dann als multi_query ausgeführt wird ist doch vollkommen egal! Irgendwas halt. Kannste meinetwegen eine SELECT id FROM tabelle WHERE name = 3 reinbasteln und dazu ein SELECT nichts FROM garnichts WHERE id = -3. Es geht einfach nur darum, dass wenn man nach einer multi_query noch weitere querys ausführen will erst die results leeren muss (so hab ich das zumindest verstanden) und daher mit while($test->next_resul()); einmal alles komplett durchlaufen lassen muss. Allerdings hängt sich das Script häufiger an dieser Stelle auf, deswegen von mir die Frage ob man an genau dieser while Schleife nicht irgendetwas verbessern kann?
  • in: Mysqli - multi_query

    geschrieben von midwar

    Hi,

    ich hab da ein paar Fragen zum Thema multi_query() in mysqli:

    1. Ich habe ein etwas größeres Script, dass sich bei Maximum Execution Time, zu 90% immer in meinen beiden multi_queries aufhängt. Will heißen die beiden multi_queries von mir scheinen die meiste Zeit in der Ausführung zu beanspruchen. Was genau kann man machen, um dies zu beschleunigen? Konkret geht es um das hier:

    $Result = $this->Connect->multi_query($Query);
    			if($Result !== false) {
    			     // Query was ok - got result
        				while($this->Connect->next_result());
    			}
             		else {
             		     // If the query failed
    				return false;
    			}


    Genauer gesagt geht es um die while() Zeile. Hier hängt sich das Skript häufig auf. Kann man an dieser Zeile irgendwas verbessern - das ganze performanter gestalten? Machen muss ich dies, weil später noch andere Queries ausgeführt werden, und ich die results ja vorher erst durchgehen muss...

    2. Ich möchte mit $this->Connect->error auf verschiedene Fehlerfehlermeldungen einer multi_query zugreifen! "To retrieve subsequent errors from other statements you have to call mysqli_next_result() first." Schön und gut. Ich hab also in die while Schleife oben auch mal echo $this->Connect->error; gepackt, allerdings nichts erhalten. Ausgegeben wird immer nur die erste Fehlermeldung zur ersten misslungenen Teilquery - was kann man machen?

    Vielen Dank für eure Hilfe!
  • in: Mysql auto_increment

    geschrieben von midwar

    swissminecraftserver schrieb:
    Das habe ich auch schon gefunden:
    ¨¨
    ALTER TABLE tabellenname AUTO_INCREMENT = 42;

    Nur weiss ich nicht wo ich das einfügen muss,


    Wie wäre es mit mysql_query("ALTER TABLE tabellenname AUTO_INCREMENT = 1337"); wie hackyourlife schon erwähnt hat?


    ich bestimmte Zeilen einer Tabelle ausgebe
    und dann (neben dran) ein Löscht Bottom ist und dann jeden Eintrag einzel löschen kann.


    Bestimme Zeilen ausgeben wäre so:
    Wenn du weißt welche ID die Zeile hat einfach "SELECT spaltenname FROM tabellennamen WHERE id = '$Id'"
    Löschen mache ich mit nem UPDATE tabellenname SET spaltenname = "" WHERE id = '$ID', damit die Zelle selber in der DB bleibt und man in der DB nicht aufeinmal nicht vorhandene IDs vorfindet.
  • in: Bester Browser

    geschrieben von midwar

    Auch wenn mich einige Google-is-evil Fanboys hier jetzt wohl kreuzigen mögen, ist für mich Chrome der beste Browser. Ganz einfach dadurch, weil er gut zu bedienen, simpel und einfach gehalten ist, sowie immer noch zu den schnellsten gehört.

    Wer Datenschutzrechtliche Probleme sieht, soll halt auf Iron wechseln.

    So oder so: Dadurch dass Google Chrome rausgebracht hat und irgendwann auf einen 6 Wochen Release Zyklus gewechselt hat, wurde die ewig schlafende Konkurrenz wachgerüttelt und es gab endlich wieder Bewegung im Browsermarkt. Ihr könnt mir erzählen aber FF 3.6 war und ist grottig. Schlecht. Langsam. Nicht sicher. Dadurch das Google ständig neue Versionen gepusht hat wurden MS, Mozilla etc. endlich mal dazu genötigt auch weiter zu arbeiten anstatt sich in gegenseitiger Lethargie die ständig gleichen Browser zuzuwerfen.

    Google hat und ist der Grund dafür, dass sich in den letzten 3 Jahren enorm viel im Browserbereich getan hat (Geschwindigkeit, Sandboxprinzip, HTML5 Untertützung, JIT Kompiler etc.).

    Chrome / Iron!
  • in: auf flash oder html5 setzen?

    geschrieben von midwar

    Flash ist proprietär und gehört Adobe. Allein daher setze ich persönlich wenn dann auf HTML5. HTML5 wird wenigstens von einer "freien" Organisation offen entwickelt und ist dementsprechend frei zugänglich.

    Bisher wurde als Gegenargument immer genannt, dass die verschiedenen Browser die HTML5 Elemente nicht wirklich oder nur teilweise unterstützen wobei man sagen muss, dass sich das innerhalb der letzten 2 Jahre angestoßen von Chrome rasant geändert hat. Mittlerweile wird ein Großteil der HTML5 Elemente von den großen Browsern unterstützt, weswegen dieser Punkt für mich nicht wirklich ein Hinderniss mehr darstellt. Das es funktioniert und besser / oder zumindest gleichwertig zu Flash ist sieht man an Youtube. Hier hat Google schon einen Großteil auf HTML5 / WebM umgestellt - und es läuft!

    Flash ist meiner Meinung nach zum Aussterben verurteilt. Es ist ein großes Sicherheitsrisiko (die meisten heutigen Viren / Würmer werden über Lücken in Drittprogrammen sprich Flash / Java eingeschleust, anstatt über das Betriebssystem selber) und abgesehen davon passt es nicht zum "freien" Geist des Internets.

    @hackyourlife: Stimmt so nicht ganz. Soweit ich weiß, hat Adobe nur die Unterstützung für ein paar Platformen eingestellt. Z.B. Android und Linux (abgesehen von Chrome für Linux) - neue Versionen dürften sie trotzdem entwickeln.

    "
    Am 22. Februar 2012 kündigte Adobe an, künftige Versionen des Flash-Players unter Linux ausschließlich für den Browser Chrome des Adobe-Partners Google anzubieten [8].
    Am 23. April 2012 veröffentlichte Adobe Flash CS6 Professional als Teil der Creative Suite 6. Das Programm unterstützt nun u.a. auch die Entwicklung von Assets für HTML5 und soll zukünftig vermehrt über ein Abonnementsmodell (die sog. Adobe Creative Cloud) vertrieben werden.[9]
    Im Juni 2012 wurde bekannt, dass ab dem 15. August 2012 der FlashPlayer für Android nicht mehr über Google Play erhältlich sein wird, bestehende Installationen aber weiterhin mit Sicherheits-Updates versorgt werden. Wie bereits 2011 angekündigt, verzichtet Adobe auf die Anpassung des FlashPlayers an kommende Android-Versionen.[10]
    "
  • in: League of legends teleganking und first blood

    geschrieben von midwar

    wienerblut schrieb:
    hey ho ihr wollt mit lvl1 ganken dann schaut euch das video an dann muss ich auch nicht soviel erklären !!
    https://www.youtube.com/watch?v=oPCedmtduew
    is ganz witzig habe es mit paar freunde auch schon paar mal durgezogen !!


    peace in love


    Und was bringt uns das? Die Mehrheit hier wird kein LoL spielen und abgesehen davon funktioniert eine Teleport Gank nur gegen absolute Anfänger. Bitte ins Spam Forum verschieben...
  • in: Hilfe Anfänger

    geschrieben von midwar

    Eine Datenbank bei lima-city ist kostenlos. Allerdings benötigst du Gulden, um dir eine zu ersteigern und leider ist so eine Datenbank nunmal zwingend notwendig, um ein Forum - zumindest eins wie du es willst - zu erstellen. Also: Verdiene dir Gulden, ersteiger dir eine MySQL Datenbank bei lima (Bei Auktionen), setz dann die Datenbank auf und passe die entsprechenden Variablen (Server,user,name,pass) und dann läuft es.

    Wichtig: Hilfe bitte lesen - da steht eigentlich alles drin..
  • in: Reihenfolge von Menüeinträgen umdrehen

    geschrieben von midwar

    Hallo,

    nein, das ist nicht mit CSS machbar. CSS ist nur für die Anzeige der Daten zuständig - wie die Daten dann wirklich vorhanden sind darauf hat CSS keinen Einfluss.

    Wenn du die einzelnen Menüpunkte in einem Array gespeichert hast, benutze array_reverse mit PHP: http://php.net/manual/de/function.array-reverse.php.

    Wenn du die einzelnen Punkte in einer Datenbank gespeichert hast, benutze ODER BY um das ganze falsch rum aus der DB auszulesen.
  • in: Mailadresse Prüfen

    geschrieben von midwar

    strpos() und simple if != Vergleiche wurden schon genannt. Daher von mir der Vollständigkeit halber noch der Hinweis auf preg_match() wo du mit RegEx das ganze auf jedes Detail durchkämmen kannst.

    http://php.net/manual/de/function.preg-match.php
  • in: CSS Hover anderes Element ändern

    geschrieben von midwar

    copynpaste schrieb:
    ggamee schrieb:
    Ganz einfach:
    #element1 {
    //ganz schön gemacht
    }
    #element2 {
    //ganz schön gemacht
    }
    #element2:hover #element1 {
    background-color: #FFFFFF;
    }


    http://lmgtfy.com/?q=css+hover+anderes+element+%C3%A4ndern

    Liebe Grüße


    Aber soweit ich weiß nur, wenn #element1 sich in #element2 befindet:
    <div id="element2">
    <div id="element1">
    </div>
    </div>


    Und genau das ist das Problem! B befindet sich nämlich nicht in A! Gibt es da einen CSS Workaround?
  • in: League of Legends

    geschrieben von midwar

    Hi,

    die offiziellen Skins produziert nach wie vor nur Riot und von daher wirst du da absolut keine Chance haben eigene "einzusenden". Das solltest du lieber vergessen.

    Was manchmal gemacht wird ist zu besonderen Anlässen oder nach bestimmten Ereignissen für bekannte Spieler / oder für bestimmte Events einen Skin rauszubringen. Das wird allerdings auch nur von Riot gesteuert und umgesetzt. Die Community hat darauf null Einfluss.

    Was du machen kannst sind Custom Skins, die du dann Lokal bei dir auf deinem PC einbinden kannst. Dadurch kriegen die Champs bei DIR während des Spielens ein anderes Aussehen, allerdings kriegen andere Spieler davon nichts mit.
  • in: Listenformatierung CSS

    geschrieben von midwar

    Sorge für valides HTML, dann geht es auch:

    <ul class="level_1">
    	<li>
    		<ul class="level_2">
    			<li>Unterpunkt1</li>
    			<li>Unterpunkt2</li>
    			<li>Unterpunkt3</li>
    			<li>Unterpunkt4</li>
    		</ul>
    	</li>
    
    	<li>
    		<ul class="level_2">
    			<li>Unterpunkt1</li>
    			<li>Unterpunkt2</li>
    			<li>Unterpunkt3</li>
    			<li>Unterpunkt4</li>
    		</ul>
    	</li>
    </ul>
    
    <style type="text/css">
    
    .level_1 {
    border:thin solid red;
    }
    .level_1 li {
    border:thin solid black;
    }
    .level_2 {
    border:thin solid yellow;
    }
    .level_2 li {
    border:thin solid green;
    }
    
    </style>
  • in: CSS Hover anderes Element ändern

    geschrieben von midwar

    Hi,

    also ich bin ja wirklich kein Anfänger mehr in CSS, aber irgendwie stehe ich hier gerade auf dem Schlauch. Ich habe zwei Elemente A und B. Bei B:hover möchte ich, dass A seine background-color ändert. Ist soetwas in CSS überhaupt möglich? Ist ja sone Art Querverweis zwischen zwei html Elementen, die mit CSS angesprochen werden können. Nur wüsste ich nicht das es geht. Wenns nicht geht: Wie mach ich das dann mit nur HTML und CSS?

    Der Grund ist n ganz simpler: Ich hab ne normale Navigation, in der ich mit ul und li eine Linkliste darstelle, die ich dann über float:left; formatiere und "schön" gestalte. Ich möchte, dass über die gesamte Navigation (100%width von body) unten ein border:thin solid black; besteht, allerdings bei jedem li der navigation bei li:hover eben der Border unten verschwindet. Wie mache ich das?

    Dankeschön.
  • in: Problem bei Darstellung

    geschrieben von midwar

    Noch ein,zwei Hinweise hinterher:

    - Du wirst es nie hinbekommen, dass eine Homepage beidem Browser, unter jedem Betriebssystem unter jeder möglichen Auflösung gleich aussieht. Das geht so oder so schonmal gar nicht, wenn du nicht monatelange Arbeit reinstecken willst
    - Wenn du dir die Seite selber zusammenbastelst (also jetzt kein fertig CMS etc benutzt, sondern wirklich selber HTML, PHP Code und was auch immer benutzt) ist es wichtig darauf zu achten, dass du % Angaben bei widht und height benutzt. Ein häufiger "Fehler" ist bei derartigen Versuchen, dass man für width einen fixen Wert eingibt und sich dann wundert, wieso der fixe Wert auf anderen Auflösungen anders aussieht. Dementsprechend - wenn es wirklich absolut gleich aussehen soll - % Angaben benutzen.
    - Wie bereits erwähnt empfehle auch ich Browserweichen. Solltest du also versuchen etwas anzuzeigen, was alle Browser können (IE zähle ich nicht zu Browsern, sondern zum Müll) und es geht bei manchen Browsern nicht, musst du für jeden einzelnen Browser, der etwas spezielles nicht anzeigen kann, einen Workaround schaffen.
    - Achte darauf, dass wenn du mit JS arbeitest auch immer ein <noscript> hast
    - und ganz wichtig: Deine Seite sieht noch sehr laienhaft aus. Bring Struktur da rein - und mit Struktur meine ich nicht das Aussehen, sondern den Aufbau im Code! Schreibe valides HTML, halte Regeln ein und schon ist alles kein Problem.
  • in: SQlite installieren?

    geschrieben von midwar

    motoernie schrieb:
    Warum ändesrt du das SQL--File nicht so ab dass es die von dir hewünschte MySSQL Datenbank erzeugt? Sicherungskopie nicht vergessen!


    würde ich liebend gerne sofort machen, nur bitte sag mir wie es geht. Auf bisherige Anfragen habe ich immer nur die Antwort "Da sind SQLite spezifische Sachen drin, deswegen kann das nicht 1zu1 in MySQL convertiert werden" bekommen, ich brauche aber die exacte Struktur wie in dem SQL File!
  • in: SQlite installieren?

    geschrieben von midwar

    Hi,

    ich habe gerade ein kleines Problem damit SQlite auf meinem localhost zum laufen zu bringen. Folgendes Problem: Ich hab eine grosse Datenbank in Form eines .sql files vorliegen, die ich eigentlich auf meinem localhost zum laufen bringen wollte. Kein Problem dachte ich mir, und wollte den Code innerhalb des SQL Files stumpf auf meiner MySQL Installation ausführen. Ging aber nicht - zumindest hat sich mein Apache daraufhin regelmäßig abgeschossen. Warum? Weil die Datenbank, aus der ich die Struktur in Form des SQL Files extrahiert habe, in SQlite vorliegt und das nunmal eine andere Engine ist, als MySQL. Das heißt ich kann vergessen zu versuchen das SQL File so in dieser Form auf meinem localhost zum Laufen zu bringen.

    Also versuche ich jetzt SQlite zum laufen zu bringen, kriege aber immer Fehlermeldungen. Unter anderem habe ich zwischenzeitlich "file is encrypted or is not a database" bekommen, bin dann per Google auf http://www.php.de/datenbanken/52529-erledigt-sqlite-und-xampp-und-firefox-sqlite-manager-dbs-inkompatibel.html gestoßen und habe versucht die Ratschläge dort zu berücksichtigen. Ging nicht. Bei mir sind die drei Extensions genau so makiert:

    extension=php_pdo_sqlite.dll
    ...
    ;extension=php_sqlite.dll
    extension=php_sqlite3.dll

    Was kann ich bitte noch tun?

    Vielen Dank!
  • in: Eigenen Scrollbalken

    geschrieben von midwar

    Also erstmal gibt es die Möglichkeit das Aussehen einer Scrollbar via CSS so zu ändern, dass es so aussieht wie bei Facebook. Das ist aber eher nicht das was du suchst.

    Via Javasscript wird es so funktionieren, dass die aktuelle Mausposition bei onmousedown() auf die Scrollbar (vllt. ein ganz normales graues <div> ?) gespeichert wird und dann bei onmouseup() die Differenz der Mauspositionen errechnet wird und damit dann einfach fest steht in wie weit der user den Bildausschnitt verschoben hat? Kann man dann nicht via JS auf den Pixel genau angeben welchen Bereich der Seite man gerade sehen will?
  • in: HTML sprache

    geschrieben von midwar

    Präzise Fragestellung sind glücklicherweise nicht nötig. Ein jeder hier wird sofort auf Anhieb erraten was du möchtest, von daher können wir dir im Moment auch ungemein gut helfen.

    Auf gut Deutsch? HÄH? WAS WILLST DU?

    Vielleicht hilft dir das hier aber auch: http://de.selfhtml.org/html/referenz/zeichen.htm Zumindest hat mir meine Glaskugel alias Google verraten, dass man mit &auml; ein ä hinbekommt.

    Oder meintest du doch etwas ganz anderes?

    Alternativ kann man einen $Text auch immer durch htmlspecialchars() jagen und somit einen $Text vollautomatisch in die zugehörigen Entities umwandeln.

    Wenn das alles nichts hilft und du doch etwas mir nicht begreifliches meintest, empfehle ich dir einen Hammer zu nehmen und solange auf die Umlaute einzuprügeln, bis sie in der dir gewünschten Form vorliegen.

  • in: Style Tag (Mehrere Styles in einem Attribut?)

    geschrieben von midwar

    Meinst du, dass man einmal eine Farbe für <div> hat und eine andere für das gleiche div:hover ?

    Das wäre dann bei id="bla".

    #bla {
    color:red;
    }
    #bla:hover {
    color:blue;
    }

    Oder was genau meinst du hier?
  • in: RegEx für custom BB Code

    geschrieben von midwar

    hackyourlife schrieb:

    $bbcode = 'dein Text mit bbcodes und einem [IMG2] als Bild sowie noch weiteren [IMG42]';
    $pattern = '/\[IMG([0-9]{1,3})\]/i';
    $replacement = '<img src="uploads/\1.jpg" />';
    $result = preg_replace($pattern, $replacement, $bbcode);
    echo($result);[/code]Das gibt den Text in
    $bbcode
    so aus, dass ale
    [IMGxx]
    durch die entsprechenden
    <img>
    -Tags ersetzt werden.


    Interessant, ich hatte deinen Code überflogen und habe nur $replacement = '<img src="uploads/\1.jpg" />'; gesehen, weswegen ich dachte, dass ALLE Treffer, die so in meinem Text gefunden werden durch 1.jpg ersetzt werden, was ich ja nicht wollte. Deswegen hab ich dann mein Ding von oben mit der for Schleife gebaut. Wusste nicht, dass das auch so geht. Danke!
  • in: RegEx für custom BB Code

    geschrieben von midwar

    Dann müsste es genau so funktionieren:

    preg_match_all("/\[IMG([0-9]{1,3})\]/i",$text,$result);
                   for($j=0;$j<count($result);$j++) {
                        $num = $result[$j][1];
                        $replacement = '<img src="uploads/' . $num . '.jpg">';
    				preg_replace("/\[IMG([0-9]{1,3})\]/i",$replacement,$text);
    			}
                   echo $text;


    Tut es aber nicht...
  • in: RegEx für custom BB Code

    geschrieben von midwar

    Tag,

    ich hasse RegEx einfach. Kann damit nichts anfangen - und trotzdem muss ich gerade mal wieder für einen eigenen BB-Code eine RegEx erstellen - was ich natürlich wieder nicht hinkriege. RegEx ist nicht mein Ding. Wie muss eine RegEx aussehen, damit ich
    den String "[IMG34]" finde? Wobei 34 durch alle möglichen Zahlen ersetzt werden kann. z.B. auch [IMG57].

    Habs jetzt hiermit probiert:

    $test = preg_match($text,"/\[IMG[0-9]{1,3}\]/");


    Aber das funktioniert nicht. Und wie soll ich das ganze dann eigentlich ersetzen? Bei preg_replace kann ich doch als $replacement nur eine feste Variable angeben also beispielsweise ersetze ich [IMGXX] immer mit <img src="uploads/2.jpg" />, ich möchte aber, dass dort auch das XX also die Zahl eingebunden wird. Wie mache ich das?

    Vielen Dank.
  • in: RegExp um BrowserVersion rauszufinden

    geschrieben von midwar

    Hi,

    mal wieder was zu RegExp:

    Ich möchte eigentlich nur die Browserversion und den Browser selber rausfinden, den der User gerade benutzt.

    $Agent = $_SERVER['HTTP_USER_AGENT'];
    $Browser = 'Unknown';
    $Version = "";
    
        // Next get the name of the useragent yes seperately and for good reason
        if(preg_match('/MSIE/i',$Agent) && !preg_match('/Opera/i',$Agent)) {
            $Browser = 'Internet Explorer';
        }
        elseif(preg_match('/Firefox/i',$Agent)) {
            $Browser = 'Mozilla Firefox';
        }
        elseif(preg_match('/Chrome/i',$Agent)) {
            $Browser = 'Google Chrome';
        }
        elseif(preg_match('/Safari/i',$Agent)) {
            $Browser = 'Apple Safari';
        }
        elseif(preg_match('/Opera/i',$Agent)) {
            $Browser = 'Opera';
        }
        
        $Pattern = "/$Browser\/([0-9]\.[0-9]\.[0-9])/";
        $Version = preg_match($Pattern,$Agent);


    Den Browser selber finde ich ja so ganz leicht raus, aber wie kriege ich die Versionsnummer? Bei derartigen

    string(99) "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.52 Safari/536.5"

    $Agent strings komme ich grad irgendwie nicht an die Versionsnummer ran. Was mache ich falsch?

    Achja in php hab ichs auch schon über get_browser() versucht, allerdings kommt dann bei mir immer nur defaultbrowser und version:0 - weiß jemand wieso? Sonst könnte ich ja die Funktion benutzen, sie ist schön einfach.

    Danke!
  • in: pubmed api

    geschrieben von midwar

    trueweb schrieb:Natürlich nicht! Die Daten liegen in JSON vor, dazu brauchst du nur einen JSON-Parser um einfach auf die enthaltenen Informationen zugreifen zu können. Dir einen eigenen (zB mit explodes) zu schreiben, würde dir nur Zeit und Nerven kosten ;)


    Hm mit JSON kenne ich mich nicht so gut aus. Ich hab stattdessen mal bei der entrez API angegeben, dass ich den Text in XML ausgegeben haben möchte. Dann kann ich ja mit simplexml draufzugreifen.

    Also ungefähr so:

    <?php
    
    error_reporting(E_ALL);
    
    $xml_file = simplexml_load_file("http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=1&retmode=xml");
    
    $year = $xml_file->PubmedArticle->PubmedData->History->PubMedPubDate->Year;
    $month = $xml_file->PubmedArticle->PubmedData->History->PubMedPubDate->Month;
    $day = $xml_file->PubmedArticle->PubmedData->History->PubMedPubDate->Day;
    
    ?>


    Von diesem XML Baum:

    <?xml version="1.0" ?> 
      <!DOCTYPE PubmedArticleSet (View Source for full doctype...)> 
    - <PubmedArticleSet>
    - <PubmedArticle>
    - <MedlineCitation Owner="NLM" Status="MEDLINE">
      <PMID Version="1">1</PMID> 
    - <DateCreated>
      <Year>1976</Year> 
      <Month>01</Month> 
      <Day>16</Day> 
      </DateCreated>
    - <DateCompleted>
      <Year>1976</Year> 
      <Month>01</Month> 
      <Day>16</Day> 
      </DateCompleted>
    - <DateRevised>
      <Year>2009</Year> 
      <Month>11</Month> 
      <Day>11</Day> 
      </DateRevised>
    - <Article PubModel="Print">
    - <Journal>
      <ISSN IssnType="Print">0006-2944</ISSN> 
    - <JournalIssue CitedMedium="Print">
      <Volume>13</Volume> 
      <Issue>2</Issue> 
    - <PubDate>
      <Year>1975</Year> 
      <Month>Jun</Month> 
      </PubDate>
      </JournalIssue>
      <Title>Biochemical medicine</Title> 
      <ISOAbbreviation>Biochem Med</ISOAbbreviation> 
      </Journal>
      <ArticleTitle>Formate assay in body fluids: application in methanol poisoning.</ArticleTitle> 
    - <Pagination>
      <MedlinePgn>117-26</MedlinePgn> 
      </Pagination>
    - <AuthorList CompleteYN="Y" Type="authors">
    - <Author ValidYN="Y">
      <LastName>Makar</LastName> 
      <ForeName>A B</ForeName> 
      <Initials>AB</Initials> 
      </Author>
    - <Author ValidYN="Y">
      <LastName>McMartin</LastName> 
      <ForeName>K E</ForeName> 
      <Initials>KE</Initials> 
      </Author>
    - <Author ValidYN="Y">
      <LastName>Palese</LastName> 
      <ForeName>M</ForeName> 
      <Initials>M</Initials> 
      </Author>
    - <Author ValidYN="Y">
      <LastName>Tephly</LastName> 
      <ForeName>T R</ForeName> 
      <Initials>TR</Initials> 
      </Author>
      </AuthorList>
      <Language>eng</Language> 
    - <PublicationTypeList>
      <PublicationType>Journal Article</PublicationType> 
      <PublicationType>Research Support, U.S. Gov't, P.H.S.</PublicationType> 
      </PublicationTypeList>
      </Article>
    -- GELÖSCHT ---
      <Day>1</Day> 
      <Hour>0</Hour> 
      <Minute>1</Minute> 
      </PubMedPubDate>
    - <PubMedPubDate PubStatus="entrez">
      <Year>1975</Year> 
      <Month>6</Month> 
      <Day>1</Day> 
      <Hour>0</Hour> 
      <Minute>0</Minute> 
      </PubMedPubDate>
      </History>
      <PublicationStatus>ppublish</PublicationStatus> 
    - <ArticleIdList>
      <ArticleId IdType="pubmed">1</ArticleId> 
      </ArticleIdList>
      </PubmedData>
      </PubmedArticle>
      </PubmedArticleSet>


    Ich habe mich jetzt allerdings in Google totgesucht und kann nirgendwo finden, wo das hier ausgegebene XML Schema erklärt wird. Manche dieser Einträge erschließen sich mir nicht. Und ich muss auch, wenn du trueweb eben gesagt hast man braucht nciht alle Daten - ich brauche sie schon. Und ich muss diese halt weiterverarbeiten (ungefähr so wie ich es oben angefangen hatte). Aber wo finde ich eine vernünftige Definition des XML Schemas, damit ich vernünftig damit weiterarbeiten kann?

    (Ich musste mitten im XML Schema was rausschnibbeln, weil Lima mich sonst nicht posten lassen wollte - ist daher nicht das komplette).

    EDIT:

    So ich hab angefangen mir einen eigenen Mini-Parser zu basteln:

    <?php
    
    $xml_file = simplexml_load_file("http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=1&retmode=xml");
    
    class Parser {
    	public $Variables = array();
    
    	public function parse($xml,$i) {
    		if($xml->count() > 0) {
    			$i += 1;
    			foreach($xml->children() as $node) {
    				echo "NODENAME: " . $node->getName() . " - EBENE: $i<br>";
    				$nodename = $node->getName();
    				/*echo gettype($node);
    				if(gettype($node) != object) {
    					$this->Variables["$nodename"] = $node;
    				} */
    				$this->parse($node,$i);
    			}
    		}
    	}
    }
    
    $PUBMED_PARSER = new Parser();
    $PUBMED_PARSER->parse($xml_file,0);
    
    var_dump($PUBMED_PARSER->Variables);
    ?>


    Kurz zur Erklärung: ich gehe jede $node des XML Baums durch und schaue, ob sie weitere childs hat. Wenn ja, starte ich die die Funktion mit der neuen $node einfach neu. Wenn nun ein $node Werte gespeichert hat, wie "Year:1976", dann sollen die auch bitte an $PUBMED_PARSER->Variables hinzugefügt werden. Ich möchte also, dass am Ende alle Variablen und Werte, die ich aus dem XML auslesen kann in meinem Variables Array vorhanden sind.

    Ich kann nicht einfach nur bei jedem $node Durchlauf $this->Variables["$nodename"] = $node; schreiben, weil manche $nodes auch einfach nichts beinhalten. Wie aber kann ich das überprüfen? Mit gettype() erhalte ich nur immer object und kann daher nicht über if(gettype($node) != object) gehen. Es muss also irgendwie anders gehen. Wie kann ich überprüfen, ob das aktuelle $node Text oder Zahlen gespeichert hat? echo $node gibt mir einfach immer den Wert aus, wenn einer vorhanden ist - hierüber kann ich also auch nicht unterscheiden.

    Irgendwie sind die simpleXML Erklärungen im Web dazu überhaupt nicht gut, oder habe ich einfach zu eilig gegoogelt und was übersehen? Wer kennt da noch gute Links?

    Danke!
  • in: pubmed api

    geschrieben von midwar

    Hallo,

    ich muss gerade über die PubMed API (PubMed ist eine Datenbank über medizinische Artikel) versuchen ein paar Artikel zu exportieren. Nach ein bisschen rumgesuche, habe ich http://www.ncbi.nlm.nih.gov/books/NBK25501/ gefunden. An sich eine gute, kurze Erklärung, wie die PubNet bzw. Entrez API funktioniert. Nun kriege ich aber eine ganz wichtige essentielle Sachen nicht gebacken, vllt. kann mir da einer von euch weiterhelfen:

    Ich möchte die Artikel mit den IDs 1-100 aus PubNet über die API ansprechen, so dass ich sie nachher mit einem eigenen PHP Script auf meinem Server weiterverarbeiten kann. Wie mache ich das? Artikel "downloaden" geschieht über die fetch Datei von deren API. Also ungefähr so:

    http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=1


    Das gibt mir die Ausgabe:

    Pubmed-entry ::= {
      pmid 1,
      medent {
        em std {
          year 1976,
          month 1,
          day 16
        },
        cit {
          title {
            name "Formate assay in body fluids: application in methanol poisoning."
          },
          authors {
            names ml {
              "Makar AB",
              "McMartin KE",
              "Palese M",
              "Tephly TR"
            }
          },
          from journal {
            title {
              iso-jta "Biochem Med",
              ml-jta "Biochem Med",
              issn "0006-2944",
              name "Biochemical medicine"
            },
            imp {
              date std {
                year 1975,
                month 6
              },
              volume "13",
              issue "2",
              pages "117-126",
              language "eng",
              pubstatus ppublish,
              history {
                {
                  pubstatus pubmed,
                  date std {
                    year 1975,
                    month 6,
                    day 1
                  }
                },
                {
                  pubstatus medline,
                  date std {
                    year 1975,
                    month 6,
                    day 1,
                    hour 0,
                    minute 1
                  }
                },
                {
                  pubstatus other,
                  date std {
                    year 1975,
                    month 6,
                    day 1,
                    hour 0,
                    minute 0
                  }
                }
              }
            }
          },
          ids {
            pubmed 1
          }
        },
        mesh {
          {
            term "Aldehyde Oxidoreductases",
            qual {
              {
                subh "metabolism"
              }
            }
          },
          {
            term "Animals"
          },
          {
            term "Body Fluids",
            qual {
              {
                mp TRUE,
                subh "analysis"
              }
            }
          },
          {
            term "Carbon Dioxide",
            qual {
              {
                subh "blood"
              }
            }
          },
          {
            term "Formates",
            qual {
              {
                subh "blood"
              },
              {
                mp TRUE,
                subh "poisoning"
              }
            }
          },
          {
            term "Haplorhini"
          },
          {
            term "Humans"
          },
          {
            term "Hydrogen-Ion Concentration"
          },
          {
            term "Kinetics"
          },
          {
            term "Methanol",
            qual {
              {
                subh "blood"
              }
            }
          },
          {
            term "Methods"
          },
          {
            term "Pseudomonas",
            qual {
              {
                subh "enzymology"
              }
            }
          }
        },
        substance {
          {
            type nameonly,
            name "Formates"
          },
          {
            type cas,
            cit "124-38-9",
            name "Carbon Dioxide"
          },
          {
            type cas,
            cit "67-56-1",
            name "Methanol"
          },
          {
            type ec,
            cit "1.2.-",
            name "Aldehyde Oxidoreductases"
          }
        },
        pmid 1,
        pub-type {
          "Journal Article",
          "Research Support, U.S. Gov't, P.H.S."
        },
        status medline
      }
    }


    Dort ist alle relevante Information über den PubMed Artikel mit der ID 1 enthalten. Ich möchte aber die Artikel 1 bis 100 erhalten. Ich habe schon Angaben wie id=1:100 etc. durchprobiert. WIe kriege ich das hin? So wie ich das in der Erklärung gesehen habe, funktioniert nur eine Aufzählung der einzelnen Artikel, aber ich habe eher wenig Interesse daran sämtliche Artikel von 1 bis 100 aufzuzählen. Ja, ich weiß ich kann mir ein PHP Script schreiben, dass mit einer for Schleife 100 mal die jeweilige URL aufruft, aber das muss doch eleganter gehen.

    Zweites Problem: Wenn ich nun die jeweilige Ausgabe habe, wie verarbeite ich die mit PHP möglichst effizient? Soll ich da einfach file_get_content($url); benutzen und dann die jeweilige Struktur mit explodes() zerlegen, oder geht das eleganter?

    Danke.

  • in: FF zeigt Content nicht wie gewünscht an

    geschrieben von midwar

    Da beginnt ja langsam mein Problem:

    Mein Onkel ist etwas ähh "konservativ" und hat eine starke Abneigung gegenüber MS, von daher hat er als allererstes den Internet Explorer auf seinem PC zerschossen, so dass ich das dort nicht nachtesten kann. Das einzige was ich sicher weiß ist: Xp 32Bit, FF (keine Ahnung welche Version und das war's). Ich kann also weder irgendwelche Sachen nachtesten, höchstens mutmaßen. Das ganze ist ein ganz normales Login System per Session, das dann halt nachfragt, ob man eingeloggt ist und die nötigen Rechte hat. Funktioniert überall (bei denen ich es getestet habe), außer bei ihm. Woran kann sowas liegen?
  • in: FF zeigt Content nicht wie gewünscht an

    geschrieben von midwar

    tid-gaming schrieb:
    Dann muss etwas am System verstellt seien.
    JavaScript, Cookies, etc. vielleicht blockiert?

    Oder wie erfolgt das einloggen?


    Das erfolgt mit Sessions. Also wenn PW und UID mit denen in der Datenbank übereinstimmen, wird $_SESSION['name'] = $name; gesetzt. Dann erfolgt beim anzeigen des contents folgender Ablauf:

    Wenn Eingeloggt:
    Wenn Rechte:
    Zeige Text in <textarea>
    Sonst:
    Zeige nur Text normal
    Sonst:
    Zeige nur Text normal
  • in: FF zeigt Content nicht wie gewünscht an

    geschrieben von midwar

    Hi,

    ich bastel grad für meinen Onkel eine stinknormale HP mit HTML, CSS und PHP. Soweit nichts neues, allerdings ist jetzt ein Fehler aufgetreten, den ich mir nicht erklären kann. Die ganze Seite ist so eine Art eigenes Mini-CMS, damit er die Inhalte selber ändern kann, und ich nicht immer dran rumfrickeln muss. Also kurz den content in einer DB gespeichert, wird dann bei jedem Seitenaufruf aus der DB ausgelesen und angezeigt. Des Weiteren gibt es nun ein paar Benutzerkonten, die verschiedene Rechte haben. Nun hab ich eine Abfrage, die vom Sinn her ungefähr so ist:

    WENN eingeloggter_user in rechte_array

    Also, wenn er die Rechte hat, die aktuelle Seite zu ändern, wird ihm der Content aus der Datenbank einfach in einer <textarea> angezeigt und er kann ihn halt ändern. Problem: Bei mir (W7, 64bit, Chrome, FF, IE, etc) funktioniert es. Bei meinem Vater auch. Nur bei meinem Onkel nicht. Wenn er sich auf seinem Benutzerkonto einloggt, und Seiten aufruft, bei denen er die Recht hätte, erscheint der Text nur normal und nicht in einer <textarea>. Daraufhin hab ich mich mal mit den anderen Accounts bei sich eingeloggt - funktioniert dort auch nicht. Dann hab ich mich mal mit seinem Account bei mir zuhause eingeloggt - bei mir klappt es und ich kann editieren. Gleichzeitig funktioniert es aber nicht nur auf seinem PC nicht, sondern auch auf seinem Laptop - beide XP32bit, FF.

    Woran kann sowas bitte liegen? Die Abfrage ist jedesmal natürlich die gleiche, bei mehreren Personen, sogar auf meinem IPad, funktioniert es - nur bei ihm nicht.
  • in: ein kleines bisschen bukkit ;)

    geschrieben von midwar

    Ok, hab ich verstanden nur kann ich keinen der Vorschläge hierauf anwenden:

    import org.bukkit.Bukkit;
    import org.bukkit.Server;
    import org.bukkit.World;
    //import org.bukkit.Location;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import java.util.Timer;
    import java.util.TimerTask;
    
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.event.entity.PlayerDeathEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.event.player.PlayerToggleSneakEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class HideAndSeek extends JavaPlugin {
    	
    	@Override
    	public void onDisable() {
    		// When the plugin is disabled
    		System.out.println("HideAndSeek disabled!");
    	}
    	
    	@Override
    	public void onEnable() {
    		// When the plugin is enabled
    		System.out.println("HideAndSeek enabled!");
    		World world = getServer().getWorlds().get(0);
    		world.setAutoSave(false);
    	    world.save();
    		getServer().getPluginManager().registerEvents(new LoginListener(), this);
    		getServer().getPluginManager().registerEvents(new BlockListener(), this);
    		getServer().getPluginManager().registerEvents(new SneakListener(), this);
    		getServer().getPluginManager().registerEvents(new DeathListener(), this);
    	}
    	public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
    		// Command to start a new round
    		if(cmd.getName().equalsIgnoreCase("newround")){ 
    			new Round();
    			World world = getServer().getWorlds().get(0);
    			Round.main(sender,world);
    		}
    		return false;
    	}
    	public class LoginListener implements Listener {
    		// Sets every logged_in player to sneak-mode 
    	    @EventHandler
    	    public void normalLogin(PlayerJoinEvent event) {
    	        Player p = event.getPlayer();
    	        p.setSneaking(true);
    	    }
    	}
    	public class BlockListener implements Listener {
    		// Stops every player from breaking blocks
    		@EventHandler
    		public void BlockBreak(BlockBreakEvent event) {
    			Player p = event.getPlayer();
    			p.sendMessage("You are not allowed to break Blocks on this map!");
    			event.setCancelled(true);
    		}
    	}
    	public class SneakListener implements Listener {
    		// If someone wants to stop his sneak mode, the event get cancelled
    		@EventHandler
    		public void SneakChange(PlayerToggleSneakEvent event) {
    			event.setCancelled(true);
    		}
    	}
    	public class DeathListener implements Listener {
    		// If someone dies teleports them into save room and delete them from current Groups
    		// what if a round hasnt startet?
    		@EventHandler
    		public void DeathTeleport(PlayerDeathEvent event) {
    			Player p = event.getEntity();
    			p.sendMessage("You have died. Wait until the round has ended!");
    			//p.teleport(TARGET);
    			/*for(int i = 0; i < Round.Runners.length;i++) {
    				if(Round.Runners[i] == p) {
    					Round.Runners[i] = null;
    				}
    				else {
    					Round.Pursuers[i] = null;
    				}
    			}
    			System.out.println(Round.Runners);
    			System.out.println(Round.Pursuers);*/
    		}
    	}
    	void reload() {
    		Server server = getServer();
    		server.reload();
    	}
    	public static class Round {
    		static Timer timer;
    		static boolean running = false;
    		static Player[] Runners = {};
    		static Player[] Pursuers = {};
    		static World current;
    		public static void main(CommandSender sender,World world) {
    			// Starts a new round 
    			if(running == false) {
    				current = world;
    				running = true;
    				
    				// Dividing Players into Groups
    				/*Player[] list = Bukkit.getOnlinePlayers();
    				for (int i = 0;i < list.length;i++) {
    					if(Runners.length * 2 == Pursuers.length) {
    						Runners[i] = list[i];						
    					}
    					else {
    						Pursuers[i] = list[i];
    					}
    				}
    				System.out.println(Runners);
    				System.out.println(Pursuers);*/
    				
    				timer = new Timer();
    				timer.schedule(new timerTask(),0,1000);
    			}
    			else {
    				sender.sendMessage("The current Round is still running!");
    			}
    		}
    		public static void showTimer(int time) {
    			// Output to every Player about the time this round still got
    			Player[] list = Bukkit.getOnlinePlayers();
    			for(Player p : list){
    			    p.sendMessage("Time in this Round left: " + time + " Seconds");
    			}			
    		}
    		static class timerTask extends TimerTask {
    			int ticks = 0;
    			int timeleft = 0;
    			int[] data = {200,100,60,30,10,9,8,7,6,5,4,3,2,1,0};
    			public void run() {
    				if(ticks < 100) {
    					// Every tick of a running round
    					timeleft = 99-ticks;
    					ticks++;
    					for(int i = 0;i < data.length;i++) {
    						if(data[i] == timeleft) {
    							// Shows only specific outputs
    							Round.showTimer(timeleft);							
    						}
    					}
    				}
    				else {
    					// If a round has ended
    					timer.cancel();
    					System.out.println("[HideAndSeek]: Round finished!");
    					HideAndSeek.reload();
    					/*Location runners;
    					Location pursuers;
    					for(Player p : Runners) {
    						p.teleport(runners);
    					}
    					for(Player p : Pursuers) {
    						p.teleport(pursuers);
    					}
    					*/
    					running = false;
    				}
    			}
    		}
    	}	
    }


    (das ist der gesamte Code von mir bisher).

    Es geht um das HideAndSeek.reload(); ganz unten. Ich möchte einfach nur, dass wenn eine Spielrunde zu ende ist der Server ganz stumpf restartet und die Map neu lädt (eigentlich möchte ich nur, dass die Map neu lädt). Das heißt der reload() Befehl muss genau dort unten ausgeführt werden will. Allerdings kann ich das static von TimerClass bzw. Round dadrüber nicht wegnehmen, weil dann der andere Kram nicht mehr funktioniert - will heißen diese Möglichkeit fällt schon mal raus. Und in der reload() Funktion ein Objekt von org.bukkit.Server zu erzeugen geht auch nicht. Dementsprechend kann ich dadurch nicht obj.reload() anwenden. Also was macht man bitte in so einem Fall?
  • in: ein kleines bisschen bukkit ;)

    geschrieben von midwar

    Ok, danke hab ich kapiert und angepasst.

    Was bedeutet eigentlich bei Java genau static? Ich bekomme bei einer stinknormalen Funktion, die ich 60 Codezeilen vorher bereits ohne Fehlermeldung anwende immer diese Meldung:

    Cannot make a static reference to the non-static method getServer() from the type JavaPlugin

    Es geht dabei um diesen Code: World world = getServer().getWorlds().get(0);
  • in: ein kleines bisschen bukkit ;)

    geschrieben von midwar

    Hi,

    ich kenne mich nur gut mit PHP und Python aus, habe aber gerade Lust ein kleines eigenes Plugin für Bukkit (minecraft) zu basteln. Da ich wie gesagt von Java nicht wirklich Ahnung habe stehe ich auch schon direkt vor meinem ersten Problem, das ich gerade nicht gelöst bekomme.

    // Dividing Players into Groups
    				Player[] Runners = null;
    				Player[] Pursuers = null;
    				Player[] list = Bukkit.getOnlinePlayers();
    				for (int i = 0;i < list.length;i++) {
    					if(Runners.length * 2 == Pursuers.length) {
    						Runners[i] = list[i];						
    					}
    					else {
    						Pursuers[i] = list[i];
    					}
    				}


    Null pointer access: The variable Runners can only be null at this location

    Ja, mir ist schon klar was die Fehlermeldung bedeutet, nämlich dass die Arrays Runners und Pursuers in der for Schleife beide null sind und er deswegen von "null" nicht einfach die Länge nehmen kann. Das Problem ist aber, wenn ich das = null; weglasse und einfach nur Player[] Runners; initialisiere, dann meckert er in der forschleife, dass beide nicht initialisiert sind. Was soll ich jetzt bitte tun?
  • in: Raspberry Pi

    geschrieben von midwar

    Nope, bei Nitrado haben wir grade einen normalen Minecraft Server - und der laggt des öfteren mal. Insgesamt bin ich deswegen nicht allzu zufrieden mit dem Service.

    Es gibt aber noch andere Gründe: Einmal würde ich den Server gerne nebenbei als Dateiablage für mich persönlich benutzen, so dass ich von überall drauf Zugriff habe und andererseits würde ich durch das Administrieren eines eigenen Servers sicher einiges lernen. Von daher bevorzuge ich einen eigenen Server.

    Um das zusammenzufassen:

    - Minecraft Server mit bis zu 20 Spielern - bukkit und ein eigenes Plugin, das kaum Leistung verbraucht sollen lauffähig sein.
    - Ich will den als Dateiablage benutzen können.
    - eventuell eine kleine Website drauf hosten?

    Was braucht man da so für Hardware? Gesagt wurde minimal 2GB Ram - ok aber was ist mit dem Prozessor?, wie viel Speicher?, RAID eventuell?, was für ne Internetanbindung bräuchte der?, wie hoch würden sich die Stromkosten belaufen? etc etc.
  • in: Raspberry Pi

    geschrieben von midwar

    Hm, was wäre denn die minimale Serverhardware, die ich so für einen MC Server bräuchte, damit der bis sage ich mal 20 Spieler reibungslos läuft?
  • in: Raspberry Pi

    geschrieben von midwar

    Hi,

    seit neustem gibt es ja diesen Raspberry Pi, der gerade mal ca 20€ kostet. Nun bin ich leider nicht besonders bewandert darin die Leistung von dem Ding einzuschätzen. Wieviel kann man so mit dem Ding anstellen? Ich überlege mir so einen zu holen, um darauf Minecraft laufen zu lassen als Server. Geht das? Wieviel würde der ungefähr verkraften?

    Danke!
  • in: Gebannt in Online Spielen Rechtmäßig?

    geschrieben von midwar

    Ich habe eine ganz simple Frage gestellt und wollte da ganz normal drüber diskutieren. Was hier einige Leute dann gleich für Antworten ablassen (s. mein Gästebuch) ist schon enorm und zeugt von absoluter Ignoranz. Ich nehme an man mein Post wurde weder richtig verstanden, noch durchgelesen von den entsprechenden Leuten.

    Um ein paar Sachen klar zu stellen:

    1. Es geht mir nicht darum, OB man gebannt wird, wenn man mal beleidigt (was ich ok finde und akzeptiere), sondern um die ANGABE VON GRÜNDEN! Ich wurde gebannt, OHNE ANGABE VON GRÜNDEN! Auf Nachfragen gibt es keine Antwort, NIRGENDWO ist ersichtlich WARUM ich gebannt wurde. Stattdessen versucht man sich einzuloggen und es passiert: Nichts "Du wurdest gebannt vom Tribunal". Warum? Erklärung? Fehlanzeige! Ich kann mir nicht vorstellen, dass ein gekauftes Produkt einfach so OHNE ANGABE VON GRÜNDEN gesperrt werden kann. Mit Begründung (z.B. wegen Flamen), würde ich das ja akzeptieren und verstehen, aber eben nicht ohne.

    2. Es ist schon lustig, dass man mir hier gleichzeitig vorwirft zu lügen, da behauptet wird oder gezweifelt wird ich hätte wirklich Platz 20. erreicht. Nun es interessiert mich zwar herzlich wenig was einige Leute hier über mich denken oder behaupten, aber die Art und Weise wie die Personen das tun ist so lächerlich und zeugt von soviel Unwissen rund um Lol, dass ich da einfach was entgegnen muss: 2268 Elo, Season 1, Platz 20 Europa - wenn jetzt noch irgendwelche dämlichen Kommentaren (zu diesem eigentlich total unwichtigen Fakt) kommen, kann ich mich darüber nur noch schlapplachen.

    3. Dann zum Thema "Fucking Noob" und "Stop that retarded dumb". Wenn ihr euch auskennen würdet, dann würdet ihr merken, dass Noob bei nicht nur Gelegenheitsspielern sondern Dauerspielern keine wirkliche Beleidigung ist. "Noob" ist eine Feststellung, nämlich dass der andere ein Anfänger ist - oder zumindest ein schlechter Spieler. Von daher kann dort nicht von einer Beleidigung die Rede sein. Ach ja dann was zur Häufigkeit: Ich wurde vor 2 Wochen über 30 Runden hintereinander getrollt und verlor dabei rund 500 Elo (nein, ist kein Witz). Wenn man dann in 5 von diesen über 30 Spielen als Reaktion auf diese total behämmerten Aktionen und Leute, die einen absichtlich verlieren lassen mal solche Sätze los lässt, dann ist das menschlich. Irgendwelche irrwitzigen Leute die gleich einen permanenten Bann verlangen, haben keine Ahnung.

    4. "Dieses Noobgequatsche von pseudo Profis kann einen ganz schön auf den Sack gehen." Nun einmal dürfte ich mit Platz 20 nicht zu einem Pseudo-Profi gehören und andererseits musst du ja hier nicht drauf antworten, sondern kannst deine Antwort dann Antwort dann für dich behalten. Aber ist ja immer schön zu sehen, wenn Leute, die einen nicht kennen, direkt als irgendetwas abstempeln und meinen sich eine Meinung über einen Bilden zu können. Wer ist dann hier der Ignorantere?

    5. Zum Thema " Ich habe selbst in der ESL gespielt, aber deshalb finde ich trotzdem das man seinen Ehrgeiz lieber in das RL verfrachten sollte.": Das interessiert mich ehrlich gesagt herzlich wenig. Es gibt Leute, für die sind ihre Computerspiele alles und für andere eben nicht, das kann jeder für sich selbst entscheiden. Nicht umsonst gibt es einige, wenige, die mit Computerspielen ihr Geld verdienen (als Spieler!).

    6. Man merkt, dass ihr alle noch nie bei 2.2k+ gespielt habt. Andererseits würdet ihr wissen, dass die meisten Trolle gerade ab 1800+ zu finden sind und man teilweise solche asozialen Aktionen dort sieht, dass es einfach nicht zu fassen ist. Und auch hiernochmal der Hinweis: Ich habe in ca. 3000+ Spielrunden in LoL kein einziges mal geleavt und gehöre damit NICHT zu den asozialen Trollen, die extra alles kaputt machen - gelegentliches Flamen wegen Idioten ausgenommen.

    7. "Und wenn das für dich keine Lösung ist, musst du dir eben ein paar Freunde suchen, so dass ihr dann als geschlossenes 5er Team in die Warteschlange geht. " in SoloQ nicht möglich.

    8. "Sei ein Vorbild für die Community. Ich hasse es wenn Dyrus, Reginal oder irgendeiner, der sogenannten Top-Spieler mit ihren Smurfs rumtrollen, ragen und beleidigen. Egal wer sowas tut: Riot soll gegen jeden vorgehen". Das Problem hierbei ist, dass die Spieler von Offline Events nicht gebannt werden. Ich habe sooft mich Bannwürdigen Spielern von Offline-Events zusammenspielen müssen, die so oft absichtlich Spiele verloren haben, dass es einfach nicht mehr feierlich ist. Aber nein, dann kommt ja die Fanbase eines jeden bekannten Spielers und schon ist man raus: Womit man beim nächsten Problem ist. Das Tribunal so wie es jetzt ist, ist ein Witz. Dazu folgende Überlegung: Ich würde nicht gelegentlich flamen, würde ich nicht getrollt werden. Das heißt Trollen anderer Spieler ist der Auslöser hierzu. Und anstatt den Auslöser zu bekämpfen, bannt Riot nach wie vor Flamer anstatt Trolls bevorzugt. Das System ist einfach nur Schrott.

    9. "Und seit wann ist Computerspielen ein Sport? Man bewegt sich nicht, man sitzt da und hackt auf seiner Maus/Tastatur herum...... " Schach gilt auch als Sport und bei einigen Computerspielen sind wirklich gutes Strategisches Denken oder gute Reflexe gefragt von daher kann man das schon als Sport durchgehen lassen. Und selbst wenn dir diese Einschätzung nicht passt: Dann sei so freundlich und spar dir deinen Sarkasmus a la "Oh, wieder einer der so erfahrenen Online-Zocker. "

    10: "Fucking Heuling N00B Lima ist kein Forum um sich über spieleverbannungen auszuheulen geht anderen leuten damit auf die Nerven nicht uns". Du regst dich über mein scheinbar andauerndes Geflame in Online-Spielen auf, was du ja auch so gut beurteilen kannst nach einem Post und lässt dann so einen Post los?
  • in: Gebannt in Online Spielen Rechtmäßig?

    geschrieben von midwar

    Hallo,

    ich spiele sehr gerne ein Online-Spiel namens Leage of Legends, in dem ich eine Zeit lang sogar äußerst erfolgreich spielte (maximal erreichter Platz in der Rangliste: 20 aus Europa). Will heißen ich gehörte dort zu den besten Spielern. Wenn ich dann Runden mit zufälligen Spielern gespielt habe, die klar schlechter waren, hat mich das natürlich aufgeregt. In diesem Spiel kommt es öfters vor, dass man so genannten "Trollen" begegnet, die absichtlich Spiele zerstören. Bei sowas rastet man dann schonmal aus, da dabei unnötig Zeit verschwendet wird und man gleichzeitig an Elo-Bewertung einbüßt. Das gute Spieler, dann mit Beschimpfungen wie "Fucking Noob" oder "stop that retarded dumb" reagieren, dürfte sicherlich nicht unangemessen sein.

    Nun zu meiner Frage: Ich wurde in League of Legends gerade für eine Woche gebannt, gerade weil ich eben eine dieser Beschimpfungen losgelassen habe, weil a) entweder mich irgendjemand mit seinen dämlichen Aktionen zu sehr genervt hat und diese scheinbar einfach nur schlecht waren, oder weil b) irgendein Troll mein Spiel wieder absichtlich zerstört hat. Wenn man gebannt ist, kann man sich nicht einloggen, es wird lediglich angezeigt wie lange man noch gebannt ist - ohne Grundangabe. Unabhängig davon, dass die meisten es wohl verstehen dürften, wenn ich da gelegentlich mal ausraste und derartige Beschimpfungen loslasse (nie dabei waren aber Rassismus oder wirklich schlimmere Beschimpfungen), würde ich gerne wissen, ob sowas über Rechtens ist. Immerhin habe ich einmal 40€ für dieses Spiel bezahlt. Will heißen ich habe eine Leistung erworben. Und gleichzeitig bin ich jetzt (OHNE ANGABE VON GRÜNDEN) gebannt und kann nicht spielen. Wie bitte verträgt sich der Erwerb eines Produktes für echtes Geld mit gleichzeitigem Deaktivieren des Kontos ohne Angabe von Gründen? Ich kann mir wirklich schlecht vorstellen, dass das legal sein soll. Dann könnte ich ja genau so gut auch Webserver vermieten und meinen Kunden die gemieteten Server von heute auf morgen ohne Angabe von Gründen entziehen.

    Ich weiß, dass in Foren wie diesen keine Rechtsberatung zu kriegen ist (will ich auch gar nicht), ich möchte nur wissen, ob ihr da meinem Bauchgefühl zustimmt, dass da eigentlich nicht rechts sein kann - und natürlich was man da machen kann. Denn ganz ehrlich: In meiner Langen Zeit, die ich League of Legends jetzt spiele, habe ich selber nie "Getrollt" und nie absichtlich Spielrunden kaputt gemacht und wenn man dann selber gebannt wird, obwohl man derartigen Mist nie gemacht hat, geht einem das schon gehörig gegen den Strich.

    Vielen Dank.
  • in: Ein paar anstrengende CSS Positionierungsfragen

    geschrieben von midwar

    Hallo,

    vielen Dank für eure Antworten - Problem 2 und 3 sind gelöst (bei 3 hab ich mich einfach nur vertippt und aus eigener Blödheit nichts gemerkt. ;))

    Bei Problem Nummer Eins mit dem Ausklappmenü, gibt es nun immer noch eine Sache, die nicht klappen möchte. Ich habe es jetzt zwar hinbekommen eine Menüleiste (diesmal aus <ul><li> etc.) zu basteln, bei denen die Unterpunkte dann auch entsprechend aufklappen, allerdings verschiebt sich der Content der Website dann ebenfalls nach unten.

    Beispiel: Ich fahre mit der Maus über den Menüpunkt "News", wo sich 2 Unterlinks befinden, die nun aufklappen, dann verschiebt sich der gesamte Content der Website dadrunter um 40px nach unten, weil die beiden Unterlinks, die aufklappen, genau 40px hoch sind. Wie kann ich das aber nur einstellen, dass das ganze ÜBER den Content geschoben wird? Ich habe in den Tutorials was von clear:both; gelesen und versucht, aber nicht hinbekommen. Jemand ne Idee?

    Vielen Dank. :)

Login zum Webhosting ohne Werbung!