Avatar billede satyriasis Nybegynder
08. august 2007 - 21:58 Der er 49 kommentarer og
1 løsning

array virker ikke på den ene computer

Hej Eksperter

Jeg har nok det mest underlige spørgsmål i denne verden..
Jeg har udviklet en side i php..

På siden har jeg en streng der hedder $streng = "1-2-3-4"

Jeg har udfra dette dannet et array vha. explode("-", $streng.

Når jeg så forsøger at udskrive fx $array[1] bliver det fint vist på min laptop og stationære PC.. Men når jeg prøver det af på en lille wannabe PDA, der i øvrigt kører samme udgave af FireFox som de to andre computere kan den ikke udskrive dette..

Så vidt jeg ved er PHP da et serversprog, så de burde da blive vist ens.

Hvad kan der være galt?
Avatar billede satyriasis Nybegynder
08. august 2007 - 22:02 #1
Hvis jeg selv danner et array.. fx Array(1,2,3,4) virker det fint nok :S
Avatar billede olebole Juniormester
08. august 2007 - 22:02 #2
<ole>

Det er formodentlig bare p.gr.a. slammet markup-kode. Hvad skrives ud i dokumentet?

/mvh
</bole>
Avatar billede olebole Juniormester
08. august 2007 - 22:04 #3
- og hvor kommer strengen fra? Er den hardcoded ind i dokumentet?
Avatar billede satyriasis Nybegynder
08. august 2007 - 22:05 #4
Det afgører hvilken del af siden der skal vises... Fx hvis del1 eksisterer i arrayet skal side 1 vises som det første..

Som sagt hvis jeg danner det som et array bliver side1 vist fint nok.. Men ligeså snart det er med explode virker det ikke
Avatar billede satyriasis Nybegynder
08. august 2007 - 22:05 #5
Strengen kommer fra en mySQL database
Avatar billede olebole Juniormester
08. august 2007 - 22:08 #6
Må jeg se koden, der bliver skrevet ud i dokumentet (ViewSource)? Det har med garanti ikke noget med PHP at gøre  ;o)
Avatar billede olebole Juniormester
08. august 2007 - 22:09 #7
Hvad er MySQL-feltets datatype?
Avatar billede satyriasis Nybegynder
08. august 2007 - 22:09 #8
Hvis jeg hårdkoder strengen ind virker det også fint.. Så det må være kaldet til databasen der går galt... Men hvordan kan det gøre en forskel?
Avatar billede satyriasis Nybegynder
08. august 2007 - 22:11 #9
Kan desværre ikke vise dig source koden da det er noget jeg udvikler i samarbejde med et firma...

Datatypen er tinytext
Avatar billede olebole Juniormester
08. august 2007 - 22:11 #10
Den ene klient bruger vel utf-8 og den ande iso-8859-1 som tegnsæt  =)
Avatar billede olebole Juniormester
08. august 2007 - 22:12 #11
Hvis du henter én og samme streng fra DB'en, oplever du formodentlig ikke problemet, vel? Det opstår formodentlig kun på PDA'en med en streng, skrevet fra PDA'en ... ikk'?
Avatar billede satyriasis Nybegynder
08. august 2007 - 22:13 #12
kan godt være du har ret ja.. Den kører med engelsk styresystem hvorimod de to andre kører med dansk
Avatar billede satyriasis Nybegynder
08. august 2007 - 22:14 #13
jeg kalder kun strengen fra databasen.. jeg har indsat strengen fra min laptop
Avatar billede olebole Juniormester
08. august 2007 - 22:14 #14
Har du været inde og tjekke præcist, hvad der står i tabellen?
Avatar billede satyriasis Nybegynder
08. august 2007 - 22:16 #15
ja.. der står 1-2-3-4 som der skal
Avatar billede satyriasis Nybegynder
08. august 2007 - 22:16 #16
hvis jeg prøver at lave echo på databasekaldet bliver der vist 1-2-3-4 på mine to PC'er men på PDA tingen vises der intet
Avatar billede olebole Juniormester
08. august 2007 - 22:17 #17
Hvis du har skrevet det hele fra samme laptop, er det ikke her problemet ligger.

Hvis tingene var, som du beskriver dem, kan du ikke få de fejl, du beskriver. Derfor må der være noget, du ikke fortæller - men det er næsten umuligt at hjælpe, når vi ikke kan få lov at se noget kode og/eller et link
Avatar billede satyriasis Nybegynder
08. august 2007 - 22:23 #18
Kan godt vise den øverste del af min kode, som er stedet hvor det går galt:

<?
require('sql/config.php');

if(!$_COOKIE['Log']) {
    echo "Du har ikke adgang til dette system!";
    exit;

} else {
    define("TJEK", "1");
    $find_user = mysql_query("SELECT id, steps FROM users WHERE access = '".$_COOKIE['Log']."'");
    if($find_user) {
        $user = mysql_fetch_array($find_user);
        $userid = $user['id'];
        $steps = $user['steps'];
       
        $split = explode("-", $steps);

        if(in_array(1, $split))
            $step1 = true;
        if(in_array(2, $split))
            $step2 = true;
        if(in_array(3, $split))
            $step3 = true;
        if(in_array(4, $split))
            $step4 = true;
    } else {
        echo "Database fejl!";
    }
}

?>
Avatar billede satyriasis Nybegynder
08. august 2007 - 22:24 #19
Det den gør nedenunder burde være irrelevant, da den sagtens kan vise det hvis jeg hårdkoder $steps
Avatar billede olebole Juniormester
08. august 2007 - 22:28 #20
Det eneste, der kan være galt i dén kode er, at kagen ser sær ud. Hvad stå der, hvis du udskriver $_COOKIE['Log']?
Avatar billede olebole Juniormester
08. august 2007 - 22:29 #21
Du tjekker forhåbentlig ikke, om brugeren er logget ind på dén måde?  =8-O

Så kan brugeren jo bare åbne sin kage og skrive "Hvad rager det dog dig?" ... så bliver han betragtet som værende logget ind!
Avatar billede satyriasis Nybegynder
08. august 2007 - 22:30 #22
der står: RxXnZCOmOqUTajx86pa3ungVBPuKyOTUVOC  som er det der skal stå...
Avatar billede satyriasis Nybegynder
08. august 2007 - 22:32 #23
jo det er sådan det fungerer.. Men de får ikke adgang til noget, da den jo kalder i databasen, hvor access = $_COOKIE, resten af sidens indhold bliver ikke vist uden de kald der står inde i if($find_user)
Avatar billede olebole Juniormester
08. august 2007 - 22:34 #24
Så kan det ikke være i kode, du viser her, der er noget, der går galt ... jeg er bange for, vi ikke kommer videre, hvis du ikke kan vise mere  ;o)
Avatar billede olebole Juniormester
08. august 2007 - 22:36 #25
Hvad sker der, hvis du skriver:

if(!$_COOKIE['Log']) {
    echo "Du har ikke adgang til dette system!";
    exit;

} else {
    print "HejHop";
Avatar billede satyriasis Nybegynder
08. august 2007 - 22:36 #26
Jeg har lige prøvet i Interet Explorer 6 på selvsamme maskine.. og der virker det også fint.. så det er kun i Firefox det går galt på den..
Avatar billede satyriasis Nybegynder
08. august 2007 - 22:37 #27
der står "HejHop" både på PC'erne og PDA'en
Avatar billede olebole Juniormester
08. august 2007 - 22:38 #28
Kan du se ViewSource i FF på PDA'en? Hvad står der?
Avatar billede olebole Juniormester
08. august 2007 - 22:39 #29
Jeg hælder altså stadig til skidt markup  =)
Avatar billede satyriasis Nybegynder
08. august 2007 - 22:41 #30
Jeg kan trykke "Vis Sidens Kildekode" i browseren hvis det er det du mener?

Det der viewsource i PHP kan jeg ikke huske hvordan fungerer..
Avatar billede olebole Juniormester
08. august 2007 - 22:42 #31
Det er det, jeg mener ... sidens kildekode
Avatar billede satyriasis Nybegynder
08. august 2007 - 22:43 #32
Du kan egentlig godt se resten af siden også, uden det afslører noget.:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<?
    if(!$_GET['step']) {
        if($step1 == true)
            $step = 1;
        elseif($step1 == false && $step2 == true)
            $step = 2;
        elseif($step1 == false && $step2 == false && $step3 == true)
            $step = 3;
        elseif($step1 == false && $step2 == false && $step3 == false && $step4 == true)
            $step = 4;
    }
    else
        $step = $_GET['step'];

?>

<html>
<head>
    <link rel="stylesheet" href="css/styles.css" type="text/css" />
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
        <meta name="robots" content="none" />   
    <title>  </title>
</head>
<body>
    <div class="screen">
        <?
            if($step != 0)
                include('step'.$step.'.php');
               
        ?>
    </div>
</body>
</html>
Avatar billede olebole Juniormester
08. august 2007 - 22:52 #33
For det første kan IE6 slet ikke læse et XHTML 1.1 dokument, men vil tilbyde dig at downloade det i stedet. Hvis den kan vise det, server du dokumentet med forkert MIME-type ... typen skal være 'application/xhtml+xml'.

En HTML-meta har jo heller ikke en dyt at gøre i et XHTML-dokument:
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />

Dernæst har det her jo ikke et klap med den kode, vi indtil nu har diskuteret. Hvorfor det? Giver denne kode samme fejl - og hvis, den gør, hvad skrives der så ud i dokumentet, hvis du skriver:

    if(!$_GET['step']) {
        if($step1 == true)
            $step = 1;
        elseif($step1 == false && $step2 == true)
            $step = 2;
        elseif($step1 == false && $step2 == false && $step3 == true)
            $step = 3;
        elseif($step1 == false && $step2 == false && $step3 == false && $step4 == true)
            $step = 4;
    }
    else
        $step = $_GET['step'];

print $step;
Avatar billede satyriasis Nybegynder
08. august 2007 - 22:56 #34
Det koden gør at hvis der i URL'en ikke er angivet ?step så skal den vælge $step1, hvis $step1 altså er i arrayet, hvis $step1 ikke er i array skal den måske vise $step2.

Det er lavet for at man kan fravælge nogle steps.
Avatar billede satyriasis Nybegynder
08. august 2007 - 23:04 #35
Hvis jeg skriver ?step=2 i URL'en viser den fint nok step2, men kaldet til databasen fejler :S

Skriver jeg ?step=1 viser den også step1 uden problemer...
Avatar billede satyriasis Nybegynder
08. august 2007 - 23:04 #36
Så det er altså hver gang den skal lave et databasekald at der går noget galt..
Avatar billede erikjacobsen Ekspert
08. august 2007 - 23:08 #37
Jeg har kigget lidt på jeres dialog, og Oles fantasifulde forslag.

Der kan næsten kun gå een ting galt: der afleveres ikke korrekt cookie-værdi i 'Log'-cookien. Vil du prøve at tjekke det med en udskrift på en fungerende og den ikke fungerende browser, satyriasis?
Avatar billede olebole Juniormester
08. august 2007 - 23:12 #38
Erik >> Den har jeg fået værdien af i (08/08-2007 22:30:12) - og den skulle der ikke være noget galt med. Nu er der dog tale om en get-variabel.

Jeg var inde på, om klienten sender en forespørgsel med et andet charset. Da det heller ikke kan være værdien af kagen, må vi vel ud i voodoo ... og så er min fantasi vist for intet at regne  ;o)
Avatar billede satyriasis Nybegynder
08. august 2007 - 23:13 #39
På den fungerende: RxXnZCOmOqUTajx86pa3ungVBPuKyOTUVOC og på den ikke fungerende: 2w0CL161rZI2saPZgx9012Y16JMUNcS1pum  så de er ikke ens...
Avatar billede erikjacobsen Ekspert
08. august 2007 - 23:14 #40
Og "2w0CL161rZI2saPZgx9012Y16JMUNcS1pum" står rent faktisk i databasen, samtlige tegn? Og hvad står der ud i feltet "steps"
Avatar billede olebole Juniormester
08. august 2007 - 23:15 #41
satyriasis >> Du sagde lige før, at værdien af cookien var, som den skulle være, men det er den så åbenbart ikke  :)
Hvor kommer kagen fra?
Avatar billede satyriasis Nybegynder
08. august 2007 - 23:17 #42
Så virker den..Jeg slettede cookien og lagde den ind igen.. Hvordan den har ændret sig forstår jeg ikke :S
Avatar billede satyriasis Nybegynder
08. august 2007 - 23:18 #43
Og ja jeg troede den var som den skulle være.. Men jeg havde ikke lige tænkt på at sammenligne med de andre PC'er
Avatar billede erikjacobsen Ekspert
08. august 2007 - 23:18 #44
Og mens du kigger på det... Du har 2 dumme programmerings-"bøffer".

Man skal egentlig

  if (isset($_COOKIE['Log'])) { ...

men det gør nu nok ikke nogen forskel.

Du gør dig åben for "hacking", når du har registerglobals sat til true, og rent faktisk kan ændre dine interne værdier med "?step=1". Det kommer man udenom ved at fjerne registerglobals (som aldrig skulle have været opfundet), eller initialisere samtlige sine variabler:
    $step1=false;
Avatar billede erikjacobsen Ekspert
08. august 2007 - 23:19 #45
Ja, altså i dit tilfælde

  if (!isset($_COOKIE['Log'])) { ...

Og, ja, det kunne kun være cookien - det er så dejligt at Ole har været ude med samtlige andre "Red Herrings" ;)
Avatar billede satyriasis Nybegynder
08. august 2007 - 23:21 #46
Hmm tror jeg skal dele pointsne mellem jer..

lyder det ikke meget fair?
Avatar billede erikjacobsen Ekspert
08. august 2007 - 23:22 #47
Nej, det dur ikke. Jeg samler slet ikke på point, men Ole spiser dem til morgenmad.
Avatar billede olebole Juniormester
08. august 2007 - 23:23 #48
Fint, men jeg forstår stadig ikke, hvad vi skulle med koden i (08/08-2007 22:43:14)  =)
Avatar billede satyriasis Nybegynder
08. august 2007 - 23:25 #49
Koden er med i samme fil som den anden kode :)
Avatar billede olebole Juniormester
08. august 2007 - 23:28 #50
- og så tag i øvrigt lige at tænke over, om ikke det er bedre at skrive HTML 4.01 Strict kode, som giver mening - i stedet for at skrive XHTML 1.1 Strict kode, som absolut ingen mening giver ... og som aldrig bliver parsed som andet end HTML.

Det virker en smule selvbedragerisk ... lidt som at fake en orgasme, mens man masturberer  =)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester