Avatar billede djthomas Nybegynder
27. november 2005 - 21:34 Der er 13 kommentarer og
1 løsning

output i mcrypt

Nogen der kan forklare mig hvorfor jeg får en fejl, når jeg EFTER denne kode er kørt, når jeg forsøger at sende en header. Den skriver at output allerede er startet?

<?

  function encrypt( $value ){
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
        $key = "xxxxxxxxxxxxxxxxxxxxxxxxxx";
        $text = $value;
       
        return mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
  }

  function decrypt( $value ){
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
        $key = "xxxxxxxxxxxxxxxxxxxxxxxxxx";
        $text = $value;
       
        return mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
  }
?>

Det forstår jeg IKKE noget af
Avatar billede jakobdo Ekspert
27. november 2005 - 21:40 #1
Hvis jeg tester:

<?
//http://exp.dk/spm/667898
function encrypt( $value )
{
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    $key = "xxxxxxxxxxxxxxxxxxxxxxxxxx";
    $text = $value;
    return mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
}

function decrypt( $value )
{
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    $key = "xxxxxxxxxxxxxxxxxxxxxxxxxx";
    $text = $value;
    return mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
}
header("location: http://www.codebreaker.dk");
exit();
?>

får jeg ingen fejl...
Du er sikker på du ikke har noget output over eller under det kode du viser her?
Avatar billede djthomas Nybegynder
27. november 2005 - 21:42 #2
Nej det er det eneste kode jeg har i hele den fil og jeg får denne fejl:

Warning: Cannot modify header information - headers already sent by (output started at /home/side.dk/public_html/includes/library/misc/crypt.php:20) in /home/side.dk/public_html/includes/library/user/User.php on line 40


Linie 20 i crypt er så den med "?>"
Avatar billede jakobdo Ekspert
27. november 2005 - 21:44 #3
Hvad med: User.php on line 40
Avatar billede jakobdo Ekspert
27. november 2005 - 21:45 #4
Det er ikke fordi du måske har lavet:
<?
noget php...
?>

<?
header();
?>

Koden:
?>

<?
vil genere et linieskift til output, og vil få din header til at fejle!
Avatar billede djthomas Nybegynder
27. november 2005 - 21:51 #5
Jeg kan ikke finde et eneste sted hvor der skulle være:

?>

<?

alle steder er det:

?>
<?

Det er vel fint nok?

Linie 40 i User er: header ("Location: /profil/rediger_profil.html?id=" . mysql_insert_id() );
Avatar billede jakobdo Ekspert
27. november 2005 - 21:54 #6
Kan du evt vise hele koden?
I stedet for:
?>
<?
så slet dem! :o)
Avatar billede djthomas Nybegynder
27. november 2005 - 21:56 #7
Jeg blir jo nød til at ha:
?>
<?

fordi det er forskellige filer der bliver inkluderet lige efter hinanden.

Det er lidt svært at vise koden da det er pænt mange filer og classer der kommer efter hinanden men jeg prøver lige.
Avatar billede djthomas Nybegynder
27. november 2005 - 22:01 #8
Først starten af min index fil:

<?

include_once "scripts/connect.php";
include_once "library/misc/crypt.php";
include_once "library/misc/format.php";
include_once "library/misc/Webpage.php";

   
   
    include "pages/" . $_GET["page"] . ".php";
   
    if( class_exists( $_GET["page"] ) )
    {
        $page = new $_GET["page"];
        if( method_exists( $page, "init" ) ) $page->init();
   
    }
   
    else
    {
        include_once "pages/error.php";
        $page = new Error;
    }
   


?>


Så connect.php

<?

mysql_connect( xxxxxxxxxxxxxxxxxxxxxxxx ) or die( "Der er desværre problemer med databasen - Prøv igen lidt senere!" );

mysql_select_db( xxxxxxxxxxxxxx );

?>

så crypt.php:

<?

  function encrypt( $value ){
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
        $key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
        $text = $value;
       
        return mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
  }

  function decrypt( $value ){
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
        $key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
        $text = $value;
       
        return mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
  }
?>

så format.php:

<?

function format_text_for_db( $text )
{
    return $text;
}

?>

så User.php i init() hvor header blir kaldt:

function create_user()
    {
       
        $this->validate_posts();

        if( !$this->error )
        {
            $result = mysql_query("INSERT INTO
                                        profiles
                                        (username,
                                        password,
                                        realName,
                                        address,
                                        postalcode,
                                        city,
                                        phone,
                                        cell,
                                        emailaddress,
                                        created)
                                    VALUES
                                        ('" . encrypt( $_POST["username"] ) . "',
                                        '" . encrypt( $_POST["password"] ) . "',
                                        '" . format_text_for_db( $_POST["realName"] ) . "',
                                        '" . format_text_for_db( $_POST["address"] ) . "',
                                        '" . format_text_for_db( $_POST["postalcode"] ) . "',
                                        '" . format_text_for_db( $_POST["city"] ) . "',
                                        '" . format_text_for_db( $_POST["phone"] ) . "',
                                        '" . format_text_for_db( $_POST["cell"] ) . "',
                                        '" . format_text_for_db( $_POST["emailaddress"] ) . "',
                                        '".time()."')") or die( mysql_error() );

                   
                if( $result ){
                    header ("Location: /profil/rediger_profil.html?id=" . mysql_insert_id() );
                }
        }

    }


med denne kode i den fil der includeres i indexfilen:

var $objClass = null;
   
    function init()
    {
        $this->objClass = new User;

        if( $_POST["create_user"] == "yes" ){

            $this->objClass->create_user();
       
        }
    }
Avatar billede jakobdo Ekspert
27. november 2005 - 22:03 #9
Det eneste som kunne gøre en lille forskel, er måske hvis du satte exit(); efter header()
Men ellers kan mine trætte øjne ikke se noget som lige springer i dem. :o)
Avatar billede djthomas Nybegynder
27. november 2005 - 22:05 #10
så dør siden jo helt - men header fejlen kommer desværre stadig væk....
Avatar billede jakobdo Ekspert
27. november 2005 - 22:08 #11
Siden skal jo også dø efter en header() :o)
Er du sikker på det ikke er en usynligt hex tegn foran i en af dine filer?
Prøv evt at opret filerne connect.php og crypt.php igen!
Avatar billede djthomas Nybegynder
27. november 2005 - 22:10 #12
UUUUPS KVAJEBAJER til mig!

det er søndag og mine øjne og hjerne er vist også for træt! Efter ?> i crypt.php i linie 20 havde der sneget sig et usynligt mellemrum ind!!! Pinligt - svar og du skal blive 60P rigere og så undskyld forstyrrelsen :-S
Avatar billede jakobdo Ekspert
28. november 2005 - 07:45 #13
Hehe, et svar!
Avatar billede jakobdo Ekspert
28. november 2005 - 11:03 #14
Takker for point!
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